Departament de Microelectrònica i Sistemes Electrònics
AVR i FONAMENTS DE COMPUTADORS
Enginyeria en Informàtica (ETSE)
memòria
L'arquitectura AVR té dos espais de memòria, el de programa i el de dades, i a més conté una memòria EEPROM addicional per dades.
memòria flash per programa
El programa es carrega en una memòria flash de 8 KBytes, organitzada com a 4K x 16 bits, ja que les instruccions del AVR són de 16 o 32 bits. El comptador de programes és de 12 bits i adreça tot l'espai de memòria (les 4K adreces de memòria).
La memòria flash està dividida en les seccions de memòria de Programa i memòria d'Inici (Boot).
El programa pot contenir taules de constants que són emmagatzemades en la flash emprant la instrucció LPM (Load Program Memory).
memòria de dades sram
L'espai de memòria SRAM global inclou 1120 bytes, i es composa de l'espai de memòria d'E/S (que correspon a les 96 primeres adreces) i de la memòria interna SRAM (les 1024 posicions restants).
L'espai de memòria té 5 modes d'adreçament: directe, indirecte, indirecte amb desplaçament, indirecte amb pre-increment i indirecte amb post-increment.
L'adreçament directe es pot fer en tot l'espai de memòria.Els registres apuntadors en el mode indirecte es fa amb els registres X, Y i Z.
L'adreçament indirecte amb desplaçament només admet un desplaçament de 63 posicions des de l'adreça base i es pot fer amb els registres Y o Z.
El desplaçament indirecta amb pre-increment o post-increment es fa amb els registres X, Y o Z.
La figura 1 mostra l'espai d'adreces de dades.
Figura 1. Mapa de memòria de dades
memòria eeprom
L'ATmega8 també conté una memòria separada EEPROM de 512 bytes que permet ser escrita i llegida per bytes.
La comunicació entre EEPROMi CPU s'estableix emprant el registres:
EEPROM Address Register (EEARH i EEARL). Només s'empren els bits 8 a 0 per especificar l'adreça dintre els 512 bytes de l'espai de memòria.EEPROM Data Register (EEDR). Conté la dada a escriure o a llegir de la memòria.
EEPROM Control Register (EECR). Només s'empren els bits 3 a 0. Controlen el mode de fucnionament de l'EEPROM.
Aquests registres són accessibles en l'espai de memòria d'E/S.
espai de memòria d'E/S
L'espai de memòria d'E/S de l'ATmega8 el formen els registres d'E/S i els regsitres de status i de control dels direrents perifèrics que configuren tot el microcontrolador.
La particularitat d'aquest espai de memòria es troba en les instruccions que es poden emprar per treballar-hi:
Instruccions IN i OUT. L'espai de memòria d'E/S pot ser accedit emprant les instruccions IN i OUT, transferint dades entre els 32 registres de propòsit general i l'espai d'E/S. En aquest cas s'ha d'usar el rang d'adreces 0x00 a 0x3F.Instruccions SBI, CBI, SBIS i SBIC. Els registres d'E/S que es troben en el rang d'adreces 0x00 a 0x1F poden emprar aquestes instruccions que faciliten l'accés o permeten preguntat per l'estat en bits concrets.
Instruccions LD i ST. Quan els registres d'E/S es facin servir com a adreçament en l'espai de dades mitjançant aquestes instruccions s'ha d'afergir 0x20 a aquestes adreces.