Sei sulla pagina 1di 3

CORSO PROGRAMMAZIONE AVR

Dalla figura si nota che le


locazioni di memoria che
Ad ogni registro è assegnato un indiriz-
vanno da $0000 a $001F
zo univoco, in questo modo si è mappa-
individuano i registri di uso
ta la memoria dall’indirizzo $00 all’
generale; mentre le locazio-
indirizzo $1F individuando 32 locazio-
ni da $0020 a $005K contengono i registri di I/O.
ni da usare come spazio dati. I registri
Dalla locazione $0060 fino a $025F troviamo la
che vanno dalla locazione $1A alla
SRAM interna al microcontrollore, mentre dall’in-
locazione $1F possono essere combi-
dirizzo $0260 fino a $FFFF abbiamo dello spazio
nati due a due per ottenere registri a
indirizzabile per connettere al micro della
16 bit, indicati con i nomi
memoria SRAM esterna.
di registri X, Y, Z.

re di interrupt della ricezione UART). Qui possia- secondo la tabella pubblicata a pagina 77 che pren-
mo inserire una serie di istruzioni dedicate a questo dono il nome di I/O register; in questa tabella tro-
evento: ad esempio, possiamo leggere il valore che viamo elencato l’indirizzo di memoria in cui sono
l’UART ha ricevuto e scriverlo in una variabile; resi disponibili e la sigla mnemonica che li identi-
queste operazioni vengono svolte da una subrouti- fica.
ne che prende il nome di routine di risposta all’in-
terrupt. La routine terminerà con una istruzione MAPPA DI MEMORIA
che farà l’operazione opposta rispetto all’interrupt
cioè forzerà nel Program Counter l’istruzione suc- Come ogni microcontrollore anche l’AT90S8515
cessiva all’ultima eseguita prima dell’interrupt. dispone internamente di due specifiche aree di
L’AT90S8515 dispone di 13 vettori di interrupt. memoria: la Program Memory e la Data
Torniamo ora allo schema a blocchi interno e Memory.
vediamo che le altre periferiche disponibili sono la La Program Memory, memoria programma, contie-
SPI Unit, interfaccia seriale sincrona a 3 fili in ne il programma ovvero l’opcode delle istruzioni
grado di operare in modalità Master o Slave; la che la CPU dovrà eseguire una dopo l’altra quando
Serial UART (Universal Asynchronous Receiver il micro viene alimentato. La memoria programma
and Transmitter); un 8 bit Timer / Counter e un 16 è di tipo FLASH e può essere scritta e cancellata
bit Timer / Counter; un Watchdog Timer; un com- per ben 1000 volte. La sua capacità è di 4K x 16
paratore analogico e 32 linee di ingresso / uscita locazioni il cui indirizzo va da $000 a $FFF.
con le quali il dispositivo scambia dati a livello La Data Memory può essere scomposta in due parti
TTL con il mondo esterno. significative: una contenente i dati e una destinata
Per comunicare con le varie periferiche sopra elen- ai registri. Vedremo che lo svolgimento di un pro-
cate sono disponibili una serie di registri definiti gramma richiede l’utilizzo oltre che di costanti

Elettronica In - luglio/agosto 2001 75


CORSO PROGRAMMAZIONE AVR
anche di variabili. Con quest’ultimo termine indi- mentate altre 512 locazioni da 8 bit in cui scrivere
chiamo tutti i parametri numerici che possono e leggere dei dati: si tratta della memoria
variare durante l’esecuzione di un programma. Il EEPROM. Questa area di memoria può essere con-
nostro micro dispone di 512 locazioni interne di siderata come una RAM con la differenza che i dati
memoria in cui è possibile memorizzare delle inseriti vengono trattenuti anche in assenza di ali-
variabili; tali locazioni sono contraddistinte da pre- mentazione.
cisi indirizzi e vanno da $0060 a $025F. Per scrivere o leggere dati in EEPROM è però
Osservando la mappa di memoria dati notiamo le necessario utilizzare tre specifici registri. Questa
locazioni da $0260 a $FFFF sono indicati come memoria consente un massimo di 100000 cicli di
External RAM; ciò significa che la struttura scrittura / lettura.
hardware e le risorse software (capacità di indiriz-
zamento) dell’AT90S8515 consentono di collegare IL REGISTRO DI STATO
esternamente una memoria SRAM da 64 Kbyte
(massimi). Questo registro serve per controllare il verificarsi di
Le locazioni da $0000 a $005F contengono invece particolari eventi dovuti all’esecuzione di alcune
i registri che come abbiamo visto prima sono delle istruzioni, tipo quelle logiche o matematiche. Ogni
locazioni utilizzate per comunicare con le periferi- Bit di questo registro ha una particolare funzione.
che o utili al lavoro della ALU.
In particolare i registri il cui indirizzo va da $0000 Bit 7 - I – Global Interrupt Enable
a $0001F vengono denominati General Purpose Questo bit va settato a valore logico alto (cioè 1)
Working Register: sono i registri di lavoro, quel- per abilitare l’utilizzo degli interrupt. Questo bit
li da utilizzare per svolgere operazioni matemati- viene posto a zero dall’hardware dopo che c’è stata
che o per “puntare” a determinate locazioni; vedre- una richiesta di interrupt, mentre viene settato dal-
mo meglio tali registri durante l’analisi del set di l’istruzione RETI al termine di una routine di
istruzioni. In ogni caso occorre ricordare che sei interrupt.
dei trentadue registri di uso generale possono esse-
re utilizzati come puntatori a indirizzamento indi- Bit 6 – T – Bit Copy Storage
retto a 16 bits per lavorare con la memoria. Questi Le istruzioni di copia dei bit (BLD bit letto e BST
registri a 16 bits sono chiamati registri X, Y e Z. bit immagazzinato ) usano il bit T come sorgente e
Ad ogni registro è assegnato un indirizzo univoco, destinazione nelle operazioni che vengono effettua-
in questo modo si è mappata la memoria dall’ indi- te sui singoli bit di un registro. Un bit di un registro
rizzo $00 all’ indirizzo $1F individuando 32 loca- può essere copiato nel bit T dall’istruzione BST
zioni da usare come spazio dati. L’ALU ad alte pre- mentre il bit T può essere copiato in un altro regi-
stazioni dell’ AVR comunica con tutti e 32 i registri stro attraverso l’ istruzione BLD.
di uso generale, ed è in grado, in un unico ciclo di
clock, di eseguire operazioni tra due registri. Bit 5 – H – Half Carry Flag
Le locazioni da $0060 a $005F contengono invece Questo bit indica che un’operazione aritmetica ha
i registri di I/O (vedi tabella a lato); si tratta di 64 generato un riporto oppure un prestito.
locazioni di memoria attraverso le quali è possibile
impartire ordini, ovvero inviare comandi, alle varie Bit 4 – S – Sign Bit
periferiche e riceverli. Descriveremo meglio il Il bit S è dato da un OR esclusivo tra il flag nega-
significato di ogni registro di I/O durante l’analisi tivo N e il complemento a due del flag V. Indica il
della periferica a cui sono destinati. Per ora ci limi- segno del dato dopo avere eseguito un’operazione
tiamo a dire che le locazioni di I/O, ovvero la parte aritmetica.
di memoria che contiene i registri di I/O, sono
accessibili attraverso le istruzioni di IN e OUT le Bit 3 – V – Flag di Overflow
quali trasferiscono i dati tra i 32 registri di uso In questo bit è contenuto il risultato di overflow ed
generale e lo spazio di I/O. è in complemento a due. Letteralmente tradotto
overflow significa traboccamento, ed è una condi-
LA MEMORIA EEPROM zione nella quale un’operazione aritmetica fornisce
un risultato di grandezza superiore alla massima
La SRAM interna non è l’unica area disponibile che un registro o una locazione di memoria può
per la memorizzazione dei dati, sono infatti imple- contenere.

76 luglio/agosto 2001 - Elettronica In


CORSO PROGRAMMAZIONE AVR

Bit 2 – N – Negative Flag logica rispettivamente se il risultato è negativo, se


Bit 1 – Z – Zero Flag il risultato è pari a zero, se l’operazione ha dato
Bit 0 – C – Carry Flag luogo oltre che al risultato anche ad un riporto. Lo
Status Register non viene automaticamente salvato
Indicano al termine di un'operazione matematica o quando si richiama una routine di interrupt.

Elettronica In - luglio/agosto 2001 77