IL MICROCONTROLLORE ST6 HARDWARE EVOLUZIONE TECNOLOGICA E MICROPROCESSORI Un singolo chip di silicio contiene centinaia di migliaia o milioni di transistori. In un unico circuito integrato sono realizzate tutte le funzioni tipiche di un sistema a microprocessore realizzato su scheda: – unità centrale – memorie RAM e ROM – porte di ingresso/uscita – timer – convertitore A/D – UART – …….. VANTAGGI maggiore flessibilità del sistema per impieghi nei più svariati campi applicativi maggiore efficienza delle istruzioni create apposta per svolgere operazioni specifiche semplificazione nella scrittura dei programmi BLOCCHI FUNZIONALI TIPICI (1) un’unità centrale di elaborazione (CPU), che ha lo scopo di eseguire le istruzioni del programma contenuto nella memoria una memoria ROM o EPROM in cui viene memorizzato il programma specifico per una particolare applicazione, con capacità da 1024 a 4096 byte; una memoria RAM in cui vengono memorizzate le variabili e i dati risultanti dall’elaborazione del programma BLOCCHI FUNZIONALI TIPICI (2) un certo numero di linee di ingresso e uscita, raggruppate normalmente il gruppi di otto, che costituiscono le porte di I/O e che consentono al microcontrollore di comunicare con il mondo esterno uno o più convertitori analogico/digitali uno o più timer in grado di funzionare sia come temporizzatori che come contatori un’interfaccia seriale (RS232, I2BUS o di altro tipo) un generatore di segnale PWM (Pulse Width Modulation) ARCHITETTURA MICRO ST6 MODELLI DISPONIBILI dispositivi equipaggiati con EPROM, contraddistinti dalla lettera E (ST62Exx), normalmente utilizzati durante la fase di messa a punto del software, o per la realizzazione di prototipi dispositivi OTP (One Time Programmable), contraddistinti dalla lettera T (62Txx) usati per la realizzazione di piccole serie dispositivi equipaggiati con ROM (nessuna lettera di riconoscimento), usati per grandi serie PIEDINATURA ST6 (1) VDD VSS. Vengono connessi rispettivamente al positivo dell’alimentazione e alla massa. La tensione di alimentazione deve essere compresa tra 3 e 6 volt. OSCin e OSCout: sono connessi internamente all’oscillatore integrato nel chip. Tra questi due piedini può essere collegato un cristallo di quarzo, un risonatore ceramico o un segnale di clock esterno. RESET: attivo al livello basso, viene usato per inizializzare il microcontrollore e per fare in modo che l’esecuzione del programma parta dalla prima istruzione. TEST. Per il normale funzionamento del microcontrollore questo piedino deve essere collegato a VSS. PIEDINATURA ST6 (2) NMI. Ingresso per l’Interrupt non mascherabile, sensibile al fronte di discesa (Normalmente collegato a VDD tramite una resistenza di pull-up) TIMER. E’ il piedino di I/O del timer. PA0 ÷ PA3, PA4 ÷ PA7. Queste 8 linee sono organizzate come una porta di I/O (PORT A). PB0 ÷ PB7. Queste 8 linee sono organizzate come una porta di I/O (PORT B). PC4 ÷ PC7. Queste 4 linee sono organizzate come una porta di I/O (PORT C). Ciascuna linea di una porta può essere configurata, sotto il controllo del software, per funzionare come ingresso o come uscita, secondo varie modalità. PIEDINATURA ST6 (3) ORGANIZZAZIONE DELLA MEMORIA La MCU (MicroController Unit) funziona utilizzando tre spazi di memoria Spazio di programma: fisicamente implementato in una memoria ROM o EPROM. – Contiene le istruzioni che devono essere eseguite, le costanti usate, i vettori (indirizzi) definiti dall’utente e un certo numero di locazioni riservate (non utilizzabili dall’utente). – Viene indirizzato mediante il registro contatore di programma (Program Counter - PC) a 12 bit. Spazio dei dati: ospita tutti i dati necessari per l’elaborazione del programma utente e comprende: – – – – le risorse della RAM l’unità centrale del microcontrollore i registri dei dispositivi periferici i dati di sola lettura, come le costanti e le tabelle, che sono memorizzati nella ROM (o EPROM). ORGANIZZAZIONE DELLA MEMORIA (1) ROM dei dati: Tutti i dati di sola lettura vengono ospitati dalla memoria ROM che contiene quindi: – il codice del programma che deve essere eseguito – le costanti e le eventuali tabelle di consultazione richiesti dalla particolare applicazione. Le locazioni di memoria contenute nello spazio dei dati, nelle quali vengono allocate le costanti e le tabelle di consultazione, possono essere pensate come una finestra a 64 bit attraverso cui è possibile accedere ai dati memorizzati nella ROM. ORGANIZZAZIONE DELLA MEMORIA (2) RAM dei dati: comprende – 60 byte di RAM – l’accumulatore A – I registri per l’indirizzamento indiretto X e Y – i registri per l’indirizzamento diretto corto V e W – i registri dei dati e i registri di controllo relativi alle porte di I/O – il registro delle opzioni di interruzione – il registro per l’indirizzamento dei dati nella ROM. ORGANIZZAZIONE DELLA MEMORIA (3) Spazio dello Stack Lo Stack è costituito da sei registri a 12 bit che vengono utilizzati per memorizzare gli indirizzi di ritorno dalle subroutine normali e da quelle che gestiscono gli eventi connessi alle interruzioni. ARCHITETTURA UNITA’ CENTRALE NUCLEO E CONTROLLER Il nucleo della CPU ST6 può essere pensato come un’unità centrale indipendente che comunica con la memoria, con i dispositivi di ingresso/uscita e con i dispositivi periferici dedicati, integrati nello stesso chip, mediante tre bus interni: quello dei dati, quello degli indirizzi e quello di controllo. il nucleo della CPU è collegato direttamente ai dispositivi periferici dedicati mediante un bus seriale e, indirettamente, per le operazioni connesse alla richiesta di interruzioni, attraverso i registri di controllo. l’unità di controllo (Controller) è collegata esternamente ai circuiti dell’oscillatore e del reset. I REGISTRI DELLA CPU La CPU ST6 possiede sei registri e tre coppie di flag. Accumulatore A: è un registro a otto bit di utilizzo generale. Viene usato in tutte le operazioni logiche e matematiche e nella manipolazione dei dati. Registri per l’indirizzamento indiretto X e Y: vengono usati principalmente come puntatori a locazioni di memoria nello spazio dei dati (anche per uso generale) Registri per l’indirizzamento diretto corto V e W: vengono usati per memorizzare un byte nel modo di indirizzamento corto (anche per uso generale) Registro contatore di programma PC (Program Counter): è un registro a 12 bit che contiene l’indirizzo, nella ROM, dell’istruzione successiva a quella in corso di esecuzione. I FLAG DELLA CPU ST6 La CPU dell’ST6 rende disponibili tre coppie di flag. Ciascuna coppia di flag è associata a uno dei tre modi di funzionamento della CPU: – modo normale – modo Interrupt – modo Interrupt non mascherabile. Ogni coppia di flag è costituita da un flag di zero ( Z ) e da un flag di carry ( C ). – la prima coppia, CN-ZN, viene utilizzata nel modo di funzionamento normale – la seconda coppia, CI-ZI, viene utilizzata nel modo Interrupt – la terza coppia, CNMI-ZNMI, nel modo Interrupt non mascherabile. I FLAG DI CARRY E DI ZERO Il flag di carry C viene posto a 1 se si verifica un riporto (carry) o un prestito (borrow) nel corso dell’esecuzione di un’operazione aritmetica; in caso contrario viene posto a 0. Il valore del flag C viene inoltre posto uguale al valore del bit testato nel corso dell’esecuzione di un’istruzione di test di un singolo bit. Il flag C viene anche utilizzato nelle operazioni di scorrimento e rotazione all’interno dei registri. Il flag di zero Z viene posto a 1 se il risultato dell’ultima operazione aritmetica o logica è stato zero, in caso contrario viene posto a 0 LO STACK DELLA CPU ST6 (1) Lo Stack della CPU dell’ST6 è implementato come una struttura hardware di tipo LIFO È costituito da sei locazioni di RAM a 12 bit che non appartengono allo spazio dell’area dati della RAM e che formano sei livelli. LO STACK DELLA CPU ST6 (2) Quando si verifica una chiamata a subroutine o una richiesta di interruzione, avviene che: – il contenuto della locazione di ciascun livello viene trasferito nel livello immediatamente superiore – il contenuto del PC viene trasferito nel primo livello. Quando vengono eseguite le istruzioni RET di ritorno da una subroutine o RETI di ritorno da subroutine di gestione di un’interruzione, avviene che: – il contenuto della locazione del primo livello viene trasferito nel PC – il contenuto di ciascuna delle locazioni degli altri livelli viene trasferito nella locazione del livello immediatamente inferiore. LO STACK DELLA CPU ST6 • Poiché l’accumulatore e gli altri registri allocati nello spazio dei dati non vengono memorizzati nello Stack, la loro gestione deve essere effettuata all’interno delle subroutine che li utilizzano. • Nel caso in cui vengano eseguite più di sei chiamate nidificate a subroutine, lo Stack rimane nella posizione più "bassa"; conseguentemente l’ultimo indirizzo di ritorno viene perduto. A cura di Gianfranco Cametti