Corso di programmazione per microcontrollori Zilog Z8. Terza puntata 1

microcontrollori Zilog Z8

Impariamo a programmare con la famiglia di microcontrollori Z8 della Zilog caratterizzata da elevate prestazioni, grande flessibilità d’uso ed estrema facilità di impiego grazie alla disponibilità di un emulatore hardware a bassissimo costo. Terza puntata.

Completiamo, in questa puntata del Corso, la descrizione dell’architettura interna dei micro Z8 analizzando dettagliatamente i due timer, T0 e T1, e i due comparatori analogici disponibili nel Port 3. In seguito, ci addentreremo nell’ambiente di sviluppo Zilog Z8 Icebox, cercando di comprenderne i comandi principali e le relative prestazioni. Entriamo dunque nel vivo del Corso con i due contatori T0 e T1 che risultano strutturalmente identici tra loro salvo per le seguenti due differenze: il contatore T0 viene “mosso” solo dalla frequenza dell’oscillatore, divisa per 2 e successivamente per 4; il contatore T1 può essere controllato dal clock interno oppure da un clock esterno che fa capo al piedino P31. Entrambi i contatori lavorano in modalità decremento, ovvero contano all’indietro. Raggiunto il termine del conteggio, il contatore T0 attiva la richiesta di interruzione IRQ4 mentre il contatore T1 agisce sull’interruzione IRQ5. Per meglio comprendere il funzionamento di T0 e di T1 osserviamo i relativi schemi a blocchi riportati in queste pagine.

Come si può notare, ogni singolo contatore è composto da due distinte unità di conteggio (down counter) di cui una prima a 6 bit che prende il nome di Prescaler ed una seconda a 8 bit che rappresenta il vero e proprio registro di decremento, per intenderci quello che a fine conteggio attiva la relativa richiesta di interruzione.

piastra_emulazione_zilog_z8em

Lo scopo dei prescaler è quello di dividere la frequenza in ingresso di un certo valore prima di passarla ai contatori veri e propri. Essendo a 6 bit, i prescaler possono effettuare una divisione della frequenza in ingresso da 1 a 64 volte. Il fattore di divisione dei prescaler viene impostato agendo sul registro R245 per il prescaler PRE0 relativo a T0 e sul registro R243 per il prescaler PRE1 relativo a T1. In particolare, il numero impostato sui 6 bit di maggior “peso” (D2 ÷ D7) di questi due registri determina il rapporto di divisione. Analizziamo ora nei dettagli il funzionamento dei due registri contatori. Questi ultimi lavorano nello stesso identico modo: partono da un certo numero, trasferito inizialmente al loro interno, e vanno a decrementare il proprio valore di un’unità ogni volta che dal Prescaler giunge un impulso di clock. Quando il contatore arriva al termine del conteggio, quando cioè il numero presente nel contatore risulta uguale a zero, esso genera una richiesta di interruzione. Sarà poi la routine di risposta all’interruzione a far compiere determinate operazioni al microcontrollore in corrispondenza della fine del conteggio.

registro_prescalier_registro_configurazione

I contatori, una volta terminato il conteggio, possono fermarsi (Single Pass Mode, modalità a singola passata) oppure ricominciare nuovamente il ciclo (Continuous Mode, modo continuo a modulo n). Il modo di funzionamento ed il numero di partenza da cui effettuare il conteggio sono selezionabili dall’utente agendo su opportuni registri di controllo. I registri di controllo dei comparatori sono cinque e prendono il nome di PRE0 (Registro del prescaler P0), T0 (Registro del timer 0), PRE1 (Registro del Prescaler P1), T1 (Registro del Timer 1) e TMR (Registro di modo).

Il kit è disponibile da Futura Elettronica

Tags:,

Leave a Reply