- GPRs(General Purpose Registers)
Pueden usarse 6 de los 32 registros como tres punteros de registro de direcciones indirectos(de 16-bits) para el direccionamiento del espacio de datos(memoria de datos RAM), proporcionando cálculos de dirección eficaces. También se usa uno de los tres punteros de dirección para observar una tabla de constantes. Estos registros son los registros X,Y y Z.
- SFRs(Special Function Registers-PORTS I/O)
El espacio de memoria I/O contiene 64 direcciones para la configuración de funciones periféricas de la CPU como los registros de control, Temporizadores/Contadores, convertidores A/D y otras funciones.
Los registros de I/O deben ser accedidos con su dirección del espacio I/O y no considerando si dirección absoluta.
Cuando se menciona direccion de espacio (I/O) se refiere a las direcciones de los registros I/O que empiezan en $00 y acaban en $3F, cualquiera de los 64 registros SFRs(TWBR-SREG) pueden ser accedidos y se llevados a GPRs(R0-R31) utilizando la instrucción "IN".
Cuando se menciona direccion de espacio (I/O) se refiere a las direcciones de los registros I/O que empiezan en $00 y acaban en $3F, cualquiera de los 64 registros SFRs(TWBR-SREG) pueden ser accedidos y se llevados a GPRs(R0-R31) utilizando la instrucción "IN".
SFRs(Registros de Funciones especiales)
Aunque las direcciones de memoria $20-$5F están reservadas para los registros I/O(SFRs) nosotros podemos acceder a ellas como ubicaciones de I/O con direcciones que empiezan en $00.
De acuerdo con la figura(Resumen de Ram) 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.
Los registros de I/O deben ser aceedidos con su dirección del espacio(I/O) ,no considerando su dirección absoluta.
Dirección absoluta-Dirección de registros dentro de los registros I/O. |
Lista de SFRs completos-parte1 |
Lista de SFRs completos-parte2
Para la lectura de un dirección de un registro SFRs se puede usar la instrucción "IN", teniedo en cuenta que esta instrucción NO usa las drecciones absolutas, usa las direcciones de los registros I/O.
1K byter de memoria interna puede ser accedida desde la dirección $0060 hasta la dirección $045F son registros que se usan para propositos generales.
|
Memoria Interna SRAM |
RESUMEN DE RAM
La memoria RAM está compuesto por 32 registros generales(GPRs),64 registros de funciones especiales(SFRs) y memoria SRAM(puede variar según el microcontrolador ,algunos son de 1k , 2 k,etc), ejemplo:
En la siguiente figura se muestra la memoria RAM de un Atmega32, que tiene 085F=2143, dirección de [0-->0x85F], aquí está incluido [32 registros GPRs(Dirección 0-->1F)+64 registros SFRs(Dirección 20-->5F)+ Memoria SRAM de 2k=2048(Dirección 60-->85F)].
Según lo dicho anteriormente se concluye que si en la hoja de datos del AVR te dice que la memoria SRAM es de 2Kbytes no considera a (GPRs y SFRs).
Según lo dicho anteriormente se concluye que si en la hoja de datos del AVR te dice que la memoria SRAM es de 2Kbytes no considera a (GPRs y SFRs).
Resumen de RAM-Atmega32 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) entre otros .En estos casos la memoria SRAM empieza desde 0x0100 hasta RAMEND(depende del microcontrolador la dirección varia).
- 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).