Tutorials - PIC18 by Data Sheet

 
 

Enhanced CCP


Il modo PWM

Nei dispositivi PIC18F4221/4321, CCP1 è implementato come modulo con funzionalità Enhanced PWM
Questi includono 2 o 4 canali di output, con polarità selezionabile dall'utente, controllo della dead band e spegnimento e riavvio automatico. 
   

Queste funzioni sono disponibili, per la famiglia in esame, nei dispositivi in package a 40/44 pin, ma non in quelli a 28 pin.

Le funzioni base, come catturare e confrontare e la singola uscita PWM, nel modulo Enhanced (ECCP) sono le stesse descritte prima per il modulo CCP.

Il registro di controllo dell' Enhanced CCP si differenzia dai registri CCPxCON in PIC18F2221/2321 perché i due bit più significativi vengono ora implementati per controllo delle nuove funzionalità PWM.
Il registro CCP1CON è organizzato nel seguente modo:
 

CCP1CON bit P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0
funzione R/W R/W R/W R/W R/W R/W R/W R/W
default 0 0 0 0 0 0 0 0
  • bit 7,6   P1M1:0 : bit di configurazione modo ECCP
                se CCP1M3:2 = 00, 01  o 10

                
    xx
    = P1A è il pin di input capture/compare, P1B, C, D sono I/O
                se CCP1M3:2 = 11

                 0
    0
    = singola uscita su P1A. P1B, C, D sono I/O
                 01 = full bridge forward: P1D pwm, P1A attivo; P1B, C inattivi
                 10 = uscita half bridge: P1A,B pwm con dead band; P1C, D sono I/O
                 11 = full bridge reverse: P1B pwm; P1C attivo; P1A, B inattivi
  • bit 5,4  DC1B1:0 : Duty cycle del PWM
                
    sono i due LSb del modo PWM a 10 bit; gli altri 8 bit sono i CCPR1L
                 Non usati in modo capture e compare
  • bit 3,0  CCP1M3:0 : selezione della modalità operativa
                 0000 =  ECCP disabilitato e reset del modulo
                 0001 =  riservato
                 0010 =  modo Compare, inversione uscita al match
                 0011 =  modo Capture
                 0100 =  modo Capture, fronte di discesa
                 0101 =  modo Capture, fronte di salita
                 0110 =  modo Capture ogni quarto fronte di salita
                 0111 =  modo Capture ogni sedicesimo fronte di salita
                 1000 =  modo Compare, inizializza CCP1 basso, set output al match
                 1001 =  modo Compare, inizializza CCP1 alto, clear output al match
                 1010 =  modo Compare, genera interrupt software
                 1011 =  modo Compare, special event trigger
                 1100 =  modo PWM; P1A, B, C, D attivi alto
                 1101 =  modo PWM; P1A, C attivi alto - P1B, D attivi basso
                 1110 =  modo PWM; P1A, B attivi basso- P1C, D attivi alto
                 1111 =  modo PWM; P1A, C attivi basso - P1B, D attivi basso
Oltre alla gamma estesa di modalità disponibili attraverso i registri di CCP1CON ed ECCP1AS, il modulo ECCP ha un registro aggiuntivo associato alle operazioni di Enhanced PWM e alla funzionalità di auto-spegnimento, che è ECCP1DEL.

Configurazione del modulo ECCP

Il modulo Enhanced CCP può avere fino a quattro uscite PWM, in base alla modalità operativa selezionata. 
Queste uscite, indicate da P1A a P1D, sono multiplexate su PORTC e PORTD
Le uscite attive dipendono la modalità operativa di CCP selezionata. 

Le assegnazioni dei pin sono riassunti nella tabella seguente. 

modo ECCP configurazione
CCP1CON
RC2 RD5 RD6 RD7
modo compatibile
CCP
00xx 11xx CCp1 RD5/PSP5 RD6/PSP6 RD7/PSP7
dual PWM 10xx 11xx P1A P1B RD6/PSP6 RD7/PSP7
quad PWM x1xx 11xx P1A P1B P1C P1D

Per configurare il pin come uscita del PWM è necessario selezionare la corretta modalità PWM impostando il bit CCP1M3:0 e P1M1:0.


Occorre inoltre a
ver designato come uscite i pin nei registri TRISC e TRISD.

Se i pin di uscita non sono selezionati come tali nei registri di direzione, il modulo PWM funziona regolarmente, ma non è presente alcun segnale sui pin.

Quando configurato in modalità singola uscita, le funzioni del modulo ECCP sono identiche a quelle del modulo standard CCP. Questo è anche indicato come modalità "CCP compatibile"

Come per i moduli standard di CCP, il modulo ECCP può utilizzare Timer1, 2 o 3, dipendentemente dalla modalità selezionata. Timer2 e Timer3 sono disponibili per i modi di cattura e confronto, mentre Timer2 è disponibile per i modi PWM. Le interazioni tra i timer sono identiche a quelle descritte per moduli standard di CCP. Fatta eccezione per l'operazione del Trigger di evento speciale, anche le modalità di acquisizione e confronto del modulo ECCP sono identiche in funzione a quella di CCP2. Quindi, in questo senso non sono necessarie modifiche al software quando si passa da dispositivi con moduli CCP a dispositivi con moduli ECCP (da 28-pin a 40/44-pin nel caso della famiglia in esame).

Nel modo con trigger per evento speciale, l'output di trigger di ECCP1 reimposta il  Timer1 o il Timer3, a seconda di quale timer è selezionato. Questo permette il registro CCPR1 di essere efficacemente un registro di periodo a 16 bit programmabile per Timer1 o Timer3.

 


Modo Enhanced PWM

Come abbiamo visto, la modalità Enhanced PWM fornisce ulteriori opzioni di output PWM per una più ampia gamma di applicazioni di controllo, in particolare per la gestione di ponti (bridges).
Il modulo offre fino a quattro uscite, di cui gli utenti sono anche in grado di selezionare la polarità (attivo alto o attivo basso), impostando P1M1:0 e CCP1M3:0 di CCP1CON

Il diagramma a blocchi seguente mostra uno schema semplificato del funzionamento del PWM.

Tutti i registri sono a doppio buffer al fine di prevenire glitch su una qualsiasi delle uscite e vengono caricati all'inizio di un nuovo PWM.
Il solo registro di ritardo della dead band, ECCP1DEL, viene caricato al termine del ciclo o del periodo. A causa del buffering, il modulo attende fino al termine del timer assegnato, invece di iniziare immediatamente. Questo significa che forme d'onda Enhanced PWM non corrispondono esattamente alle forme d'onda PWM standard, ma è invece compensato dal ciclo completo di una istruzione (4 TOSC). 

Il Periodo del PWM è calcolabile come :

Periodo PWM = [(PR2)+1] * 4 * Tosc  * (Prescaler TMR2)

Si ricorda che anche qui il post scaler di Timer2 non viene utilizzato.

Quando TMR2 è uguale a PR2 si verificano i seguenti tre eventi :

  1. TMR2 è azzerato
  2. il pin CCP1 è portato a 1 (fa eccezione il caso in cui il Duty Cycle sia posto a 0)
  3. il Duty Cycle del PWM è copiato da CCPR1L a CCPR1H

Il Duty Cycle del PWM viene specificato scrivendo il registro CCPRxL (8 bit più significativi) ed i bit CCP1CON<5:4> (2 bit meno significativi), per un totale di 10 bit di risoluzione.
Il valore del Duty Cycle è dato dalla seguente espressione :

Duty Cycle PWM = (CCPR1L:CCP1CON<5:4>) * Tosc  * (Prescaler TMR2)

CCPR1L CCPR1CON<5:4> possono essere scritti in qualsiasi momento, ma il valore imposto al Duty Cycle non viene trasferito in CCPR1H se non dopo una uguaglianza tra PR2 e TMR2, ovvero quando il periodo è completato.
Nel modo PWM, il registro CCPR
1H è a sola lettura; il registro CCPR1H e il latch dei 2 LSbit vengono utilizzati per il doppio buffer del duty cycle PWM. Questo doppio buffering è essenziale per il funzionamento edr ha lo scopo di evitare impulsi spuri (glitches) nel segnale PWM.

Quando CCPR1H e il latch dei due bit minori eguaglia TMR2, concatenato con un Q clock interno a 2 bit o con il prescaler di TMR2, il pin CCP1 è portato a 0.

La massima risoluzione in bit del PWM è data dalla seguente espressione :

Risoluzione massima PWM = log(Fosc/Fpwm) / log(2)

La tabella seguente da una idea delle possibilità :

Frequenza del PWM 2.44kHz 9.77kHz 39.6kHz 158.25kHz 312.5kHz 416.67kHz
Prescaler del Timer2 16 4 1 1 1 1
Valore in PR2 FFh FFh FFh 3Fh 1Fh 17h
Massima risoluzione (bit) 10 10 10 8 7 6.58

Da osservare che, nel caso in cui erroneamente il Duty Cycle del PWM sia stato impostato di valore maggiore del periodo, il pin CCP1 non cambierà stato.


Uscite del PWM - Half bridge

Una delle modalità programmabili prevede due uscite, P1A e P1B.

I diagrammi seguenti chiariscono i rapporti tra i segnali, i primi prima relativamente alle uscite attive nello stato alto

i secondi, per quelle attive nello stato basso

La disponibilità di due uscite consente di utilizzare diverse tipologie di buffer, ad esempio un half-bridge, di cui vediamo una schematizzazione nell' immagine seguente.

Si tratta di un classico semi-ponte (half-bridge), costituito da due MOSFET N che azionano un carico con doppia alimentazione.

Le uscite P1A e P1B, attraverso buffer adeguati, pilotano i gate dei MOSFET.

Il carico (load) potrà essere tanto un elemento induttivo (motore in CC, solenoide, ecc) quanto un elemento resistivo (riscaldamento, illuminazione, ecc). I diodi di proteggono i semiconduttori dai picchi inversi di tensione.

In modalità Half-Bridge, i due pin di uscita vengono utilizzati per pilotare carichi in push-pull. Il segnale di uscita PWM è sul pin P1A, mentre il segnale di uscita PWM complementare è su P1B.  
Da osservare l' introduzione di drive per il gate dei MOSFET, ad esempio Maxim MAX4427 o meglio Microchip TC4424, in grado di fornire impulsi di corrente da 3A.

E una struttura del genere potrà pilotare anche un ponte intero

Osserviamo come l' incrocio delle uscite PWM vada ad operare su MOSFET di rami opposti del ponte intero, che ora richiede 4 semiconduttori di potenza e 4 buffer-driver. In questo modo quattro interruttori possono essere modulati con due segnali PWM.

La tensione di alimentazione ora potrà essere singola.

Si ricorda che il buffer-driver sono necessari per pilotare MOSFET di potenza che non abbiano gate logic level.

In modalità Half-Bridge, il ritardo programmabile della dead band può essere usato per prevenire il shoot-through di corrente nei semiconduttori di potenza del mezzo ponte. Il valore dei bit PDC6:PDC0, imposta il numero di istruzioni cicli prima che l'output sia portato attivo. 
Se il valore è maggiore di duty cycle, l'output corrispondente rimane inattivo durante l'intero ciclo. 

E' opportuno ricordare ancora che le uscite P1A e P1B sono multiplexate con PORTC 2 e PORTD 5 e le relative altre funzioni programmabili; quindi occorre che il TRISC 2 e TRISD 5 siano impostati a zero (come uscita) per ottenere ai pin il segnale PWM.
Il diagramma seguente riporta l' andamento dei segnali:

Osserviamo che i segnali presenti su P1A e P1B sono complementari (opposti).

Inoltre può venire aggiunto il tempo td di dead band in cui si ritarda la conduzione di uno dei semiconduttori di potenza onde evitare che che si formi un pericoloso corto circuito tra i due poli dell' alimentazione dovuto alla contemporanea conduzione dei due MOSFET.

Osserviamo, quindi, come il modulo ECCP consenta una gestione avanzata dei ponti in PWM senza la necessità di altri componenti sterni se non i driver per i semiconduttori di potenza.

 


Uscite del PWM - Full bridge

In modalità Full-Bridge, sono utilizzati come uscite 4 pin, attivi a coppie.
In modalità Forward, pin P1A è costantemente attivo e pin P1D è modulato dal PWM. 
In modalità Reverse, pin P1C è costantemente attivo e pin P1B è modulato dal PWM.
 
I diagrammi seguente illustrano l' andamento dei segnali.

Anche qui occorre ricordare che P1A, P1B, P1C e P1D sono multiplexati con le altre funzioni programmabili sul PORTC 2 e PORTD <7:5>; per ottenere in uscita i segnali PWM su questi pin occorre aver programmato TRISD <7:5> e TRISC 2 a livello 0 in modo da rendere uscite digitali i pin corrispondenti. Se questo non viene fatto, il modulo PWM opererà correttamente, ma nessun segnale di uscita sarà disponibile sui pin.

L' applicazione tipica è il comando di un full bridge a 4 segnali distinti.

 

In modalità Full-Bridge, il bit P1M1 nel registro CCP1CON permette all' utente di controllare la direzione avanti / indietro. Quando il firmware cambia questo bit di controllo di direzione, il modulo assumerà la nuova direzione nel prossimo ciclo di PWM. 
Poco prima della fine del periodo corrente, le uscite modulate (P1B e P1D) sono portate nel loro stato inattivo, mentre le uscite P1A e P1C sono accese. Questo si verifica in un intervallo di tempo di 

4 TOSC * (Timer2  valore Prescaler)

prima che inizi il prossimo periodo PWM. Il prescaler di Timer2 sarà 1, 4 o 16, dipendemente dal valore dei bit T2CKPS1:0 (T2CON<1:0>). 

Il diagramma seguente presenta l' andamento dei segnali al cambio di direzione.

Si noti che in modalità Full-Bridge, il modulo ECCP1 non fornisce alcun ritardo dead band, dato che, in generale,  una sola uscita è modulata dal PWM. Tuttavia, c'è una situazione in cui un ritardo  potrebbe essere richiesto. Questa situazione si verifica quando entrambe le seguenti condizioni sono vere:

  • La direzione del PWM viene modificata quando il duty cycle dell'output è vicino al 100%.
  • il semiconduttore-interruttore di alimentazione ha un tempo di spegnimento più grande rispetto al tempo di accensione.

Figura seguente mostra un esempio in cui la direzione PWM cambia vicino al 100% duty cycle. 

Al tempo t1, le uscite P1A e P1D diventano inattive, mentre l'output P1C diventa attivo.
In questo esempio, poiché il tempo di spegnimento dei dispositivi di potenza è più lungo del tempo di accensione, una corrente può fluire attraverso i dispositivi di potenza QC e QD dello schema di principio presentato più sopra. E questo per la durata del ' t '. Lo stesso fenomeno si verifica per i dispositivi di potenza QA e QB per il cambio di direzione opposto. Dunque, se un cambio di direzione con un alto duty cycle è necessaria per l'applicazione, è necessario ricorre ad una delle seguenti misure: 

  1. ridurre PWM per un periodo prima dei cambi di direzione. 
  2. utilizzare i driver che possono guidare gli switch off più velocemente di quanto essi possono raggiungere il livello alto.

Dead Band programmabile

Nelle applicazioni di mezzo ponte, dove tutti gli switch di potenza sono modulati alla frequenza PWM, gli interruttori a semiconduttore normalmente richiedono più tempo per spegnersi rispetto a quello necessario per passare in conduzione.
Se uno degli interruttori di potenza superiore e inferiore viene spento contemporaneamente all' accensione dell' altro, entrambi possono trovarsi in conduzione per un breve periodo, durante il quale una corrente molto elevata (shootthrough corrente) può fluire attraverso entrambi i semiconduttori. Si tratta sostanzialmente di un corto circuito sulla tensione di alimentazione in cui la bassissima resistenza di conduzione dei transistor o MOSFET consente il passaggiuo di correnti così elevate da distruggerne le giunzioni.

Per evitare questo effetto potenzialmente distruttivo, la tecnica a cui si ricorre è quella di inserire un ritardo all' avvio di uno switch per consentire all'altro semiconduttore di disattivarsi completamente.

In modalità Half-Bridge, il ritardo, denominato dead band, è programmabile e si applica sulla transizione del segnale dallo stato non attiva allo stato attivo.
I bit PDC6:0 del registro ECCP1DELstabiliscono il ritardo in termini di cicli di istruzione del microcontrollore (4 TOSC). 
Va ricordato che, non essendo le funzioni enhanced disponibili nei chip a 28 pin (18F2221/2321 ), questo regsitro esiste solo nei dispositivi a 40/44 pin (18F4221/4321).

Il registro ECCP1DELCON è organizzato nel seguente modo:
 
ECCP1DELCON bit PRSEN PDC6 PDC5 PDC4 PDC3 PDC2 PDC1 PDC0
funzione R/W R/W R/W R/W R/W R/W R/W R/W
default 0 0 0 0 0 0 0 0
  • bit 7     PRSEN : bit di abilitazione del restart del PWM 
                  1 =
    il bit ECCPASE si cancella automaticamente una volta che l'evento shutdown
                        è terminato; il PWM si riavvia automaticamente
                  0 =
    il bit ECCPASE deve essere cancellato via software per riavviare il PWM
  • bit 6,0  PDC6:0 : bit di conteggio del ritardo
                 Tempo di dead band
    , in numero di FOSC/4 (4 * TOSC) cicli, tra il tempo effettivo e quello impostato
                  per la transizione attiva del PWM

 


ENHANCED PWM AUTO-SHUTDOWN

Quando il ECCP1 è stato programmato per una qualsiasi delle modalità Enhanced PWM, il pin di uscita attivo può essere configurato per lo spegnimento automatico a seguito di un evento. L' autospegnimento (auto-shutdown) pone immediatamente il pin di uscita PWM in uno stato definito (programmabile) quando si verifica l' evento di arresto.
Va aggiunto che è possibile programmare sia una situazione di auto-shutdown, sia una situazione di auto-shutdown con riavvio automatico (restart).

Il diagramma seguente presenta i segnali in caso di auto shutdown con auto restart abilitato.

e con auto restart disabilitato

 

Un evento di arresto può essere causato da 

  • uno dei moduli comparatore
  • un basso livello sul pin di ingresso (FLT0)
  • o qualsiasi combinazione di queste tre fonti.

Ad esempio, i comparatori possono essere utilizzati per seguire un input di tensione proporzionale ad una corrente monitorata nel circuito ponte, realizzando una limitazione di corrente automatica. Se la tensione supera una soglia, il comparatore interruttori stato e innesca un arresto. 
In alternativa, un livello basso sul pin FLT0 può arrestare il PWM. 

La funzione di spegnimento automatico, ovviamente, può essere anche disattivata.

Le fonti di auto-shutdown sono selezionate utilizzando i bit ECCPAS2:ECCPAS0 (ECCP1AS <6:4>).

Quando si verifica un arresto, il pin di uscita sono in modo asincrono collocati nei rispettivi Stati di arresto, specificato dai bit PSSAC1:PSSAC0 e PSSBD1:PSSBD0 (ECCP1AS <3:0>). Ogni coppia di poli (P1A/P1C e Florez / P1D) può essere impostato per guidare alta, guidare basso o essere tri-ha dichiarato (non di guida). Il ECCPASE bit (ECCP1AS 7) è anche insieme a tenere il PWM Enhanced uscite nei rispettivi Stati di arresto. Il bit ECCPASE è impostato dall'hardware quando si verifica un evento di arresto. 

Se non è impostato il riavvio automatico, il bit ECCPASE deve essere cancellato dal firmware quando si cancella la causa dell' arresto. Se è attivato il riavvio automatico, il bit ECCPASE è cancellato automaticamente quando la causa di auto-spegnimento è deselezionata. 

Se viene impostato il bit ECCPASE quando inizia un periodo PWM, le uscite PWM rimangono nel loro stato inattivo per quel periodo PWM intero. Quando il bit ECCPASE è deselezionato, le uscite PWM ritornerannoa al funzionamento normale all'inizio del prossimo periodo PWM.


La scrittura di ECCPASE è disabilitata fintanto che una condizione di shutdown è attiva.

Il registro che controlla queste operazioni è ECCP1AS, organizzato nel seguente modo:
 

ECCP1AS bit ECCPASE ECCPAS2 ECCPAS1 ECCPAS0 PSSAC1 PSSAC0 PSSBD1 PSSBD0
funzione R/W R/W R/W R/W R/W R/W R/W R/W
default 0 0 0 0 0 0 0 0
  • bit 7     ECCPASE : bit di evento di auto shutdown 
                  1 =
    evento shutdown - le uscite sono in stato di shutdown
                  0 = uscite operative
  • bit 6,4  ECCPAS2:0 : bit di selezione della sorgente di auto shutdown
                111 = FLT0 o Comparatore 1 o Comparatore 2
                110 = FLT0 o Comparatore 2
                101 = FLT0 o Comparatore 1
                100 = FLT0
                011 = Comparatore 1 o Comparatore 2
                010 = Comparatore 2
                001 = Comparatore 1
                000 = disabilitato
  • bit 3,2 PSSAC1:0 : bit di controllo shutdown pin A e C
                1x = pin A e C in tri-state
                01 = pin A e C  a livello 1
                00 = pin A e C  a livello 0
  • bit 3,2 PSSBD1:0 : bit di controllo shutdown pin B e D
                1x = pin B e D in tri-state
                01 = pin B e D a livello 1
                00 = pin B e D a livello 0

Va ricordato che, non essendo le funzioni enhanced disponibili nei chip a 28 pin (18F2221/2321 ), questo registro esiste solo nei dispositivi a 40/44 pin (18F4221/4321).


Considerazioni allo startup

Quando il modulo ECCP è utilizzato in modalità PWM, l'hardware della applicazione deve utilizzare i corretti pullup e/o pull-down esterni per i pin di uscita PWM, a seconda del carico comandato.
Quando il microcontroller  è rilasciato dal Reset, tutti i pin di I/O sono nello stato ad alta impedenza; ne consegue che i circuiti esterni devono tenere i dispositivi di commutazione in stato OFF fino a quando il programma nel microcontroller prende il comando dei pin con i livelli di segnale corretto o attiva l' uscita PWM. 

I bit di CCP1M1:CCP1M0 (CCP1CON <1:0>) permettono all'utente di scegliere se i segnali di uscita PWM sono attivi a livello alto o basso per ogni coppia di pin di uscita PWM (P1A/P1C e P1B/P1D). 


Le polarità devono essere selezionate prima che i pin del PWM siano configurati come uscite. 
Modifiche della configurazione di polarità, mentre i pin PWM sono configurati come uscite, non è consigliabile, poiché può provocare danni ai circuiti collegati. 

Se P1A, P1B, P1C e P1D non sono nello stato corretto quando viene inizializzato il modulo PWM possono risultare, anche se per breve tempo, stati di conduzione inapproppriati negli elementi di potenza che potrebbero danneggiare il circuito di applicazione. 
Il modulo ECCP deve essere attivato in modalità di uscita corretta e completare un ciclo completo di PWM prima di configurare i pin PWM come uscite. Il completamento di un ciclo di PWM viene indicato dal bit TMR2IF.


Setup del PWM

Per il setup del modulo ECCP in PWM occorre: 

  1. Configurare i pin PWM, P1A e P1B ( P1C e P1D), se usato come input impostando i bit TRIS corrispondenti. 
  2. Impostare il periodo PWM caricando il registro PR2.
  3. Se è necessario l' auto-shutdown, effettuare le seguenti operazioni: 
    • disabilitare l' auto spegnimento (ECCPASE = 0) 
    • configura l' origine (FLT0, comparatore 1 o 2) 
    • aspettare per la condizione di non-arresto 
  4. Configurare il modulo ECCP per la modalità PWM desiderata caricando il CCP1CON con i valori appropriati: 
    • selezionare una delle configurazioni di uscita disponibile e direzione con i bit P1M1:P1M0. 
    • selezionare la polarità dei segnali di uscita PWM con i bit CCP1M3:CCP1M0. 
  5. Impostare il ciclo caricando il registro CCPR1L e CCP1CON <5:4> . 
  6. Per una uscita Half-Bridge, impostare il deadband con ECCP1DEL <6:0>
  7. Se l'operazione di spegnimento automatico è necessaria, caricare il registro ECCP1AS: 
    • selezionare le fonti di auto spegnimento utilizzando i bit  ECCPAS2:ECCPAS0. 
    • selezionare gli Stati di arresto dei pin uscita PWM utilizzando il PSSAC1:PSSAC0 e il PSSBD1:PSSBD0 bit. 
    • Impostare il bit ECCPASE (ECCP1AS 7). 
    • configurare i comparatori utilizzando il CMCON
    • configurare gli ingressi del comparatore come ingressi analogici. 
  8. Se l'operazione di riavvio automatico è necessaria, impostare il bit PRSEN (ECCP1DEL7).
  9. Configurare e avviare TMR2: 
    • deselezionare il flag di interrupt del timer con il bit TMR2IF (PIR1 1). 
    • impostare il valore di prescaler di TMR2 caricando i bit T2CKPS (T2CON <1:0>). 
    • abilitare Timer2 il bit TMR2ON (T2CON 2). 
  10. Abilitare le uscite PWM dopo un ciclo PWM: 
    • attendere fino al TMRn overflow (è impostato il bit TMRnIF). 
    • abilitare il CCP1/P1A, P!B, P1C e/o P1D deselezionando i rispettivi bit TRIS. 
    • cancellare il bit ECCPASE (ECCP1AS 7).

Operazioni in Power Managed

In Sleep mode, le fonti di clock sono disabilitate, per cui il Timer2 non sarà incrementato e lo stato del modulo ECCP non cambierà. 
Se il pin ECCP è utilizzato come uscita, continuerà mantenere il livello a cui è stato fissato.
Se sono attivate due velocità di start-up, la frequenza di avviamento iniziale da INTOSC e il postscaler non potranno essere stabili immediatamente. In modalità PRI_IDLE, il clock primario continuerà ad alimentare il modulo ECCP senza cambiamento. Altri clock di modalità di gestione del consumo energetico molto probabilmente saranno diversi come frequenza da quella prevista per Timer2, che dipende dal clock primario.

Se il monitor fail-safe del clock è attivato, un problema al clock forzerà il dispositivo nella modalità di gestione del consumo energetico RC_RUN e il OSCFIF bit (PIR2 7) verrà impostato. ECCP sarà clockato dall' oscillatore interno, che potrà una frequenza di clock diverso rispetto al primario.

Un Power-on Reset e successive reimpostazioni costringeranno tutte le porte alla modalità di input e porteranno i vari registi alle condizioni di default, in particolare porterà il modulo ECCP in modalità di compatibilità con CCP.


I registri interessati al PWM

Il foglio dati riporta come al solito un elenco dei registri che sono interessati dalle operazioni del modulo ECCP per le operazioni di PWM.

Il fondo bianco delle celle della Tab.15-3 identifica quali registri e bit vanno considerati quando si affronta la programmazione (mentre le celle con fondo grigio indicano bit o registri non interessati).
La gestione dei bit dei registri PIR/IPIR/PIE per l' interrupt riguarda il Timer2 e sarà considerata dove necessaria, sempre ricordando che i flag dei registri PIR sono testabili anche in polling e vanno azzerati da programma quando necessario.
La collocazione dei flag e dei bit nei registri suddetti indica che gli interrupt di Timer2 fanno parte del gruppo dei periferici e la loro chiave di abilitazione, nel caso di interrupt senza priorità, è il bit PEIE di INTCON.


 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 24/12/11.