Académique Documents
Professionnel Documents
Culture Documents
Arquitectura de Microcomputadoras
Marzo / 2008
La familia de microcontroladores AVR
La familia de microcontroladores AVR es muy numerosa, incluye 71
dispositivos que comparten el núcleo, pero difieren en recursos.
2
Aspecto
Externo
ATMega8
Incluye 3 puertos,
todas las terminales
con una función
alterna.
PB – 8 bits
PC – 7 bits
PD – 8 bits
3
Aspecto
Externo
ATMega16
Incluye 4 puertos,
todas las terminales
con una función
alterna.
PA – 8 bits
PB – 8 bits
PC – 8 bits
PD – 8 bits
4
Interior del Microcontrolador (ATMega-8)
5
Interior del Microcontrolador (ATMega-16)
6
AVR CPU CORE
7
AVR CPU CORE
La principal función del CPU CORE es asegurar la correcta
ejecución de programas. La CPU debe poder tener acceso a las
memorias, realizar cálculos, controlar periféricos y manejar
interrupciones.
8
AVR CPU CORE
El Archivo de Registros contiene 32
registros de propósito general de 8 bits,
habilitados para un acceso rápido.
denominan X, Y y Z.
( XH )
( YL )
( YH )
( ZL )
El registro Z también puede usarse como ( ZH )
9
AVR CPU CORE
10
AVR CPU CORE
12
AVR CPU CORE
Mapa de memoria
13
Mapa de Memoria
SRAM
Externa
End Address
14
Memoria de Programa
Espacio continuo de memoria Flash cuyo tamaño varia entre
procesadores, para el ATMega 8 es de 8 Kbytes (organizados
como 4 K x 16 bits) y para el ATMega 16 es de 16Kbytes
(organizados como 8 K x 16 bits). Soporta hasta 10,000 ciclos de
escritura/borrado.
15
Memoria de Programa
( $ 1FFF , en ATMega16 )
16
Memoria de Programa
Vectores de Interrupción en el ATmega8
17
Memoria de Programa
Vectores de Interrupción en el ATmega16
18
Memoria SRAM de Datos
Es un espacio de 1120 localidades de 8 bits e incluyen:
- Un Archivo de Registros de 32 localidades.
- 64 Registros I / O.
- 1024 localidades de propósito general.
19
Archivo de Registros
20
Registros I/O
Son 64 Registros e incluyen a los Puertos de Entrada/Salida, así
como registros para la configuración, el control y el estado de
los periféricos con que cuenta el ATmega8.
Los registros I/O pueden ser tratados como memoria, con las
instrucciones LD y ST (direcciones 0x20 - 0x5F).
21
Registros I/O (Parcial)
Read/Write
Valor inicial
– S: Bit de signo
– N: Bandera de Negativo
24
Acceso al espacio de Propósito General
Carga (Load)
Almacenamiento (Store)
(almacenamiento)
(carga)
27
Bits del registro de CONTROL :
EEPROM_write:
; Asegura que no hay escritura en proceso
sbic EECR,EEWE
rjmp EEPROM_write
; Establece la dirección
out EEARH, r18
out EEARL, r17
; Coloca el dato
out EEDR,r16
; Inicia la escritura
sbi EECR,EEWE
ret 29
Función de Escritura en EEPROM :
// Recibe el dato y la dirección a escribir
// Establece la dirección
EEAR = direccion;
// Coloca el dato
EEDR = dato;
// Inicia la escritura
EECR |= ( 1 << EEWE );
}
30
Rutina de Lectura en EEPROM :
; El dato a leer se dejará en R16
; Se leerá de las direcciones R18:R17
EEPROM_read:
; Asegura que no hay una escritura en proceso
sbic EECR,EEWE
rjmp EEPROM_read
; Establece la dirección
out EEARH, r18
out EEARL, r17
; Inicia la lectura
sbi EECR,EERE
; Coloca el dato
in r16, EEDR
ret
31
Función de Lectura en EEPROM :
// Inicia la lectura
EECR |= ( 1 << EERE );
// Regresa el dato
return EEDR;
}
32
Puertos de
Entrada/Salida
en el
ATMega8
Incluye 3 puertos, todas las
terminales con una función
alterna.
• PB – 8 bits
• PC – 7 bits
• PD – 8 bits
33
Puertos de
Entrada/Salida
en el
ATMega16
• PA – 8 bits
• PB – 8 bits
• PC – 8 bits
• PD – 8 bits
34
Puertos de Entrada/Salida
35
Registros para el manejo de puertos
Registros en el ATMega8
Registros en el ATMega16
36
Puertos de Entrada/Salida
37
Puertos de Entrada/Salida
( Configuraciones )
PUD
DDxn PORTxn E/S Pull-Up Comentario
(en SFIOR)
0 0 X Entrada No Tercer estado (Hi-Z)
Adecuado para botones
0 1 0 Entrada Si
o interruptores
0 1 1 Entrada No Tercer estado (Hi-Z)
1 0 X Salida No Salida en bajo
1 1 X Salida No Salida en alto
38
Ejemplo en ensamblador
...
; Se pueden tener diferentes combinaciones en
; un puerto
39
Ejemplo en lenguaje C
unsigned char i;
...
// Se pueden tener diferentes combinaciones en
// un puerto
PORTB = 0B11000011;
DDRB = 0B00001111;
40
Sistema de Interrupciones
41
Sistema de Interrupciones
Programa principal
Tiempo
* ** * ** * **
Nivel
Base Principal Principal Principal Principal
Tiempo * Interrupción
** Instrucción de retorno de interrupción
42
Interrupciones en los AVRs
Se tienen diferentes fuentes de Interrupción:
44
Vectores de Interrupción en el ATmega8
46
El ATMega 16 también puede ubicar un auto-cargador en su memoria de programa.
Manejo de Interrupciones
(para el ATMega 8)
; Un programa generalmente inicia en la dirección 0
org 0x000
rjmp Principal ; Se evita el vector de interrupciones
org 0x001
rjmp Externa_0 ; Bifurca a su ISR correspondiente
org 0x002
rjmp Externa_1 ; Bifurca a su ISR correspondiente
org 0x013
Principal: . . . ; Acá estará el código principal
. . . ; Debe activar las interrupciones
. . .
org 0x002
jmp Externa_0 ; Bifurca a su ISR correspondiente
org 0x004
jmp Externa_1 ; Bifurca a su ISR correspondiente
org 0x02A
Principal: . . . ; Acá estará el código principal
. . . ; Debe activar las interrupciones
. . .
51
Sistema de Inicialización
(Solo en ATMega-16)
52
Sistema de Inicialización
Solo en ATMega-16
Los bits 7 y 6 no son banderas de reset.
En ATMega8 están sin uso.
54
Sistema de Inicialización
57
Sistema del reloj
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:
58
Sistema del reloj
La fuente de reloj se selecciona con 4 bits de configuración internos
(no corresponden a algún registro). Se tienen las opciones:
Existen otro par de bits (SUT, Set up Time), que junto con los bits
CKSEL, ajustan un retardo inicial en la operación del oscilador, después
de un reset.
59
Ventanas de programación, usando al AVR Studio
y al AVR Dragon.
60
Ventanas de PonyProg
61
Cristal/Resonador Externo
62
Cristal/Resonador Externo
63
Cristal/Resonador de Baja Frecuencia
Para usar un cristal de 32.768 Khz, el cual proporciona la base para un
contador de tiempo real, debe usarse CKSEL = “1001”.
64
Oscilador RC Externo
La frecuencia se determina como f = 1/(3RC).
C debe ser al menos de 22 pF.
65
Oscilador RC Externo
Los tiempos de arranque bajo estas opciones son:
66
Oscilador RC Calibrado Interno
68
Distribución del reloj
69
Administración de la Potencia y 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 modos SLEEP y
para entrar en alguno de ellos, el bit SE (SLEEP enable) del registro
MCUCR (MCU Control Register) debe ponerse en alto.
Nota: 1. El modo Standby está disponible solo con cristales o resonadores externos. 70
El modo Extended Standby no está disponible en el ATMega8.
Administración de la Potencia y modos SLEEP
71