Departament de Microelectrònica i Sistemes Electrònics

AVR i FONAMENTS DE COMPUTADORS
Enginyeria en Informàtica (ETSE)

memòria sram

La memòria SRAM en els microcontroladors ATmega és un espai extra de memòria temporal important quan es tracten programes de certes dimensions. Els 32 registres propers al processador són insuficients per emmagatzemar les variables temporals quan es tracten programes grans. També és útil per emmagatzemar dades adquirides o que s'han de transferir. Finalment cal recordar que el stack es guarda en aquesta memòria. I en el stack s'hi guarden totes les adreces de retorn quan hi ha salts a subrutines o interrpucions.

Així, tot i que el ATmega8 disposi de 512 bytes de SRAM o que el ATmega128 en tingui 4 KBytes, la SRAM és una memòria apreciada que cal administrar bé.

Per treballar amb la SRAM cal conèixer l'adreça d'inici. En el ATmega8 l'adreça d'inici és la 0x60. En el ATmega128 és l'adreça 0x100.

L'accés a la SRAM es fa amb les instruccions LD i ST, i per recòrrer l'SRAM s'usen els apuntadors X, Y, Z.

En l'exemple Fibonacci es mostra l'ús de la SRAM per a guardar els primers termes de la sèrie de Fibonacci.

L'ús de la SRAM és fonamental pel stack. El stack és una pila (estructura Last In First Out) que guardar temporalment les adreces de retorn de subrutines i rutines de servei d'interrupció. Com que guarda adreces s'ha de referenciar amb un apuntador de 16 bits, i l'adreça es guarda en un dobre registre SPH:SPL que és accessible com a port.

Per a emprar la SRAM per guardar el stack primer cal inicialitzar-lo. Donat que el stack s'omple cap a posicions baixes de la memòria es pot inicialitzar a la part més alta da la memòria, que es pot obtenir a partir del valor RAMEND. RAMEND és una paraula clau especificada en el fitxer de definició del microcontrolador. Recordar que s'ha de definir a l'inici de cada programa-

.EQU RAMEND = $0x060    ; en el fitxer "m8def.inc"

El stack també pot servir per guardar valors temporalment. S'hi poden posar amb la instrucció PUSH i treure amb POP. Cal anar en compta, però, que entre el pop i el push no s'hagin posat (sense treure) adreces provinents de salts a rutines, ja que en aquest cas es crearia un conflicte d'adreces.


WcN - WcN - AVR i Fonaments de computadors - Memòria SRAM