Progettazione di una nuova funzione timer/contatore basata su MCU

"Timer e contatori sono probabilmente le periferiche più comuni nei progetti MCU. Quasi tutte le applicazioni possono utilizzare un timer o un contatore per migliorare le prestazioni, ridurre il consumo energetico o semplificare un progetto sostituendo le operazioni ripetitive o cicliche della CPU con semplici interruzioni di timer o contatori. Tuttavia, potresti non aver utilizzato alcune delle unità timer/contatori più recenti e ora sono disponibili alcune funzionalità avanzate per migliorare ulteriormente il tuo design. Questo articolo esaminerà rapidamente alcune delle nuove funzionalità di timer/contatori che possono essere utilizzate per migliorare i progetti con esempi illustrativi di famiglie di MCU popolari, con un'enfasi speciale sulle funzionalità per il funzionamento autonomo e il controllo del motore.

"

Autore: Warren Miller

Timer e contatori sono probabilmente le periferiche più diffuse nei progetti MCU. Quasi tutte le applicazioni possono utilizzare un timer o un contatore per migliorare le prestazioni, ridurre il consumo energetico o semplificare un progetto sostituendo le operazioni ripetitive o cicliche della CPU con semplici interruzioni di timer o contatori. Tuttavia, potresti non aver utilizzato alcune delle unità timer/contatori più recenti e ora sono disponibili alcune funzionalità avanzate per migliorare ulteriormente il tuo design. Questo articolo esaminerà rapidamente alcune delle nuove funzionalità di timer/contatori che possono essere utilizzate per migliorare i progetti con esempi illustrativi di famiglie di MCU popolari, con un'enfasi speciale sulle funzionalità per il funzionamento autonomo e il controllo del motore.

Modalità timer e contatore: da semplice ad avanzato

I timer e i contatori iniziano con alcune modalità di funzionamento molto semplici per sostituire i cicli di programma generali utilizzati per contare eventi esterni, cronometrare operazioni interne ed esterne e raccogliere varie statistiche sulle operazioni chiave dell'MCU. Le caratteristiche in Massima MAXQ612 illustra alcuni degli MCU in modalità conteggio più familiari e alcuni esempi sono mostrati nella Figura 1 di seguito. La tabella nella parte inferiore della figura mostra le tre modalità di funzionamento autonome comuni per il timer B, il timer/contatore MAXQ612 modulo: ricarica automatica, acquisizione e pp/conto alla rovescia. L'immagine in alto a destra mostra il diagramma a blocchi della modalità di ricarica automatica. L'ingresso dell'orologio al TImer B può provenire da un prescaler dell'orologio che divide l'orologio del sistema con otto diverse impostazioni o da un pin esterno. Il bit di controllo TRB abilita o disabilita il funzionamento del timer B. Il registro dei valori del timer (TVB) conta in avanti quando il timer raggiunge il valore memorizzato nel registro di ricarica del timer B (TBR) e genera un'interruzione e reimposta il TVB a zero. Ciò fornisce un modo semplice per creare latenza senza utilizzare preziosi cicli della CPU per creare latenza.


Figura 1: modalità contatore/timer di esempio MCU Maxim MAXQ612. (Per gentile concessione di Massimo)

Il diagramma a blocchi nell'angolo in alto a destra della Figura 1 illustra il funzionamento della modalità di acquisizione. In questa modalità, le funzioni di prescaler dell'orologio e di abilitazione/disabilitazione sono le stesse della modalità di ricarica automatica. Il registro TBV esegue il conteggio e si azzera in caso di overflow e interruzione facoltativa. Sul fronte di discesa del pin esterno TBB, il valore nel registro TBV viene caricato nel registro di cattura TBR e può essere generato un interrupt EXFB. Questa modalità può essere utilizzata per contare il numero di clock tra i fronti di salita di un segnale esterno per determinare la frequenza del segnale o il ritardo del segnale. Pertanto, il timer libera la CPU dall'esecuzione di operazioni di conteggio ad alta intensità di ciclo, in modo che possa fare ciò di cui ha veramente bisogno in modo più efficiente.

Il MAXQ612 supporta molte altre comuni operazioni di timer/contatore, come la ricarica automatica su/giù e un pin esterno per controllare la direzione del contatore. Questa modalità è utile per decodificare vari segnali modulati in larghezza di impulso, come quelli utilizzati nei sensori elettromeccanici. La modalità di uscita dell'orologio può essere utilizzata per creare un semplice orologio di uscita utilizzando l'orologio di sistema, il prescaler e il conteggio del terminale del timer B. Infine, la modalità di uscita PWM (Pulse Width Modulation) può generare segnali allineati ai fronti per applicazioni PWM comuni come quelle utilizzate nel controllo motore.

Funzione contatore/timer PWM per il controllo del motore

Alcune funzioni timer/contatori all'avanguardia vengono utilizzate per le applicazioni PWM di controllo del motore. Questi contatori implementano il maggior numero possibile di funzioni PWM relative al motore utilizzando hardware dedicato per liberare il processore per funzioni di livello superiore. Il funzionamento di base di un contatore/timer PWM per il controllo del motore è comune alla maggior parte delle implementazioni dei produttori e un buon esempio è fornito dai timer PWM NXP LPC 17xx per Trifase Motori AC e DC L'applicazione di controllo è stata ottimizzata. Come mostrato nella Figura 2, la funzionalità del modulo PWM di controllo del motore può sembrare piuttosto complicata fino a quando non ci si rende conto che esistono tre copie del canale del timer PWM di base; uno a sinistra, uno al centro e uno a destra. La presenza di tre canali consente di utilizzare un solo timer/contatore per controllare un motore trifase, rendendo l'implementazione molto efficiente. Ogni canale controlla una coppia di uscite, che a loro volta controllano qualcosa off-chip, come un set di bobine in un motore. Ogni canale contiene un registro timer/contatore (TC) che viene incrementato dal clock del processore (modalità timer) o da un pin di ingresso (modalità contatore).


Figura 2: timer/contatore PWM NXP LPC 17xx. (Per gentile concessione di NXP)

Ogni canale ha un registro limite che viene confrontato con il valore TC e, quando si verifica una corrispondenza, il TC viene "azzerato" in due modi. In modalità edge-aligned, TC si reimposta su 0, mentre in modalità center, una corrispondenza fa sì che TC decrementi a ogni transizione del clock del processore o del pin di input fino a raggiungere 0, a quel punto ricomincia il conteggio.

Ogni canale include anche un registro delle corrispondenze che contiene un valore inferiore rispetto al registro dei limiti. In modalità edge-aligned, le uscite dei canali si attivano ogni volta che il TC corrisponde al registro di corrispondenza o limite, mentre in modalità allineato al centro si attivano solo quando il registro di corrispondenza viene abbinato. Pertanto, il registro limite controlla il periodo dell'uscita, mentre il registro corrispondenza controlla quanto di ogni periodo l'uscita trascorre in ogni stato. Se l'uscita è integrata nel file voltaggio, un piccolo valore nel registro limite riduce al minimo il ripple e consente al timer PWM di controllo del motore di controllare i dispositivi ad alta velocità.

Tutti questi elementi hardware del canale insieme controllano due uscite, A e B, che possono pilotare una coppia di transistor per commutare il punto di controllo tra i due binari di alimentazione. La maggior parte delle volte, le due uscite hanno polarità opposte, ma è possibile abilitare una funzione di tempo morto (su base per canale) per ritardare la transizione dei due segnali dallo stato passivo a quello attivo in modo che i transistor non si accendano mai lo stesso tempo . Lo stato di ciascuna coppia di output può essere considerato alto, basso e fluttuante oppure alto, basso e centrato. La mappatura da attivo e passivo ad alto e basso è programmabile per ciascun canale e ciascun canale può eseguire PWM allineato ai bordi e allineato al centro. La Figura 3 mostra due esempi di configurazioni di output. Quello a sinistra è allineato al centro senza tempi morti.


Figura 3: Timer/contatore PWM di controllo motore NXP LPC17xx Esempio di configurazione dell'uscita. (Per gentile concessione di NXP)

Il timer PWM per il controllo del motore include anche diverse fonti di interruzione per informare il processore che sono necessarie funzioni di controllo del motore di livello superiore. Questi interrupt sono organizzati per canale e possono indicare quando il TC corrisponde al registro di corrispondenza, quando il TC corrisponde al registro limite, quando il canale acquisisce il valore del TC nel suo registro di cattura o quando l'ingresso di interruzione è attivo. L'LPC17xx dispone inoltre di diverse periferiche di supporto per semplificare le funzioni di controllo avanzate, tra cui un'interfaccia encoder in quadratura, moduli PWM aggiuntivi, timer di interrupt e timer watchdog. Questa ampia varietà di funzioni di temporizzazione dedicate mostra quanto siano diventate importanti le funzioni di temporizzazione per i progetti basati su MCU.

Altre funzioni di cronometraggio specializzate

Su molti MCU moderni, le funzioni di temporizzazione e conteggio stanno diventando sempre più specializzate man mano che i produttori si rivolgono a specifiche aree di applicazione. Ad esempio, la famiglia KineTIs K10 di Freescale, come MK10DN512ZVLQ10, dispone di una varietà di periferiche di temporizzazione e conteggio con funzioni specializzate. Queste periferiche includono: blocchi di ritardo programmabili che controllano le operazioni ADC e DAC, liberando il processore dalla gestione di questi processi di basso livello; blocchi di temporizzazione flessibili che forniscono più canali di temporizzazione, conteggio, acquisizione di input e confronto di output per supportare la gestione e il controllo dell'illuminazione e della potenza del motore; un interrupt timer periodico in grado di gestire autonomamente interrupt periferici e trasferimenti DMA; un timer a bassissimo consumo che funziona anche quando l'MCU si trova nel suo stato di minimo consumo per fornire semplici eventi periodici di "risveglio"; orologio in tempo reale, mantiene l'ora precisa e può essere alimentato a batteria anche quando l'MCU è completamente spento per un facile accesso al funzionamento del sistema e ai dati sulla durata.

La serie K10 fornisce anche funzioni di clock e temporizzazione dedicate a moduli specifici, quindi non vengono consumate altre risorse di temporizzazione. Ad esempio, i moduli trasmettitori del modulatore portante utilizzati per creare protocolli utilizzati in vari schemi di codifica del segnale come quelli nelle comunicazioni a infrarossi hanno le proprie funzioni di temporizzazione e conteggio dedicate, proprio come i contatori di modulazione dell'ampiezza dell'impulso, i tasti di gestione e spostamento di frequenza. Variazione dell'ampiezza dell'impulso dipendente dallo schema di codifica. Si prevede che questa tendenza di funzioni di temporizzazione e conteggio dedicate continuerà man mano che gli MCU diventeranno più specifici per applicazioni e segmenti di mercato.

I kit di sviluppo velocizzano il time-to-market

Man mano che gli MCU diventano più specifici per le applicazioni, i produttori stanno creando kit di sviluppo e progetti di riferimento più orientati alle applicazioni. Le applicazioni di controllo motore sono probabilmente uno degli esempi più comuni di una specifica suite di applicazioni. Ad esempio, Renesas offre un kit di sviluppo completo per il controllo del motore, YMCRPRX62T mostrato nella Figura 4, che include anche un motore di esempio. Questo kit viene fornito con tutto il software e i progetti di esempio necessari per valutare l'MCU Renesas RX62T in più progetti di controllo motore. La GUI demo ospitata su PC visualizza la velocità, la tensione e la corrente del motore, consentendo all'utente di regolare parametri e algoritmi per visualizzare direttamente vari risultati per aiutare a regolare il funzionamento del motore per ottenere i migliori risultati in un particolare progetto. I kit di valutazione del controllo motore con funzionalità simili a Renesas RX62T sono disponibili anche presso molti altri produttori. Trova il kit che meglio si adatta alla tua applicazione di destinazione e all'ambiente di sviluppo per accelerare il tuo prossimo progetto di controllo motore sfruttando l'enorme quantità di lavoro "raggruppato" dal produttore.

I timer e i contatori sono le periferiche più familiari per gli MCU, ma sfruttarli appieno può garantire il risparmio energetico, il miglioramento delle prestazioni e la semplificazione dei progetti. Questo articolo discute alcune funzionalità nuove e avanzate che consentono di sfruttare questi elementi comuni in modi non comuni.

Autore: Warren Miller

Timer e contatori sono probabilmente le periferiche più diffuse nei progetti MCU. Quasi tutte le applicazioni possono utilizzare un timer o un contatore per migliorare le prestazioni, ridurre il consumo energetico o semplificare un progetto sostituendo le operazioni ripetitive o cicliche della CPU con semplici interruzioni di timer o contatori. Tuttavia, potresti non aver utilizzato alcune delle unità timer/contatori più recenti e ora sono disponibili alcune funzionalità avanzate per migliorare ulteriormente il tuo design. Questo articolo esaminerà rapidamente alcune delle nuove funzionalità di timer/contatori che possono essere utilizzate per migliorare i progetti con esempi illustrativi di famiglie di MCU popolari, con un'enfasi speciale sulle funzionalità per il funzionamento autonomo e il controllo del motore.

Modalità timer e contatore: da semplice ad avanzato

I timer e i contatori iniziano con alcune modalità di funzionamento molto semplici per sostituire i cicli di programma generali utilizzati per contare eventi esterni, cronometrare operazioni interne ed esterne e raccogliere varie statistiche sulle operazioni chiave dell'MCU. Le funzionalità di Maxim MAXQ612 illustrano alcuni degli MCU in modalità di conteggio più familiari e alcuni esempi sono mostrati nella Figura 1 di seguito. La tabella nella parte inferiore della figura mostra le tre modalità di funzionamento autonome comuni per Timer B, il modulo timer/contatore MAXQ612: ricarica automatica, acquisizione e pp/conto alla rovescia. L'immagine in alto a destra mostra il diagramma a blocchi della modalità di ricarica automatica. L'ingresso dell'orologio al TImer B può provenire da un prescaler dell'orologio che divide l'orologio di sistema con otto diverse impostazioni o da un pin esterno. Il bit di controllo TRB abilita o disabilita il funzionamento del Timer B. Il Timer Value Register (TVB) conta quando il timer raggiunge il valore memorizzato nel Timer B Reload Register (TBR) e genera un interrupt e reimposta TVB a zero. Ciò fornisce un modo semplice per creare latenza senza utilizzare preziosi cicli della CPU per creare latenza.


Figura 1: modalità contatore/timer di esempio MCU Maxim MAXQ612. (Per gentile concessione di Massimo)

Il diagramma a blocchi nell'angolo in alto a destra della Figura 1 illustra il funzionamento della modalità di acquisizione. In questa modalità, le funzioni di prescaler dell'orologio e di abilitazione/disabilitazione sono le stesse della modalità di ricarica automatica. Il registro TBV esegue il conteggio e si azzera in caso di overflow e interruzione facoltativa. Sul fronte di discesa del pin esterno TBB, il valore nel registro TBV viene caricato nel registro di cattura TBR e può essere generato un interrupt EXFB. Questa modalità può essere utilizzata per contare il numero di clock tra i fronti di salita di un segnale esterno per determinare la frequenza del segnale o il ritardo del segnale. Pertanto, il timer libera la CPU dall'esecuzione di operazioni di conteggio ad alta intensità di ciclo, in modo che possa fare ciò di cui ha veramente bisogno in modo più efficiente.

Il MAXQ612 supporta molte altre comuni operazioni di timer/contatore, come la ricarica automatica su/giù e un pin esterno per controllare la direzione del contatore. Questa modalità è utile per decodificare vari segnali modulati in larghezza di impulso, come quelli utilizzati nei sensori elettromeccanici. La modalità di uscita dell'orologio può essere utilizzata per creare un semplice orologio di uscita utilizzando l'orologio di sistema, il prescaler e il conteggio del terminale del timer B. Infine, la modalità di uscita PWM (Pulse Width Modulation) può generare segnali allineati ai fronti per applicazioni PWM comuni come quelle utilizzate nel controllo motore.

Funzione contatore/timer PWM per il controllo del motore

Alcune funzioni timer/contatori all'avanguardia vengono utilizzate per le applicazioni PWM di controllo del motore. Questi contatori implementano il maggior numero possibile di funzioni PWM relative al motore utilizzando hardware dedicato per liberare il processore per funzioni di livello superiore. Il funzionamento di base di un contatore/timer PWM per il controllo del motore è comune alla maggior parte delle implementazioni dei produttori e un buon esempio è fornito dai timer PWM NXP LPC 17xx per motori CA e CC trifase. L'applicazione di controllo è stata ottimizzata. Come mostrato nella Figura 2, la funzionalità del modulo PWM di controllo del motore può sembrare piuttosto complicata fino a quando non ci si rende conto che esistono tre copie del canale del timer PWM di base; uno a sinistra, uno al centro e uno a destra. La presenza di tre canali consente di utilizzare un solo timer/contatore per controllare un motore trifase, rendendo l'implementazione molto efficiente. Ogni canale controlla una coppia di uscite, che a loro volta controllano qualcosa off-chip, come un set di bobine in un motore. Ogni canale contiene un registro timer/contatore (TC) che viene incrementato dal clock del processore (modalità timer) o da un pin di ingresso (modalità contatore).


Figura 2: timer/contatore PWM NXP LPC 17xx. (Per gentile concessione di NXP)

Ogni canale ha un registro limite che viene confrontato con il valore TC e, quando si verifica una corrispondenza, il TC viene "azzerato" in due modi. In modalità edge-aligned, TC si reimposta su 0, mentre in modalità center, una corrispondenza fa sì che TC decrementi a ogni transizione del clock del processore o del pin di input fino a raggiungere 0, a quel punto ricomincia il conteggio.

Ogni canale include anche un registro delle corrispondenze che contiene un valore inferiore rispetto al registro dei limiti. In modalità edge-aligned, le uscite dei canali si attivano ogni volta che il TC corrisponde al registro di corrispondenza o limite, mentre in modalità allineato al centro si attivano solo quando il registro di corrispondenza viene abbinato. Pertanto, il registro limite controlla il periodo dell'uscita, mentre il registro corrispondenza controlla quanto di ogni periodo l'uscita trascorre in ogni stato. Se l'uscita è integrata nella tensione, un piccolo valore nel registro limite riduce al minimo il ripple e consente al timer PWM di controllo del motore di controllare i dispositivi ad alta velocità.

Tutti questi elementi hardware del canale insieme controllano due uscite, A e B, che possono pilotare una coppia di transistor per commutare il punto di controllo tra i due binari di alimentazione. La maggior parte delle volte, le due uscite hanno polarità opposte, ma è possibile abilitare una funzione di tempo morto (su base per canale) per ritardare la transizione dei due segnali dallo stato passivo a quello attivo in modo che i transistor non si accendano mai lo stesso tempo . Lo stato di ciascuna coppia di output può essere considerato alto, basso e fluttuante oppure alto, basso e centrato. La mappatura da attivo e passivo ad alto e basso è programmabile per ciascun canale e ciascun canale può eseguire PWM allineato ai bordi e allineato al centro. La Figura 3 mostra due esempi di configurazioni di output. Quello a sinistra è allineato al centro senza tempi morti.


Figura 3: Timer/contatore PWM di controllo motore NXP LPC17xx Esempio di configurazione dell'uscita. (Per gentile concessione di NXP)

Il timer PWM per il controllo del motore include anche diverse fonti di interruzione per informare il processore che sono necessarie funzioni di controllo del motore di livello superiore. Questi interrupt sono organizzati per canale e possono indicare quando il TC corrisponde al registro di corrispondenza, quando il TC corrisponde al registro limite, quando il canale acquisisce il valore del TC nel suo registro di cattura o quando l'ingresso di interruzione è attivo. L'LPC17xx dispone inoltre di diverse periferiche di supporto per semplificare le funzioni di controllo avanzate, tra cui un'interfaccia encoder in quadratura, moduli PWM aggiuntivi, timer di interrupt e timer watchdog. Questa ampia varietà di funzioni di temporizzazione dedicate mostra quanto siano diventate importanti le funzioni di temporizzazione per i progetti basati su MCU.

Altre funzioni di cronometraggio specializzate

Su molti MCU moderni, le funzioni di temporizzazione e conteggio stanno diventando sempre più specializzate man mano che i produttori si rivolgono a specifiche aree di applicazione. Ad esempio, la famiglia KineTIs K10 di Freescale, come MK10DN512ZVLQ10, dispone di una varietà di periferiche di temporizzazione e conteggio con funzioni specializzate. Queste periferiche includono: blocchi di ritardo programmabili che controllano le operazioni ADC e DAC, liberando il processore dalla gestione di questi processi di basso livello; blocchi di temporizzazione flessibili che forniscono più canali di temporizzazione, conteggio, acquisizione di input e confronto di output per supportare la gestione e il controllo dell'illuminazione e della potenza del motore; un interrupt timer periodico in grado di gestire autonomamente interrupt periferici e trasferimenti DMA; un timer a bassissimo consumo che funziona anche quando l'MCU si trova nel suo stato di minimo consumo per fornire semplici eventi periodici di "risveglio"; orologio in tempo reale, mantiene l'ora precisa e può essere alimentato a batteria anche quando l'MCU è completamente spento per un facile accesso al funzionamento del sistema e ai dati sulla durata.

La serie K10 fornisce anche funzioni di clock e temporizzazione dedicate a moduli specifici, quindi non vengono consumate altre risorse di temporizzazione. Ad esempio, i moduli trasmettitori del modulatore portante utilizzati per creare protocolli utilizzati in vari schemi di codifica del segnale come quelli nelle comunicazioni a infrarossi hanno le proprie funzioni di temporizzazione e conteggio dedicate, proprio come i contatori di modulazione dell'ampiezza dell'impulso, i tasti di gestione e spostamento di frequenza. Variazione dell'ampiezza dell'impulso dipendente dallo schema di codifica. Si prevede che questa tendenza di funzioni di temporizzazione e conteggio dedicate continuerà man mano che gli MCU diventeranno più specifici per applicazioni e segmenti di mercato.

I kit di sviluppo velocizzano il time-to-market

Man mano che gli MCU diventano più specifici per le applicazioni, i produttori stanno creando kit di sviluppo e progetti di riferimento più orientati alle applicazioni. Le applicazioni di controllo motore sono probabilmente uno degli esempi più comuni di una specifica suite di applicazioni. Ad esempio, Renesas offre un kit di sviluppo completo per il controllo del motore, YMCRPRX62T mostrato nella Figura 4, che include anche un motore di esempio. Questo kit viene fornito con tutto il software e i progetti di esempio necessari per valutare l'MCU Renesas RX62T in più progetti di controllo motore. La GUI demo ospitata su PC visualizza la velocità, la tensione e la corrente del motore, consentendo all'utente di regolare parametri e algoritmi per visualizzare direttamente vari risultati per aiutare a regolare il funzionamento del motore per ottenere i migliori risultati in un particolare progetto. I kit di valutazione del controllo motore con funzionalità simili a Renesas RX62T sono disponibili anche presso molti altri produttori. Trova il kit che meglio si adatta alla tua applicazione di destinazione e all'ambiente di sviluppo per accelerare il tuo prossimo progetto di controllo motore sfruttando l'enorme quantità di lavoro "raggruppato" dal produttore.

I timer e i contatori sono le periferiche più familiari per gli MCU, ma sfruttarli appieno può garantire il risparmio energetico, il miglioramento delle prestazioni e la semplificazione dei progetti. Questo articolo discute alcune funzionalità nuove e avanzate che consentono di sfruttare questi elementi comuni in modi non comuni.

Vedi di più: Moduli IGBT | display LCD | Componenti elettronici