ST6
cos'è e come funziona

Il termine Microcontrollore o MCU (Microcontroller unit) identifica un particolare circuito integrato che dispone nel suo interno di almeno cinque blocchi funzionali:

- Una interfaccia d'ingresso: uno opiu ingressi attraverso i quali acquisire dati e informazioni dal mondo esterno; a seconda del micro, agli ingressi possono venire applicati segnali digitali (livelli logici) o analogici (tensioni, frequenze) ed anche segnali piu complessi come, ad esempio, quelli video.

- Una interfaccia di uscita: una o piu uscite in grado di controllare attuatori di ogni genere, display, monitor, dispositivi di potenza i quali trasformano la tensione in forza meccanica (motori).

- Una memoria ROM o EPROM: solitamente chiamata "memoria programma", nella quale viene caricato il programma da eseguire; i dati e le istruzioni rimengono registrati anche quando viene a mancare alimentazione.

- Una CPU: definita come l'unità principale di calcolo, con relativo clock, in grado di interpretare ed eseguire scrupolosamente il programma contenuto nella memoria; in base a questo programma, la CPU elabora i segnali di ingresso e controlla le uscite.

- Una memoria RAM o EEPROM: chiamata "memoria dati", nella quale la CPU legge e scrive le variabili, ovvero i dati presenti sugli ingressi e sulle uscite, i risultati delle operazioni ed altre informazioni; i dati presenti nella RAM vengono presi quando viene a mancare l'alimentazione.

Oltre a questi blocchi funzionali, indispensabili per poter definire microcontrollore un determinato chip, solitamente nei micro vengono implementate altre funzioni legate alla complessità del dispositivo; tra le più comuni segnialiamo i timer, i convertitori A/D e D/A, i generatori PWM, i driver per display e numerose altre periferiche specializzate.       Da quanto fin qui esposto risulta evidente quale sia la differenza tra un microprocessore e un microcontrollore: il primo contiene esclusivamente l'unità centrale di calcolo (CPU) e quindi per poter funzionare necessita di una memoria ROM esterna nella quale viene scritto il programma, di una RAM per i dati e di alcuni integrati per l'interfacciamento; nei microcontrollori tutto ciò è contenuto all'interno di un singolo chip. Il principio di funzionamento di un microcontrollore è molto semplice, e coincide con quello di un computer o elaboratore elettronico e può essere riassunto in solo tre operazioni eseguite dalla CPU, essa legge l'istruzione contenuta nella memoria programma, la interpreta e la esegue.

st626x2.gif (13885 byte)

 

IL "CORE"

La CPU rappresenta ovviamente l'elemento più importante di un microcontrollore, il "core" di tutto il sistema. In base al numero di bit che il processore è in grado di elaborare è possibile individuare quattro grandi famiglie: i micro a 4 bit, quelli a 8, quelli a 16 e quelli a 32. I più diffusi sono i dispositivi a 8 bit che coprono circa il 50% del mercato mentre quelli più sofisticati e di recente produzione utilizzano la CPU di 32 bit. Altra caratteristica molto importante dei microcontrollori (così come dei microprocessori) è la velocità di esecuzione che nei modelli più sofisticati può raggiungere alcune decine di MIPS (milione di operazioni per secondo). La CPU contenuta nel chip è in grado di interpretare un aserie di istruzioni che è specifica di quel determinato micro o della famiglia di appartenenza. Purtroppo, non esiste un controllore uguale ad un altro; tuttavia, specie se ci riferiamo a dispositivi della fascia bassa e medio-bassa, la conoscenza di una famiglia di micro e delle relative istruzioni sono di grande aiuto nell'apprendimento della logica di funzionamento e delle istruzioni di una famiglia simile prodotta da un'altra casa costruttrice. Il passaggio da una famiglia all'altra non rappresenta dunque un grosso problema per un apersona esperta; il vero problema è un'altro. Per programmare questi dispositivi, oltre a conoscere la logica di funzionamento ed il set di istruzioni, è necessario disporre di un emulatore o di un programmatore che sono specifici per ciascuna famiglia di integrati. Così, ad esempio, per programmare un micro della famiglia ST6 è necessario disporre del relativo programmatore della SGS, il quale non è adatto per un micro della famiglia PIC16XX della Microchip. Pertanto, prima di scegliere un microcontrollore, appartenente ad una famiglia, è necessario valutare accuratamente quali sono le proprie esigenze per evitare di dover passare ad un altro dispositivo, col relativo aggravio di costi dovuti al sistema di sviluppo e di programmazione. Per lo stesso motivo abbiamo dovuto fare delle scelte, individuare cioè una famiglia di microcontrollori da prendere in considerazione quando dai concetti generali si passerà alla pratica. La scelta è caduta sulla famigliaST6 della SGS-THOMSON basata su una CPU a 8 bit: sviluppata per applicazioni nel campo auto, in quello industriale e nel settore delle telecomunicazioni, la famigliaST6 consente di realizzare numerosi dispositivi elettronici nella fascia bassa e modio-bassa. Per impieghi più complessi, esiste un afamiglia (ST9) con prestazioni più sofisticate; è relativamente facile, conoscendo la famiglia ST6, fare un salto di qualità e passare alla famiglia di rango superiore. Le ragioni della scelta della famiglia ST6 sono molteplici: l'ottimo rapporto prezzo/prestazioni dei dispositivi, la loro notevole diffusione, la disponibilità di un programmatore di basso costo. Analizzando lo schema a blocchi dell'ST6265 notiamo che la CPU indicata come "8 bit core" comunica attraverso un bus bidirezionale con tutte le risorse disponibili del chip.  Tra di esse distinguiamo le principali, ovvero quelle senza le quali il micro non potrebbe funzionare, che sono la memoria ROM, la memoria RAM e le interfaccie di ingresso e uscita contraddistinte dalla sigla "Port".

wpe9.jpg (13257 byte)

 

GLI INGRESSI/USCITE

Nel micro ST6265, ad esempio, sono diponibili tre blocchi di interfaccia ingresso/uscita, definiti anche come porte di I/O (input/output), siglate rispettivamente: Port A, Port B, Port C. Ogni Port è collegato  ad un determinato numero di pin del micro, per la precisione il Port A è collegato a 8 pin siglati da PA0 a PA7, il Port B è connesso ai pin da PB0 a PB7, il Port C è invece collegato a solo 5 pin siglati PC0, PC1, PC2, PC3, PC4. Tutti i pin collegati ai Port vengono indicati con il termine "linea di I/O (ingresso/uscita)", il Port A e il Port B dispongono dunque di 8 linee ciascuno, mentre il Port C dispone di 5 linee di I/O. Ogni singola linea può essere programmata per funzionare come ingresso o come uscita. Ad esempio se colleghiamo un pulsante ad un pin di I/O del micro dovremo programmare questo pin come ingresso, al contrario se vi colleghiamo un relè il pin sarà settato come uscita. Concludendo, ogni linea di I/O viene nominata ingresso se l'informazione transita dal mondo esterno alla CPU, oppure di uscita se i dati si spostano dalla CPU al mondo esterno. I microcontrollori ST6260 e ST6265 dispongono di funzioni molto avanzate per ogni linea di I/O; sono infatti disponibili ben 5 opzioni per ogni pin d'ingresso: ingresso normale, ingresso con resistore di "pull-up", ingresso di interruzione, ingresso analogico, ingresso seriale. Per un pin di uscita sono invece disponibili 4 diversi tipi di funzionamento: uscita "push-pull", uscita "open-drain", uscita ad alta corrente, uscita seriale.

wpeA.jpg (24785 byte)

 

IL PROGRAMMA

Il blocco indicato come "User program ROM" indica la parte del chip atta a contenere il programma. Se , ad esempio, utilizziamo un ST6265 e lo alimentiamo applicando una tensione tra i pin Vdd e Vss potremo verificare con un tester che tutte le linee di I/O rimangono nella condizione ad alta impedenza. Non succede praticamente nulla, ovvero i pin non variano e restano sempre nello stesso stato. Il micro in oggetto dispone si di una memoria programma ma essa risulta vuota, ovvero non contiene alcun comando che può essere interpretato dalla CPU. Noi abbiamo acquistato la parte hardware che consiste fisicamente nell'integrato siglato ST6265 ma per funzionare è necessario procedere alla sua programmazione. Da queste affermazioni nasce il concetto di programma software che rappresenta la sequenza dei comandi che la CPU deve processare ed eseguire. Il software viene "scritto" dall'utente in funzione di ciò che si vuole far fare al micro e successivamente trasferito nella memoria programma che può essere di tipo PROM o EPROM. I micro dotati di memoria programma di tipo PROM vengono definiti OTP (One Time Programmable) ovvero programmabili una sola volta e sono usati per produrre piccole o medie serie di integrati atti a svolgere sempre la stesse funzioni; se le quantità sono considerevoli (dai 5-10 mila pezzi in su), la programmazione può essere effettuata dalla stessa casa costruttrice (in questo caso si parla di micro "mascherati"); al contrario, i micro con memoria programma di tipo EPROM, possono essere cancellati e programmati più volte, vengono perciò utilizzati prevalentemente in fase di messa a punto del software.   In ogni caso, sia per i micro di tipo PROM che di tipo EPROM, per poter lavorare è necessario disporre di un computer e di un appropriato sistema di sviluppo denominato "Starter Kit". I comandi da impartire alla CPU vengono elaborati e simulati dapprima a computer e in un secondo tempo trasferiti nel chip tramite programmazione. Per ora ci limitiamo a ricordare che ogni diversa famiglia di microcontrollori necessita purtroppo di un proprio sistema di sviluppo. Ad esempio l'ST626X Starter Kit programma la sottofamiglia ST626X di microcontrollori SGS-THOMSON, mentre l'ST6220 Starter Kit gestisce le sottofamiglie ST621X e ST622X, e così di seguito l'M68HC705KICS Starter Kit programma il micro 705H1 della Motorola, il TMS320C5X Starter Kit programma il TMS320XX della Texas Instruments, ecc. E' dunque di primaria importanza sapere esattamente qual'è il micro più adatto alle nostre esigenze e di conseguenza orientarsi sul relativo Starter Kit.

 

LA FAMIGLIA ST6

Il mercato dei micro è in notevole espansione e tutte le principali Case di semiconduttori hanno nel proprio catalogo dei microcontrollori, dall'SGS-THOMSON alla Texas Instruments, dalla Toshiba all'Hitachi, dalla Microchip alla Motorola. Sapersi destricare in questo mercato alla ricerca del micro più appropriato non è facile. Ogni micro nasce con una propria filosofia e presenta rispetto ai concorrenti sia pregi che difetti. Una ditta che prevede l'utilizzo di un micro per produrre migliaia di pezzi deve sicuramente affrontare con cura la scelta del modello più adatto, al contrario una piccola o media industria elettronica dovrebbe basarsi su altri criteri, come ad esempio la semplicità di programmazione, il basso costo del sistema di sviluppo ed infine la gamma di modelli disponibili. Soffermiamoci su quest'ultima affermazione introducendo il concetto di "famiglia di microcontrollori", termine con cui si indicano micro diversi che usano lo stesso software di programmazione. Ad esempio, la famiglia ST6 è composta da 3 sottofamiglie che sono: l'ST621X/ST622X, l'ST624X e l'ST626X. Ad ognuna di queste sottofamiglia appartengono vari modelli di microcontrollore; ad esempio della famiglia ST626X fanno parte i tipi ST6260 e ST6265. Ogni micro indicato è disponibile sia com memoria programma di tipo EPROM che di tipo OTP. Alla famigliaST6 appartengono svariati microcontrollori che pur diversi l'un dall'altro condividono lo stesso software. Si deduce che imparando ad utilizzare uno qualsiasi dei micro indicati si può facilmente e rapidamente passare alla programmazione di un altro micro ST6. La famiglia ST6 utilizza una CPU ad 8 bit e consente la realizzazione di numeerosi dispositivi elettronici. Per impieghi più complessi è possibile e facile, se già si conosce l'ST6, orientarsi verso la più sofisticata famiglia ST6. Tornando alle motivazioni che ci hanno portato alla scelta dei micro ST6 possiamo affermare che esse sono molteplici: le principali possono essere individuate nell'ottimo rapporto prezzo/prestazione, nella semplicità di programmazione, nalla vastità di modelli disponibili, nella robustezza dei micro poichè nati per il mercato automotive, nella loro notevole diffusione e infine nella disponibilità di un programma di basso costo. La famiglia ST6 è stata progettata per soddisfare in modo facile e flessibile un grande numero di esigenze; internamente infatti il micro della SGS-THOMSON dispone di notevoli risorse sia in termini elaborativi che di completezza delle periferiche implementate, che ci consentiranno di realizzare applicazioni anche complesse utilizzando pochi componenti esterni. I micro ST6 comprendono diversi modelli che possiamo dividere in tre grosse categorie: le versioni EPROM utilizzabili in fase di sviluppo del software, le versioni OTP per la produzione in serie, e le versioni ROM per produzioni di grossi quantitativi. Le versioni EPROM sono contraddistinte dalla lettera E (ST62EXX), le versioni OTP dalla lettera T (ST62TXX), e le versioni ROM dall'assenza di lettere (ST62XX).

 

LA SOTTOFAMIGLIA ST626X

Questi chip sono fisicamente identici ai precedenti e condividono le stesse istruzioni software poichè appartengono alla stessa famiglia. Chi già lavora con i 4 modelli base può facilmente passare all'utilizzo dei due modelli avanzati, in quanto sia la struttura complessiva che le nozioni di base hardware sono esattamente le stesse. In pratica l'ST6260 rappresenta l'evoluzione dell'ST6220 che a sua volta è l'evoluzione dell'ST6210. Allo stesso modo l'ST6265 deriva dall'ST6225 che a sua volta deriva dall'ST6215. Per evitare confusioni facciamo riferimento alla tabella comparativa della famiglia ST6 riportata di seguito. Qui possiamo effettuare subito due grosse distinsioni rappresentate dal tipo di contenitore impiegato, l'ST6210, l'ST6220 e l'ST6260 dispongono di package a 20 pin, mentre l'ST6215, l'ST6225 e l'ST6265 hanno un contenitore a 28 piedini. Da ciò deriva la prima differenza cioè il numero di linee di I/O che i micro possono gestire. La seconda differenza che possiamo riscontrare è la diversa capacità di memoria programma. In generale possiamo ricordare la seguente tabella di verità per comprendere subito con quale modello abbiamo a che fare, se trasformiamo in ST62 A B C la sigla di un qualsiasi microcontrollore indicato, possiamo affermareche: la posizione A coincide con il tipo di memoria programma ovvero sarà una E se di tipo EPROM o una T se di tipo OTP, la posizione B indica la sottofamiglia di appartenenza 1 o 2 oppure 6, la pèosizione C coincide con il contenitore cioè 20 pin se 0, oppure 28 pin se 5. Ad esempio, un micro siglato ST62E25 è un ST6 in versione EPROM appartenente alla sottofamiglia 2 e in contenitore a 28 pin. La sottofamiglia 1 e 2 sono, a parità di contenitori, pin-to-pin compatibili e si differenziano tra loro solo per la capacità di memoria programma. La sottofamiglia 6 (ST6260 e ST6265) non è, a parità di contenitori, pin-to-pin compatibile con i 4 modelli precedenti e dispone di maggiori risorse: 64 byte in più di memoria RAM, 128 byte di memoria EEPROM, un timer autoricaricabile e infine una periferica seriale.

wpeB.jpg (20642 byte)

Introduzione