Académique Documents
Professionnel Documents
Culture Documents
Microcontroladores
Marzo / 2015
MICROCONTROLADORES AVR DE
ATMEL
Su Arquitectura es Cerrada.
Tamao
XMEGA
megaAVR
tinyAVR
ncleo
AVR
Caractersticas
8 / 16
TWI
Si
EEPROM (bytes)
512
ISP
Si
SRAM (Bytes)
1024
23 / 32
Comparador
Analgico
Si
F.max (MHz)
16
Watchdog Timer
Si
Vcc (V)
2.7-5.5
Oscilador Interno
Si
16-bit Timers
Multiplicador por
Hardware
Si
8-bit Timer
Interrupciones
19/21
PWM (canales)
3/4
Int. Externas
2/3
RTC
Si
Autoprogramacin
Si
SPI
Maestro/Esclavo
Encapsulados
USART
Interfaz JTAG
ASPECTO
EXTERNO
ATMEGA8
Incluye 3 puertos,
todas las terminales
con una funcin
alterna.
PB 8 bits
PC 7 bits
PD 8 bits
ASPECTO
EXTERNO
ATMEGA16
Incluye 4 puertos,
todas las terminales
con una funcin
alterna.
PA 8 bits
PB 8 bits
PC 8 bits
PD 8 bits
11
EJECUCIN DE INSTRUCCIONES
EJECUCIN DE INSTRUCCIONES
13
EJECUCIN DE INSTRUCCIONES
Para la ejecucin de instrucciones aritmticas y lgicas, la
duracin del ciclo es suficiente para permitir la lectura de
registros, la operacin de la ALU y la escritura en el registro
destino.
T1
T2
CLK CPU
14
ARCHIVO DE REGISTROS
X {
Y {
Z {
0
R0
R1
R2
...
R13
R14
R15
R16
R17
...
R26 (XL)
R27 (XH)
R28 (YL)
R29 (YH)
R30 (ZL)
R31 (ZH)
Dir.
0x00
0x01
0x02
0x0D
0x0E
0x0F
0x10
0x11
0x1A
0x1B
0x1C
0x1D
0x1E
0x1F
15
Memoria de Programa
0x0000
16 bits
0x000
Seccin de Aplicacin
16 bits
Seccin de Aplicacin
Seccin de Arranque
Seccin de Arranque
0x1FFF
0xFFF
(a)
(b)
17
Memoria de Programa
Memoria de Programa
Vectores de Interrupcin en el ATmega8
19
Memoria de Programa
Vectores de Interrupcin en el ATmega16
20
Memoria de Datos
32
Archivo de
Registros
0x000
0x01F
0x020
64
0x000
Registros
I/O
0x05F
0x060
1024
SRAM de
propsito
general
8 bits
8 bits
0x45F
0x1FF
(a)
(b)
SRAM
EEPROM
21
Archivo de Registros
R0
R1
R2
...
R29
R30
R31
Registros I/O
0x00
0x01
0x02
...
0x001D
0x001E
0x001F
0x3D
0x3E
0x3F
0x005D
0x005E
0x005F
SRAM Interna
0x0060
0x0061
...
0x0020
0x0021
0x0022
...
0x045E
0x045F
22
Archivo de Registros
X {
Y {
Z {
R0
R1
R2
...
R13
R14
R15
R16
R17
...
R26 (XL)
R27 (XH)
R28 (YL)
R29 (YH)
R30 (ZL)
R31 (ZH)
Dir.
0x00
0x01
0x02
0x0D
0x0E
0x0F
0x10
0x11
0x1A
0x1B
0x1C
0x1D
0x1E
0x1F
23
Registros I/O
24
25
Z: Bandera de Cero
26
C: Bandera de Acarreo
26
Archivo de Registros
R0
R1
R2
...
R29
R30
R31
Carga
(load, LD)
( store, ST)
SRAM Interna
0x0060
0x0061
...
0x045E
0x045F
Almacenamiento
28
T2
T3
CLK CPU
Registro IR
Captura
Direccin
Calcula direccin
Direccin vlida
Dato a escribir
Datos
Almacenamiento
(Escritura en SRAM)
WR
Dato ledo
Datos
RD
Carga
(Lectura en SRAM)
29
EERIE:
EERE:
31
32
{
// Asegura que no hay escritura en proceso
while ( EECR & 1 << EEWE )
;
// Establece la direccin
EEAR = direccion;
// Coloca el dato
EEDR = dato;
// Pone en alto al habilitador maestro
EECR |= ( 1 << EEMWE );
// Inicia la escritura
EECR |= ( 1 << EEWE );
}
33
ret
34
// Regresa el dato
return EEDR;
}
35
PUERTOS DE
ENTRADA/SALIDA
EN EL
ATMEGA8
Incluye 3 puertos, todas
las terminales con una
funcin alterna.
PB 8 bits
PC 7 bits
PD 8 bits
Las funciones alternas
se revisarn conforme
se revisen los perifricos
que las requieren.
36
PUERTOS DE
ENTRADA/SALIDA
EN EL
ATMEGA16
Incluye 4 puertos, todas las
terminales con una funcin
alterna.
PA 8 bits
PB 8 bits
PC 8 bits
PD 8 bits
Puertos de Entrada/Salida
1 Salida
0 Entrada
38
0x18
PORTB7
PORTB6
PORTB5
PORTB4
PORTB3
PORTB2
PORTB1
PORTB0
PORTB
0x17
DDRB7
DDRB6
DDRB5
DDRB4
DDRB3
DDRB2
DDRB1
DDRB0
DDRB
0x16
PINB7
PINB6
PINB5
PINB4
PINB3
PINB2
PINB1
PINB0
PINB
0x15
PORTC6
PORTC5
PORTC4
PORTC3
PORTC2
PORTC1
PORTC0
PORTC
0x14
DDRC6
DDRC5
DDRC4
DDRC3
DDRC2
DDRC1
DDRC0
DDRC
0x13
PINC6
PINC5
PINC4
PINC3
PINC2
PINC1
PINC0
PINC
0x12
PORTD7
PORTD6
PORTD5
PORTD4
PORTD3
PORTD2
PORTD1
PORTD0
PORTD
0x11
DDRD7
DDRD6
DDRD5
DDRD4
DDRD3
DDRD2
DDRD1
DDRD0
DDRD
0x10
PIND7
PIND6
PIND5
PIND4
PIND3
PIND2
PIND1
PIND0
PIND
PORTA7
PORTA6
PORTA5
PORTA4
PORTA3
PORTA2
PORTA1
PORTA0
PORTA
0x1A
DDRA7
DDRA6
DDRA5
DDRA4
DDRA3
DDRA2
DDRA1
DDRA0
DDRA
0x19
PINA7
PINA6
PINA5
PINA4
PINA3
PINA2
PINA1
PINA0
39
PINA
Puertos de Entrada/Salida
INTERIOR DEL
MICROCONTROLADOR
PUD
DDRxn
Q
CLR
WDDRx
RESET
PORTxn
Pxn
Terminal n del
Puerto x
CLR
WPORTx
RESET
SLEEP
BUS DE DATOS
RDDRx
RPORTx
SINCRONIZACIN
RPINx
PINxn
D
40
clk I/O
Puertos de Entrada/Salida
( Configuraciones )
DDRxn PORTxn
PUD
(en SFIOR)
E/S
Pull-Up
Comentario
Entrada
No
Entrada
Si
Entrada
No
Salida
No
Salida en bajo
Salida
No
Salida en alto
41
EJEMPLOS:
1.
2.
42
Sistema de Interrupciones
Sistema de Interrupciones
Un aspecto importante es que los eventos pueden ocurrir en
cualquier momento, es decir, en forma asncrona.
Programa Principal
tiempo
(a)
Nivel de
Interrupciones
ISR
*
Nivel
Base
Programa
Principal
tiempo
* Interrupcin
** Retorno de Interrupcin
ISR
**
*
Programa
Principal
**
Programa
Principal
(b)
44
45
46
47
48
El ATMega 16 tambin puede ubicar un auto-cargador en su memoria de programa.
Manejo de Interrupciones
(para el ATMega 8)
; Un programa generalmente inicia en la direccin 0
org
0x000
rjmp
Principal ; Se evita el vector de interrupciones
org
rjmp
0x001
Externa_0 ; Bifurca a su ISR correspondiente
org
rjmp
0x002
Externa_1 ; Bifurca a su ISR correspondiente
49
Manejo de Interrupciones
(para el ATMega 16)
; Un programa generalmente inicia en la direccin 0
org
0x000
jmp
Principal ; Se evita el vector de interrupciones
org
jmp
0x002
Externa_0
org
jmp
0x004
Externa_1
50
Manejo de Interrupciones
(Alto Nivel)
#include <avr/io.h>
#include <avr/interrupt.h>
// Entradas y salidas
// Interrupciones
ISR (INT1_vect)
{
. . . .
}
int main(void)
{
. . . . .
}
// Programa Principal
// Debe activar las interrupciones
51
Manejo de Interrupciones
52
Manejo de Interrupciones
Cuando ocurre una interrupcin el MCU realiza:
Manejo de Interrupciones
54
Sistema de Inicializacin
Se tienen las siguientes fuentes de Inicializacin (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 mnima del pulso (trst).
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
reduccin de voltaje est habilitado y el voltaje VCC de la fuente
va por debajo del umbral establecido (VBOT).
JTAG AVR Reset: El MCU es inicializado tan pronto como hay un uno
lgico en el Registro de Reset, del sistema JTAG (Solo en ATMega-16).
55
Sistema de Inicializacin
56
Sistema de Inicializacin
BUS DE DATOS
JTRF
WDRF
EXTRF
BORF
PORF
Registro de Estado y
Control del MCU (MCUCSR)
Reset de
Encendido
VCC
BODEN
BODLEVEL
RESISTOR DE
PULL-UP
RESET
Filtro
Circuito de Reset
S
Registro de
Reset por JATG
Watchdog
Timer
(No disponible en
ATMega8A)
RESET
INTERNO
Oscilador del
Watchdog Timer
Generador
de Reloj
CKSEL[3:0]
SUT[1:0]
CLK
Contador de Retardos
TIMEOUT
57
Sistema de Inicializacin
En el registro MCUSCR (0x34) se registra la condicin de reset,
poniendo al bit correspondiente en alto.
Solo en ATMega-16
Los bits 7 y 6 no son banderas de reset.
En ATMega8 estn sin uso.
58
Vcc
RESET
TIME OUT
VPOT
VRST
tOUT
RESET
INTERNO
59
Reset Externo
Con la terminal externa RESET se inicializa al sistema introduciendo
un nivel bajo de voltaje. (a) Al encender el sistema y (b) en cualquier
instante.
Vcc
VPOT
RESET
VRST
VRST
tOUT
TIME OUT
tOUT
RESET
INTERNO
(a)
(b)
60
Vcc
TIME OUT
VBOT-
VBOT+
tOUT
RESET
INTERNO
61
Desbordamiento
del Watchdog Timer
TIME OUT
tOUT
RESET
INTERNO
62
Mdulos
Generales I/O
Ncleo
AVR
ADC
Flash y
EEPROM
RAM
clkADC
clkI/O
clkASY
Unidad de
Control del reloj
clkCPU
clkFLASH
Reset Lgico
SUT[1:0]
CKSEL[3:0]
Watchdog
Timer
Oscilador del
Watchdog Timer
CKOPT
Oscilador del
Temporizador
Cristal/Resonador
Externo
Cristal Externo
de baja frecuencia
Reloj Externo
Oscilador RC
Externo
Oscilador RC
Interno
63
64
65
Bits CKSEL[3:0]
1010 1111
1001
Oscilador RC Externo
0101 1000
0001 0100
Reloj Externo
0000
Existen otro par de bits (SUT, Set up Time), que junto con los bits
CKSEL, definen un retardo inicial en la operacin del oscilador, despus
de un reset.
66
GND
CKOPT
CKSEL [3:1]
Rango de
Frecuencias (MHz)
Valores recomendados
para C1 y C2 (pF)
1 (*)
101
0.4 0.9
110
0.9 3.0
12 22
111
3.0 8.0
12 22
1.0
12 22
67
00
01
10
11
00
01
10
11
Establecimiento despus de
un bajo consumo
258 ck
258 ck
1K ck
1K ck
1K ck
16K ck
16K ck
16K ck
Retardo despus de
un reset (VCC = 5 V)
4.1 ms
65 ms
4.1 ms
65 ms
4.1 ms
65 ms
68
SUT [1:0]
Establecimiento despus de un
bajo consumo
Retardo despus de un
reset (VCC = 5 V)
00
1 K ck
4.1 ms
01
1 K ck
65 ms
10
32 K ck
65 ms
11
Reservado
69
Oscilador RC Externo
XTAL2
R
XTAL1
C
GND
CKSEL [3:0]
0101
0.1 0.9
0110
0.9 3.0
0111
3.0 8.0
1000
8.0 12.0
70
Oscilador RC Externo
SUT [1:0]
Establecimiento despus de
un bajo consumo
Retardo despus de un
reset (VCC = 5 V)
00
18 ck
01
18 ck
4.1 ms
10
18 ck
65 ms
11
6 ck
4.1 ms
71
CKSEL [3:0]
0001
0010
0011
0100
SUT [1:0]
00
01
4.1 ms
10
65 ms
11
Reservado
72
Reloj Externo
Sin conexin
XTAL2
Seal de Reloj
Externa
XTAL1
GND
SUT [1:0]
00
01
4.1 ms
10
65 ms
11
Reservado
73
74
Nota: 1. El modo Standby est disponible solo con cristales o resonadores externos.
El modo Extended Standby no est disponible en el ATMega8.
75
76
Administracin de la Potencia y
modos SLEEP
clkASY
Reloj Principal
Oscilador del
temporizador
Interfaz de dos
hilos (TWI)
Temporizador 2
EEPROM, Memoria
de programa lista
ADC
Otros I/O
Baja potencia
Ahorro de potencia
clkADC
Oscilador
clkIO
clkFLASH
clkCPU
Reloj Activo
X
X
77