Documentos de Académico
Documentos de Profesional
Documentos de Cultura
3 Overview Microcontroladores ATMEL PDF
3 Overview Microcontroladores ATMEL PDF
Familia AVR
Desde 1
a 256K
Toda la
memoria de
datos se puede
direccionar
directamente
Mapa de Memoria
Memoria de programa
Optimizado
para el
repertorio de
instrucciones
AVR.
Son
accedidos
mediante las
instrucciones
IN y
OUT
Memoria de dato (Registros I/O)
La arquitectura asegura el estado de los registros luego
de un reset.
- Mas info en el datasheet
OJO!!! Una rutina de
atención a
interrupciones debe
terminar con la
instrucción RETI, la cual
recupera el valor de la
pila para el PC .
Memoria de dato (EEPROM)
La memoria EEPROM está en un espacio independiente
y se requiere del uso de 3 registros I/O para su
acceso:
Inicialización
El ATmega8 tiene cuatro fuentes de Inicialización
(Reset)
Power-on Reset. El MCU es inicializado cuando el voltaje de la
fuente está por abajo del voltaje de umbral de encendido (VPOT).
Reset Externo. El MCU es inicializado cuando un nivel bajo está
presente en la terminal RESET por un tiempo mayor que la
longitud mínima del pulso.
Watchdog Reset. El MCU es inicializado cuando el Watchdog
Timer está habilitado y su periodo termina.
Brown-out Reset. El MCU es inicializado cuando el detector de
reducción de voltaje está habilitado y el voltaje VCC de la fuente
va por debajo del umbral establecido (VBOT).
Una vez que el MCU se recupera de una condición de
Reset, espera un tiempo de establecimiento (Tout –
con un valor típico de 4 ms), antes de recuperar al
sistema, para garantizar que los registros tienen su
valor inicial.
Pila de programa
La pila es implementada en el espacio de propósito general
(RAM).
Es usada para almacenamiento temporal de variables
(instrucciones PUSH y POP) o durante la llamada de
subrutinas o el manejo de interrupciones.
El registro SP es el apuntador al tope de la pila. Realmente el
SP se compone de 2 registros, para la parte alta (SPH) y para
la parte baja (SPL), esto para direccionar al espacio completo
de memoria.
La pila tiene un crecimiento hacia abajo, es decir, de las
direcciones altas de memoria a las direcciones bajas.
Después de un reset, el apuntador de Pila tiene el valor de
0x0000, por lo que debe ser inicializado dentro del programa
(con 0x0460 para ATMega8), para que realice un
almacenamiento dentro de un espacio válido.
Registro de Estado
Puertos de Entrada/Salida
Para cada puerto se manejan tres registros,
dentro del espacio de registros I/O:
Un registro de lectura/escritura sobre un lacth,
conectado a la terminal del puerto (PORTx).
Un registro de lectura/escritura que define la
dirección del puerto (DDRx). Las direcciones pueden
configurarse de manera independiente, para cada
terminal.
1 – Salida
0 – Entrada
Un registro solo de lectura, para hacer
lecturas directas en las terminales de los
puertos (PINx).
Mucho
Cuidado con
el señor PINx
in RD,PINA
Puertos de Entrada/Salida
Si en PORTx.n se escribe un 1 lógico cuando la terminal es
configurada como entrada, el resistor de pull-up es activado. Para
anular al resistor de pull-up, se debe escribir un 0 en PORTx.n o la
terminal se debe configurar como salida (suponiendo que el bit PUD
tiene 0).
Las terminales están en un treestate cuando una condición de reset
llega a estar activa, aún si no haya señal de reloj.
Si en PORTxn se escribe un uno lógico cuando la terminal se configura
como salida, en PINx.n se tendrá un nivel alto. Si se escribe un cero,
se tendrá un nivel bajo.
Normalmente, el estado con el pull-up habilitado es aceptable, en un
ambiente de alta impedancia no se notará la diferencia entre un nivel
alto y el pull-up. Si este no es el caso, con el bit PUD del registro
SFIOR se pueden deshabilitar los pull-ups en todos los puertos.
Ver manual para conmutar entre estados treestate y salida en alto.
CLOCK
Se tienen diferentes fuentes para manejar al oscilador interno
y a la vez, la señales de reloj se distribuyen por los diferentes
módulos:
Consumo/Modos Sleep
Los modos SLEEP habilitan a la aplicación a apagar
módulos sin usar en el MCU y por lo tanto, ahorrar
energía.
El AVR tiene 5 o 6 modos SLEEP y para entrar en
alguno de ellos, el bit SE (SLEEP enable) del registro
MCUCR (MCU Control Register) debe ponerse en alto.
Portales, foros:
AVRFreaks
Guia AVR
Mi recomendado AVRBeginners
Preguntarle a pepe que tiene bocha….
Desarrollo:
Referencias de Wikipedia