Home
Accesso / Registrazione
 di 

Corso di programmazione per microcontrollori ST626X. Sesta puntata 2/3

Corso di programmazione per microcontrollori ST626X

Questa condizione viene segnalata anche dall’ultimo bit del registro TSCR1 che viene denominato TMZ (Timer Zero Bit). Il TMZ può essere letto da software e va azzerato prima di iniziare un nuovo conteggio. Bene, abbiamo così terminato la descrizione del timer standard. Passiamo dunque alla vera e propria novità dei microcontrollori ST626X ovvero al timer auto-ricaricabile (Auto Reload Timer).

microcontrollori_ST626X_registri_timer

IL TIMER AUTO-RICARICABILE

Come si può notare osservando lo schema a blocchi, il timer AR dispone di un contatore a 8 bit che viene incrementato da un prescaler a 7 bit mosso a sua volta dal clock interno del micro o da un clock esterno applicato al pin di ingresso ARTIMin. La differenza sostanziale tra il temporizzatore in oggetto e il timer 1 è rappresentata dalla presenza di un registro denominato ARRC (Reload/Capture Register). Il contenuto di quest’ultimo viene automaticamente trasferito, dall’hardware del micro, all’interno del contatore principale quando il contatore stesso raggiunge l’overflow: da qui nasce la definizione di timer auto-ricaricabile. Il registro ARRC è fisicamente posto nella memoria dati all’indirizzo esadecimale D9 e può essere sia letto sia scritto dal software utente. Il contatore principale non è invece direttamente indirizzabile da software ma il suo contenuto può essere ugualmente letto agendo sul registro ARLR (AR Load Register) che ne rispecchia esattamente lo stato.

Un terzo registro definito con la sigla ARCP (AR Compare Register) consente di confrontare il contenuto del registro stesso con il contenuto del contatore principale e, quando i due valori risultano uguali, di generare una interruzione o di modificare lo stato del pin di uscita ARTIMout. Il registro ARCP si trova alla locazione DA hex. Da quanto esposto, è possibile comprendere immediatamente quanto questo nuovo timer sia potente e versatile. Procediamo perciò nella descrizione analizzando i possibili modi di funzionamento che si abilitano/ disabilitano attraverso altri tre registri propri del timer AR e definiti dalle seguenti sigle: ARMC (AR Mode Control Register), ARSC0 (AR Status Control Register 0), ARSC1 (AR Status Control Register 1). I possibili modi di funzionamento del timer AR si selezionano mediante i primi due bit (ARMC0 e ARMC1) del registro ARMC. Nell’articolo è riportata la tabella della verità di tali bit e i quattro relativi modi di funzionamento che vengono denominati: “auto-ricaricabile”, “cattura”, “cattura e azzera”, “controllo esterno”. Il funzionamento auto-ricaricabile permette di generare segnali PWM in modo semplice e preciso: in questo caso, quando il contatore principale raggiunge il valore massimo viene ricaricato automaticamente con il contenuto del registro ARRC e il pin di uscita ARTIMout viene settato.

st626x_schema_timer_autoricaricabile

Quando, invece, il contenuto del contatore principale risulta uguale al contenuto del registro ARCP il pin ARTIMout viene automaticamente resettato. Nel funzionamento “cattura” il contenuto del contatore principale viene trasferito nel registro ARRC qualora arrivi un consenso dall’esterno ovvero dal pin di ingresso ARTIMin. Il funzionamento “cattura e azzera” risulta identico al precedente ma, oltre al trasferimento dei dati, l’hardware del micro provvede anche all’azzeramento del contatore e del prescaler. Infine, nel funzionamento “controllo esterno”, l’overflow del contatore setta il piedino di uscita ATIMout, mentre l’uguaglianza tra contatore e registro ARCP causa il reset di tale piedino. Il segnale proveniente dal pin di ingresso ARTIMin provoca poi il trasferimento del contenuto del registro ARRC nel contatore principale. Appresi i diversi modi di funzionamento proseguiamo e analizziamo gli altri bit di ARMC. I tre bit OVIE (Overflow Interrupt), CPIE (Compare Interrupt Enable) e EIE (External Interrupt Enable) consentono, se portati a uno, di abilitare l’interruzione causata rispettivamente dall’overflow del contatore, dall’uguaglianza tra contatore e registro ARCP e dal segnale presente sul piedino ARTIMin. Il sesto bit di ARMC (PWMOE = PWM Output Enable) se posto a uno predispone il piedino ARTIMout a lavorare come uscita del timer AR. Il settimo e l’ottavo bit, rispettivamente TEN (Timer Clock Enable) e TCLD (Timer Load Bit), servono per attivare e per inizializzare il contatore principale: portando a 1 il TCLD il contatore viene caricato con il contenuto di ARRC e il prescaler viene azzerato, mentre portando a 1 il TEN inizia il conteggio. Come accennato in precedenza, il timer AR può dar luogo a tre diverse interruzioni (interne al timer stesso) denominate: “overflow”, “compare” e “external”. Queste interruzioni, se abilitate dai relativi bit di controllo: OVIE, CPIE e EIE, danno luogo a una richiesta di interruzione esterna, cioè rivolta alla CPU del micro. Ogni volta che una interrupt interna viene processata, l’hardware pone a livello logico alto un bit del registro ARSC0 (AR Status Control Register 0).

registri_controllo_timer_autoricaricabile

Per essere più precisi, il micro porta a 1 il bit OVF se l’interruzione è di overflow, il bit CPF se questa è di compare, oppure il bit EF se l’interruzione è di tipo external. Questi tre bit possono essere sia letti sia azzerati con istruzioni software poiché il registro che li contiene, ovvero l’ARSC0, è disponibile all’interno della memoria dati all’indirizzo D6 hex. L’ultimo registro appartenente al timer AR, denominato ARSC1 (AR Status Control Register 1), risulta allocato alla D7 hex e può essere sia letto che scritto dal software utente. I primi due bit di questo registro denominati CC0 (Clock Source Select 0) e CC1 (Clock Source Select 1) consentono di selezionare il clock da applicare al prescaler. Quest’ultimo può coincidere con il clock interno del micro (ovvero con quello generato dall’oscillatore al quarzo) oppure, può coincidere sempre con il clock interno diviso però per tre, oppure, ancora, può provenire dal pin di ingresso ARTIMin. Il terzo e il quarto bit di ARSC1 denominati SL0 (Timer Input Edge Control 0) e SL1 (Timer Input Edge Control 1) servono per disabilitare/abilitare il pin ARTIMin e per selezionare il modo di funzionamento di tale pin: sensibile al fronte di salita oppure a quello di discesa. Infine, gli ultimi tre bit del registro ARSC1, identificati dalle sigle PS0 (Prescaler Division Select 0), PS1 (Prescaler Division Select 1) e PS2 (Prescaler Division Select 2), consentono di scegliere il fattore di divisione del prescaler (tra 1 e 128) come indicato dalla tabella della verità riportata nell’articolo.

Il kit è disponibile da Futura Elettronica

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 22 utenti e 98 visitatori collegati.

Ultimi Commenti