jueves, 9 de mayo de 2019

SRAM y SRAM de propósito general

El AVR tiene dos tipos de memoria memoria de programa y memoria de datos(FLASH, SRAM), en esta oportunidad nos enfocaremos en SRAM.

En la RAM ó SRAM se tienen tres espacios diferentes en un mapa con direccionamiento lineal, inicia en la dirección 0x000 y concluye en la 0x85F(para Atmega 32). Las primeras 32 localidades son del Archivo de Registros(GPRs), luego siguen 64 localidades denominadas como Registros I/O(SFRs), necesarios para el manejo de recursos, y finalmente se tienen 2k ó 2018 Bytes localidades de SRAM de propósito general para un atmega32.
Figura1

El núcleo AVR está optimizado para trabajar con los registros de propósito general(GPRs) , las instrucciones los refieren como R0 a R31, o bien como apuntadores (X, Y o Z). No obstante, estos registros también pueden ser referidos como cualquier localidad de SRAM de propósito general,

De acuerdo con la figura 2, los Registros I/O también pueden ser referidos como cualquier localidad de SRAM de propósito general, utilizando instrucciones de carga (LD) o almacenamiento (ST), con direcciones en el rango de 0x20 a 0x5F. 

Tratar a los Registros de Propósito General o a los Registros I/O como SRAM de propósito general no es conveniente, porque las instrucciones de acceso a memoria se ejecutan en 2 ciclos de reloj.


Figura2
El espacio de propósito general queda disponible para: variables simples que no alcanzan en los 32 registros, para variables compuestas, como arreglos o estructuras, o bien, para la pila de datos temporales. Pero al ser una arquitectura del tipo Registro a Registro, cualquier variable de SRAM que requiera una modificación debe ser llevada a un registro, para ello se realiza una carga (LD, load) y para respaldar un registro en SRAM se realiza un almacenamiento (ST, store), esto se representa en la figura 3


Figura3
Figura4-Data Memory-Atmega328P-Atmega88
  • Algunos AVR tienen 160 registros de I/O extendidos por ejemplo el Atmega 328P, Atmega88, Atmega168 ,Atmega 8U2/16U2/32U2 entre otros, aquí se encuentran registros como EIMSK,EICRA(registros de interrupción externa) y mas .En estos casos la memoria SRAM empieza desde  0x0100 hasta RAMEND(varia según el micro)
  • Pero en el caso de los atmega 32 no tienen estos registros E/S extendidos por ello la memoria SRAM interna empieza desde 60 hex hasta RAMEND(085F).




No hay comentarios:

Publicar un comentario

Uso del firmware original de la grabadora USBasp AVR en MX-USBASP (clon chino)

Te vendieron un USBisp pensado que es un USBasp?? Hace 2 meses compré un "USBasp" fui a probarlo y no funcionó....pensé me estafar...