Home
Accesso / Registrazione
 di 

Corso di programmazione per microcontrollori ST626X. Terza Parte 3/3

ST626X Corso di programmazione per microcontrollori ST626X

Microcontrollori ST626X della SGS-Thomson. Corso di programmazione per microcontrollori ST626X.

LA MEMORIA DATI ED I REGISTRI

Analizzando lo schema a blocchi dei microcontrollori della SGS-Thomson osserviamo la presenza di due distinte aree di memoria, quella programma, che abbiamo già analizzato in precedenza, e quella dati. Quest’ultima è di tipo RAM (Random access read/write memory, memoria di lettura e scrittura) e può essere fisicamente rappresentata come l’insieme di 255 celle, ognuna capace di contenere un byte di dato e contraddistinta da un preciso indirizzo o locazione. La memoria dati può, a sua volta, essere suddivisa in due reee distinte.

La prima, denominata DATA RAM, è composta da 128 byte che vengono utilizzati dalla CPU per la memorizzazione temporanea di dati e di variabili. Lo spazio occupato dalla DATA RAM va dalla locazione 84 Hex alla BF Hex e risulta il doppio rispetto a quello disponibile nei micro ST621X e ST622X. La seconda area contiene invece i REGISTRI, termine con cui indichiamo delle celle di memoria dati fisicamente collegati a specifiche sezioni hardware. Per intenderci, questi registri rappresentano le interfacce tra il nostro software e l’hardware del micro.

Durante lo svolgimento del programma essi vengono scritti per trasportare il comando alla CPU o alle periferiche, oppure letti per attingere informazioni dalla CPU o dalle periferiche. I registri presenti all’interno dei microcontrollori ST626X sono parzialmente diversi da quelli contenuti nei micro ST621X e ST622X, poiché sono diverse le risorse disponibili (le periferiche). Al contrario, i registri del micro ST6260 risultano uguali a quelli dell’ST6265. I registri disponibili nei nuovi micro sono ben 35 ed ognuno è contraddistinto da un numero che ne identifica la precisa locazione all’interno della memoria e da una sigla mnemonica. Sarà purtroppo necessario imparare le sigle di tali registri poiché durante la stesura del programma dovremo frequentemente comunicare sia con la CPU che con le diverse periferiche.

Elenchiamo ora brevemente i registri disponibili, la loro locazione e la loro sigla mnemonica. Iniziamo con quelli gestiti dalla CPU che sono 5 e vengono contraddistinti dalle lettere A, X,Y, V e W; essi occupano rispettivamente gli indirizzi FF Hex, 80 Hex, 81 Hex, 82 Hex, 83 Hex. I registri delle tre periferiche di ingresso/uscita sono 9, tre per ogni periferica, e vengono contraddistinti dalle seguenti sigle: DRA, DRB e DRC (registri dati port A, B e C), locazioni C0 Hex, C1 Hex e C2 Hex; DDRA, DDRB e DDRC (registri direzione port A, B e C), locazioni C4 Hex, C5 Hex e C6 Hex; infine, ORA, ORB e ORC (registri opzioni port A, B e C), locazioni CC Hex, CD Hex e CE Hex. I due registri del convertitore AD sono contraddistinti dalle sigle ADCR (Registro di controllo) con indirizzo D1 Hex e ADR (Registro dati) con indirizzo D0 Hex. I registri del timer 1 sono tre: TSCR1 (registro stato, D4 Hex), TCR1 (registro contatore, D3 Hex) e PSC1 (registro prescaler, D2 Hex).

Il timer autoricaricabile viene gestito da ben 6 registri: ARMC (registro di controllo modo, D5 Hex), ARSC0 (registro stato 0, D6 Hex), ARSC1 (registro stato 1, D7 Hex), ARLR (registro load, D8 Hex), RELCAP (registro cattura, D9 Hex), ARCP (registro compara, DA Hex). La periferica seriale comunica con il software tramite quattro registri SPIMOD (registro di controllo, E2 Hex), SPIDIV (registro divisione, E1 Hex), SPIDSR (registro dati, E0 Hex), MISC (registro miscellaneo, DD Hex). La memoria elettricamente programmabile (EEPROM) utilizza due registri DRBR (registro banco, E8 Hex) e EECTL (registro controllo, EA Hex).Concludiamo con un gruppo di quattro registri ognuno caratterizzato da una funzione dedicata: DWR (registro di controllo dell’area programma, C9 Hex), IOR (registro opzioni di interruzione, C8 Hex), OSCR (registro di controllo dell’oscillatore, DC Hex), DWDR (registro del watchdog).

LA MATEMATICA DEI MICRO

Il sistema di numerazione prioritario, per intenderci quello che si impara nei primi anni di scuola, viene espresso attraverso 10 simboli dallo 0 al 9 e viene per questo motivo chiamato decimale. Se intendiamo lavorare con i micro è molto importante comprendere la numerazione non solo in base 10 (decimale), ma anche in base 2 (binaria), in base 8 (ottale) ed anche in base 16 (esadecimale). Nella stesura di un programma dovremo aggiungere a ogni numero digitato anche un simbolo che identifichi la base con cui esso viene espresso. Se scriviamo un numero binario aggiungiamo ad esso il suffisso B (binary), se il numero è in base 8 il suffisso O (octal), se lavoriamo con un numero decimale la lettera D (decimal), ed infine se il numero è espresso in esadecimale utilizziamo la lettera H (hexadecimal). I numeri espressi in base 16 utilizzano per la loro rappresentazione sedici simboli, quindi mentre in decimale dopo il numero 9 abbiamo il numero 10, in esadecimale dopo il numero 9 troviamo la lettera A. Questa lettera equivale al numero 10 in decimale.

Contando in esadecimale dopo la lettera A proseguiamo con: B, C, D, E, F. Il sistema di numerazione binaria, a base due, viene rappresentato con solo due simboli, solitamente 0 e 1, detti bit (contrazione di binary digit = cifra binaria). Nella numerazione binaria indichiamo con MSB (Most Significant Bit) la cifra più significativa, e con LSB (Lost Significant Bit) la cifra meno significativa. Quando scriviamo un numero binario partiamo da destra con la cifra LSB e proseguiamo verso sinistra fino ad arrivare alla cifra MSB. Molto usato è anche il termine byte, che rappresenta per l’ST6 l’insieme di otto bit e può essere diviso in due nibble.

Il valore di un byte può variare dal numero 0 al numero 255 se espresso in decimale, oppure da 0 al valore FF se espresso in esadecimale, o ancora da 0 a 11111111 se espresso in binario. Tutti i sistemi elettronici digitali possono distinguere solo due stati logici detti solitamente stato logico 1 e stato logico 0: per questo motivo il sistema binario è uno dei più usati. Il codice esadecimale nasce invece dall’esigenza di ottimizzare il codice binario, in modo da poter esprimere un byte (ovvero otto bit) con due sole cifre.

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 10 utenti e 74 visitatori collegati.

Ultimi Commenti