[ad_1]
I timer sono una periferica comune nei microcontrollori (MCU), inclusi gli MCU PIC. Con così tante scelte possibili, come scegli quella giusta da utilizzare nella tua applicazione?
Esplorazione del mondo versatile dei timer con microcontrollore (MCU): guida alle applicazioni e alla selezione
I timer sono una periferica onnipresente negli MCU. Non dovrebbe sorprendere che ci siano molti timer, ognuno con il proprio caso d’uso in cui eccellono. Alcuni timer sono progettati per essere utilizzati come parte della generazione di forme d’onda, mentre altri sono ideali per il conteggio degli impulsi. In molti casi non esiste una scelta sbagliata, ma dipenderà dai requisiti e dalle risorse disponibili. Per ulteriori informazioni sui timer, consultare le pagine delle periferiche collegate nella tabella seguente.
*Il limite hardware si riferisce alla possibilità di eseguire il rollover a un valore arbitrario, anziché al conteggio massimo possibile. (Ad esempio: 0x1000 contro 0xFFFF per un timer a 16 bit)
Temporizzatore 0 (TMR0)
TMR0 può funzionare in modalità a 8 o 16 bit. In modalità 8 bit, il byte alto e quello basso del timer sono indipendenti l’uno dall’altro. Il timer riparte quando il valore impostato nel byte alto corrisponde al byte basso. La modalità a 16 bit è un timer a esecuzione libera, in cui il timer si riavvierà quando raggiunge il valore 0xFFFF. Per prevenire il danneggiamento dei dati durante le operazioni di lettura/scrittura, il registro viene bufferizzato e bloccato solo sul byte basso.
Ore 1/3/5/… (TMR1)
TMR1 è un timer con gate a 16 bit con supporto per segnali di clock sia sincroni che asincroni. Quando TMR1 è in modalità asincrona, il timer funziona in modalità di sospensione e può generare un’interruzione per riattivare il microcontrollore. Il timer contiene anche una funzione di gate che può essere utilizzata per mantenere il valore corrente. Per prevenire il danneggiamento durante la lettura/scrittura del valore a 16 bit, il timer può essere configurato per bufferizzare il contatore. I dati verranno bloccati sul byte meno significativo.
Ore 2/4/6/… (TMR2)
TMR2 è un timer a 8 bit che supporta modalità operative one-shot e monostabile. La modalità One-shot attiva il timer, quindi cancella il bit ON dopo aver raggiunto il limite hardware. Il monostabile funziona in modo identico alla modalità one-shot, tranne per il fatto che il bit ON rimane impostato e il timer può essere riattivato. TMR2 può essere ripristinato o attivato da un segnale esterno.
Temporizzatore di misurazione del segnale (SMT)
SMT è un grande timer a 24 bit che supporta le seguenti modalità:
- Contatore (con finestra/recinto).
- Catturare
- Tempo di volo
- Misurazione della finestra (recintata).
- Misurazione alta e bassa
- Misurazione del periodo e del ciclo di lavoro
- (Recintato) Temporizzatore
Nota: i valori tra parentesi indicano altre modalità disponibili, ad esempio: Contatore con finestra, Contatore con gate e Contatore sono tutte modalità valide.
Per supportare queste modalità operative, SMT contiene quattro registri a 24 bit. Il comportamento esatto dei registri dipende dalla modalità.
Temporizzatore universale (UTMR)
L’UTMR è composto da due moduli timer che possono funzionare indipendentemente l’uno dall’altro o come un timer più grande. La dimensione dell’UTMR può variare in base al dispositivo; attualmente sulla famiglia PIC18-Q71, è a 16 bit per modulo o a 32 bit se concatenati insieme. Questo timer è stato progettato per contenere le funzionalità di tutti i timer legacy (TMR0, TMR1 e TMR2).
L’UTMR supporta sorgenti di clock sia sincrone che non sincrone e consente di leggere il conteggio corrente senza arrestare il timer, anche con sorgenti non sincrone. Per controllare il timer, sono disponibili tre eventi configurabili: Avvio, Reset e Arresto.
Gli eventi di avvio definiscono ciò che avvia il timer. L’evento reset definisce cosa reimposta il conteggio a zero. E c’è un evento di arresto, che definisce cosa fermerà completamente il timer. Questi eventi possono essere sempre abilitati, attivati da un segnale di ingresso o disabilitati completamente. Ciò abilita funzionalità come il trigger monostabile, i limiti hardware e il funzionamento one-shot.
Oscillatore a controllo numerico (NCO)
Nota: la dimensione dell’NCO (16 bit o 20 bit) può variare a seconda della famiglia del dispositivo.
L’NCO è progettato per generare una forma d’onda periodica aggiungendo un incremento programmabile al totale accumulato. Quando il totale eccede, l’overflow viene mantenuto e viene generato un impulso. L’impulso può essere costituito da un numero fisso di cicli di clock di ingresso in larghezza oppure può essere emesso al 50% al costo di dimezzare la frequenza di uscita. Sebbene l’NCO non sia progettato per la misurazione, può essere utilizzato se l’NCO viene arrestato, letto e quindi riavviato.
Cattura/Confronta/PWM (CCP)
Il CCP ha tre modalità: acquisizione, confronto o modulazione di larghezza di impulso (PWM). Le modalità Acquisisci/Confronta utilizzano TMR1 mentre PWM utilizza TMR2.
La modalità Capture memorizza il valore in TMR1 quando si verifica un evento in aumento o in diminuzione (a seconda della modalità operativa). La modalità Confronta genera un output quando il valore in TMR1 corrisponde al valore impostato nel CCP. Per la modalità PWM, TMR2 è a 8 bit, ma il CCP lo estende a 10 bit utilizzando i bit prescaler dell’oscillatore interno.
PWM
Nota: per PWM che dipende da TMR2, vedere la sezione CCP.
La periferica PWM a 16 bit è completamente autonoma, ovvero non utilizza un altro timer di sistema, a differenza di CCP (che dipende da TMR2). Esistono cinque modalità operative per generare PWM:
- Allineato a sinistra
- Allineato a destra
- Allineato al Centro
- Variabile allineata
- Confrontare
Queste modalità modificano il modo in cui il conteggio viene utilizzato per generare l’output. All’interno di ogni istanza ci sono delle sezioni, ciascuna contenente due output. Le uscite condividono una frequenza comune ma hanno i propri registri del ciclo di lavoro. Inoltre, la periferica è dotata di doppio buffer per modifiche fluide dell’output e può essere sincronizzata con altre istanze PWM.
Timer watchdog (WDT)/Timer watchdog a finestra (WWDT)
Il WWDT è un timer speciale progettato per rilevare un deadlock nel microcontrollore. Un WWDT è un timer che esegue lo sfondo. Periodicamente, il software deve cancellarlo tramite una sequenza speciale, altrimenti ripristinerà il microcontrollore. WDT e WWDT differiscono solo per il fatto che il WWDT ha una funzione “Finestra”. La funzione “Finestra” può richiedere che la sequenza di cancellazione venga eseguita entro un determinato intervallo di tempo, anziché in qualsiasi momento prima che il timer si riavvii. Ciò impedisce che un deadlock non venga rilevato azzerando continuamente il timer.
Selezione del timer e ulteriori informazioni
Dopo aver compreso le periferiche del timer, selezionare il timer che più si avvicina alle funzionalità necessarie nell’applicazione. In molti casi, esistono più timer possibili in grado di eseguire l’attività. In questo caso, seleziona il timer più semplice: ciò lascia i timer con più funzionalità disponibili per un uso futuro. La scheda tecnica del dispositivo, le note applicative e le schede tecniche approfondiscono in modo più dettagliato il funzionamento di tutti questi timer e i registri ad essi associati. È possibile trovare esempi di codice che utilizzano un timer specifico effettuando una ricerca MPLAB Scopri.
[ad_2]
Source link