Académique Documents
Professionnel Documents
Culture Documents
ndice
Introduccin
Descripcin general
Arquitectura interna
Organizacin de memoria
Modos de direccionamiento
Juego de instrucciones
Directivas de ensamblador
2
ndice
Reset e interrupciones
Puertos de E/S
Timer 1
Herramientas de programacin y simulacin:
AVRStudio
AVRDragon
Arduino
I ntroduccin
El ATmegaX8PA es un microcontrolador (MCU o C) de la
marca Atmel.
Un microcontrolador es una pequea computadora empotrada
en un C.I. que contiene una CPU sencilla, unidad de reloj,
memoria, y puertos de E/S (timers, IO ports, USARTs,..).
Su reducido coste y tamao lo hacen atractivo para un sin fin
de aplicaciones: control de mquinas de automocin,
dispositivos mdicos, controles remotos, electrodomsticos,
juguetes,...
El AtmegaX8PA pertenece a la familia AVR8 que comparten
una arquitectura comn para todos los modelos pero con
diferencias en cuanto a tipo de encapsulado, puertos y
memoria.
4
Descripcin general
Arquitectura Risc. 8 bits
Frecuencia de reloj de hasta 20 Mhz @ (4.5-5.5V)
Hasta 20 Mips (20Mhz)
Flash EEPROM X=4,8,16,32 Kb ATmegaX8pa
Data SRAM 512/1K/2K bytes
Data EEPROM 256/512 bytes
Descripcin general
Diversos perifricos
Encapsulado PDIP, TQFP, MLF
Versiones bajo consumo: 0-10 Mhz< @(2.7 -5.5V) 0-4 Mhz< @(1.8
-5.5V)
Flash
SRAM
Data Eeprom
ATmega48pa
ATmega88pa
ATmega168pa
ATmega328pa
4Kb
8Kb
16Kb
32Kb
256b
512b
512b
1Kb
512b
1Kb
1Kb
2Kb
Tamao vector
interrpcin
1 instruccin
1 instruccin
2 instrucciones
2 instrucciones
Arquitectura interna
AVR-cpu
Memorias (Flash, Sram,..)
Generacin de reloj
Depuracin
Circuito de Reset
Puertos de E/S:
CAD, Analog Comp.
Ports B,C,D
USART, TWI, SPI
Timers
7
Arquitectura interna
Arquitectura Harvard
Pipeline de 1 nivel:
Execute y pre-fetch
simultneos
Bus de datos de 8 bits
Banco de registros
Arquitectura RISC
Load/Store
ALU con multiplicador
Arquitectura interna
Registros de propsito general
Ocupan las 32 primeras
posiciones de la memoria.
Instrucciones con datos de
tipo inmediato slo pueden
usar los 16 superiores.
Registros X, Y y Z de
16 bits para los modos de
direccionamiento indirectos.
Arquitectura interna
Registros X, Y, Z
Se comportan como registros de 16 bits cuando se usan.
Utilizados para los modos de direccionamiento indirectos.
10
Arquitectura interna
Registro de estado
Se encuentra en el rea de entrada/salida de la memoria
de datos.
Contiene los banderines (flags) que reflejan el resultado de
la ejecucin de algunas instrucciones (principalmente
aritmticas, lgicas, etc.)
- Bit C (Acarreo)
- Bit Z (Zero) . Se pone a 1 para resultado cero, 0 en otro
caso.
- Bit N (Negative). Bit 7 del resultado.
11
Arquitectura interna
Registro de estado (cont.)
- Bit V (Overflow en Ca2) Si A,B son operandos y R
resultado, este bit se calcula como:
S=NV
12
Arquitectura interna
Registro de estado (cont.)
- Bit H (Half Carry) Bit de acarreo de la etapa 3 de la ALU
(semiacarreo).
- Bit T. Bit de propsito general.
- Bit I (Interrupcin). Permite la generacin de
interrupciones cuando es 1 y las enmascara cuando es
0.
13
Arquitectura interna
Puntero de Pila (SPH y SPL)
Se encuentra en la regin de memoria asignada a E/S.
Apunta al rea de pila (Valor inicIal RAMEND).
El SP se decrementa una unidad al meter un dato en pila
(PUSH) pila y se incrementa una unidad al sacarlo (POP). El SP
apunta a la direccin siguiente a la cima de la PILA.
Las llamadas a subrutinas o rutinas de interrupcin (RCALL, etc)
hacen que el SP se decremente en dos unidades y para los
retornos (RET, RETI), el puntero se incrementa en dos unidades.
14
Organizacin de la memoria
Memoria de programa (Flash)
Atmega48pa
Resto dos secciones:
- Arranque Boot
- Aplicacin
Cada rengln es
de tamao Word
15
Organizacin de la memoria
Memoria de datos
32 registros de propsito general (todos los modos de
direccionamiento)
Registros de E/S
- 64 I/O Registers (instrucciones IN, OUT, modo directo e
indirecto)
- 160 Ext Registers
(modos directo e indirecto)
SRAM (modos directo e indirecto)
16
M odos de direccionamiento
Modos de direccionamiento para memoria de datos
Registro directo
Directo
Indirectos
Indirecto
Indirecto con predecremento
Indirecto con postincremento
Indirecto con desplazamiento
Inmediato
17
M odos de direccionamiento
Modos de direccionamiento para memoria de datos
(cont.)
Directo: la instruccin define el registro o registros cuyo
contenido se ver afectado por la propia instruccin.
- Ejemplos: COM R4
MOV R1,R2
18
M odos de direccionamiento
Modos de direccionamiento para memoria de datos
(cont)
Registro E/S: la instruccin define el registro de E/S y el registro
del banco afectados (Slo instrucciones IN y OUT).
19
M odos de direccionamiento
Modos de direccionamiento para memoria de datos
(cont)
Directo: La instruccin contiene la direccin de memoria (16bits)
del dato. Adems contiene un campo (Rd/Rr) que identifica el
registro destino o fuente. Instrucciones LDS, STS.
- Ejemplos:
LDS R23,$D0
STS $12,R1
20
M odos de direccionamiento
Modos de direccionamiento para memoria de datos
(cont)
Indirecto: La instruccin referencia al registro X,Y o Z que
contiene la direccin del operando.
- Ejemplos:
LD R1,X
ST Z,R10
21
M odos de direccionamiento
Modos de direccionamiento para memoria de datos
(cont)
Indirecto con postincremento: La instruccin referencia al
registro X,Y o Z que contiene la direccin del operando, que
despus se incrementa en una unidad.
Ejemplos:
- LD R0,X+
- ST Z+,R1
22
M odos de direccionamiento
Modos de direccionamiento para memoria de datos
(cont)
Indirecto con predecremento: La instruccin referencia al registro
X,Y o Z que tras decrementarse en una unidad, contiene la
direccin del operando.
Ejemplos:
- LD R0,-X
- ST -Z,R1
23
M odos de direccionamiento
Modos de direccionamiento para memoria de datos
(cont)
Indirecto con desplazamiento: La direccin del dato se obtiene
sumando el desplazamiento q (0<q<64) a la direccin contenida
en el registro Y o Z. El resultado no se actualiza en el registro.
Ejemplos:
- LDD R0,Y+10
- STD Z+9,R1
24
M odos de direccionamiento
Modos de direccionamiento para memoria de datos
(cont)
Inmediato. El dato est est codificado en la propia instruccin
25
M odos de direccionamiento
Modos de direccionamiento para memoria de
programa
Constantes de programa (fuera del alcance de esta asignatura).
- Indirecto
- Indirecto con postincremento
Instrucciones
- Directo
- Indirecto
- Relativo
26
M odos de direccionamiento
Modos de direccionamiento para memoria de
programa
Instrucciones Directo.
- JMP y CALL
Instrucciones Indirecto
- IJMP e ICALL
Instrucciones Relativo
- (RJMP y RCALL)
- [-2048 , 2047]
27
Juego de instrucciones
Instrucciones de transferencia de datos
Instrucciones aritmtico-lgicas
Instrucciones de salto
Instrucciones de manejo de bits
Instrucciones de control del sistema
28
Juego de instrucciones
Instrucciones sin operandos
Mnemnico
Operacin
Juego de instrucciones
Instrucciones de transferencia de datos
MOV
LDI
Rd,Rr
Rd,Rr
Rd,k
Copiar registro
Copiar registro W
Cargar dato inmediato
LDS
Rd,k
MOVW
LD
LDD
Rd,X
Rd,X+
Rd,-X
Rd,Y
Rd,Y+
Rd,-Y
Rd,Z
Rd,Z+
Rd,-Z
Rd,Y+q
Rd,Z+q
d,r[0,31]
d,r[0,30]
d[16,31]
k[0,255]
d[0,31]
k<64K
d[0,31]
d[0,31]
q[0,63]
RdRr
Rd+1:RdRr+1:Rr
Rd k
Ninguno
Ninguno
Ninguno
Rd (k)
Ninguno
1
1
1
2
Rd (X)
Rd (X);XX+1
XX-1-,Rd (X)
Rd (Y)
Rd (Y);YY+1
YY-1;Rd (Y)
Rd (Z)
Rd (Z);ZZ+1
ZZ-1;Rd (Z)
Rd (Y+q)
Rd (Z+q)
Ninguno
2
Ninguno
2
30
Juego de instrucciones
Instrucciones de transferencia de datos
STS
K, Rr
ST
X,Rr
X+,Rr
-X,Rr
Y,Rr
Y+,Rr
-Y,Rr
Z,Rr
Z+,Rr
-Z,Rr
Y+q,Rr
Z+q,Rr
STD
LPM
Rd,Z
Rd,Z+
SPM
Almacenar dato en
memoria
Almacenar registro en
memoria
Almacenar registro en
memoria con indirecto
con desplazamiento
Carga memoria de
programa
Almacenar en memoria
de programa
r[0,31]
K[0,64k]
r[0,31]
r[0,31]
(K) Rr
Ninguno
(X) Rr
(X) Rr;XX+1
XX-1-, (X)Rr
(Y)Rr
(Y) Rr;YY+1
YY-1; (Y) Rr
(Z) Rr
(Z)Rr;ZZ+1
ZZ-1; (Z)Rr
(Y+q)Rr
(Z+q) Rr
Ninguno
R0 (Z)
Rd (Z)
Rd (Z); ZZ+1
(Z) R1:R0
Ninguno
2
Ninguno
2
3
Ninguno
31
Juego de instrucciones
Instrucciones de transferencia de datos
IN
OUT
PUS H
POP
Rd,P
P,Rr
Rr
Rd
d[0,31]
P[0,63]
r[0,31]
P[0,63]
r[0,31]
d[0,31]
RdP
Ninguno
1
P Rr
STACKRr
Rd STACK
Ninguno
Ninguno
Ninguno
1
2
2
32
Juego de instrucciones
Instrucciones de transferencia de datos
MOV R1,R2
IN R1,$10
32 registros
64 registros E/S
$00
OUT 12,R3
ST Z,R1
STD Y+1,R30
STS $DE,R4
LD R1,Z
LDD R30,Y+2
LDS R23,$10
SRAM
RAMEND
33
Juego de instrucciones
Instrucciones aritmtico-lgicas
ADD
ADC
ADIW
Rd,Rr
Rd,Rr
Rd,K
SUB
SUBI
Rd,Rr
Rd,K
SBC
SBCI
Rd,Rr
Rd,K
SBIW
Rd,K
AND
ANDI
Rd,Rr
Rd,K
OR
ORI
Rd,Rr
Rd,K
EOR
COM
NEG
INC
DEC
Rd,Rr
Rd
Rd
Rd
Rd
d,r[0,31]
d,r[0,31]
d[24,26,28,30]
K[0,63]
d,r[0,31]
d[16,31]
K[0,255]
d,r[0,31]
d[16,31]
K[0,255]
d[24,26,28,30]
K[0,63]
d,r[0,31]
d[16,31]
K[0,255]
d,r[0,31]
d[16,31]
K[0,255]
d,r[0,31]
d,r[0,31]
d,r[0,31]
d,r[0,31]
d,r[0,31]
Rd Rd+Rr
Rd Rd+Rr+C
Rd+1:Rd Rd+1:Rd + K
Z,N,V,C,H
Z,N,V,C,H
Z,N,V,C
RdRd-Rr
RdRd-K
Z,N,V,C,H
Z,N,V,C,H
RdRd-Rr-C
RdRd-K-C
Z,N,V,C,H
Z,N,V,C,H
Rd+1:Rd Rd+1:Rd - K
Z,N,V,C
RdRdRr
RdRdK
Z,N,V
Z,N,V
RdRdRr
RdRdK
Z,N,V
Z,N,V
RdRdRr
Rd$FF-Rd
Rd$00-Rd
RdRd+1
RdRd-1
Z,N,V
Z,N,V,C
Z,N,V,C
Z,N,V
Z,N,V
1
1
2
1
1
1
1
2
1
1
1
1
1
1
1
1
1
34
Juego de instrucciones
Instrucciones aritmtico-lgicas
CLR
SER
CP
CPC
CPI
Rd
Rd
Rd,Rr
Rd,Rr
Rd,K
Poner a cero
Poner todo a 1
Compara
Compara con carry
Compara inmediato
MUL
MULS
MULSU
Rd,Rr
Rd,Rr
Rd,Rr
d,r[0,31]
d,r[0,31]
d,r[0,31]
d,r[0,31]
d[16,31]
K[0,255]
d,r[0,31]
d,r[0,31]
d,r[0,31]
Rd0
Rd$FF
Rd-Rr
Rd-Rr-C
Rd-K
Z,N,V
Z,N,V
Z,N,V,C,H
Z,N,V,C,H
Z,N,V,C,H
R1:R0Rd x Rr
R1:R0Rd x Rr
R1:R0Rd x Rr
(Rd signed Rr unsigned)
Z,C
Z,C
Z,C
1
1
1
1
1
2
2
2
35
Juego de instrucciones
Instrucciones de salto.
RJMP
JMP (1)
IJMP
RCALL
Etiqueta
Etiqueta
CALL
Etiqueta
(1)
Etiqueta
ICALL
RET
RETI
CPSE
Rd,Rr
SBRC
Rr,b
SBRS
Rr,b
Salto relativo
Salto
Salto indirecto
Llamada a subrutina
relativa
Llamada a subrutina
Llamada a subrutina
indirecta
Regreso de subrutina
Regreso de interrup.
Compara, esquiva si
iguales
Esquiva si el bit est a
cero
Esquiva si el bit est a
uno
d,r[0,31]
r[0,31]
b[0,7]
r[0,31]
b[0,7]
PCPC+ Etiqueta +1
PC Etiqueta
PC (Z)
STACK PC
PCPC+ Etiqueta +1
STACK PC
PC Etiqueta
STACK PC
PC (Z)
PC STACK
PC STACK
Si Rd=Rr PC PC+2
( 3)
Si (Rd(b)=0)
PC PC+2 ( 3)
Si (Rd(b)=1)
PC PC+2 ( 3)
Ninguno
Ninguno
Ninguno
Ninguno
2
2
3
3
Ninguno
3
Ninguno
Ninguno
I
Ninguno
4
4
4
01/02/03
Ninguno
01/02/03
Ninguno
01/02/03
36
Juego de instrucciones
Instrucciones de salto.
SBIC
SBIS
BREQ
BRNE
BRCS
P,b
BRCC
BRSH
P[0,31]
b[0,7]
P[0,31]
b[0,7]
Etiqueta [-64,63]
Etiqueta [-64,63]
Etiqueta [-64,63]
Etiqueta [-64,63]
Etiqueta [-64,63]
Si (I/o(P,b)=0)
PC PC+2 ( 3)
Si (I/O(P,b)=1)
PC PC+2 ( 3)
Si (Z=1)
PC PC+ Etiqueta
Si (Z=0)
PC PC+ Etiqueta
Si (C=1)
PC PC+ Etiqueta
Si (C=0)
PC PC+ Etiqueta
Si (C=1)
PC PC+ Etiqueta
Ninguno
Ninguno
1o2o
3
1o2o
3
1o2
Ninguno
1o2
Ninguno
1o2
Ninguno
1o2
Ninguno
1o2
Ninguno
+1
+1
+1
+1
+1
37
Juego de instrucciones
Instrucciones
de salto.
BRLO
Etiqueta Salta si menor
Etiqueta [-64,63]
BRMI
Etiqueta [-64,63]
Etiqueta [-64,63]
BRPL
BRHS
Etiqueta [-64,63]
BRHC
Etiqueta [-64,63]
BRTS
Etiqueta [-64,63]
BRTC
Etiqueta [-64,63]
BRVS
BRVC
BRIE
BRID
Etiqueta [-64,63]
Etiqueta [-64,63]
Etiqueta [-64,63]
Etiqueta [-64,63]
Si (C=0)
PC PC+ Etiqueta
Si (N=1)
PC PC+ Etiqueta
Si (N=0)
PC PC+ Etiqueta
Si (H=1)
PC PC+ Etiqueta
Si (H=0)
PC PC+ Etiqueta
Si (T=1)
PC PC+ Etiqueta
Si (T=0)
PC PC+ Etiqueta
Si (V=1)
PC PC+ Etiqueta
Si (V=0)
PC PC+ Etiqueta
Si (I=1)
PC PC+ Etiqueta
Si (I=0)
PC PC+ Etiqueta
Ninguno
1o2
Ninguno
1o2
Ninguno
1o2
Ninguno
1o2
Ninguno
1o2
Ninguno
1o2
Ninguno
1o2
Ninguno
1o2
Ninguno
1o2
Ninguno
1o2
Ninguno
1o2
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
38
Juego de instrucciones
Instrucciones de salto.
BRGE
BRLT
Etiqueta [-64,63]
Etiqueta [-64,63]
Booleana
(N V) = 0
(N V) = 1
Z=1
Z= 0
C=0
C=1
C=1
C=0
N=1
N=0
V=1
V=0
Z=1
Z=0
Si (NV=0)
PC PC+ Etiqueta +1
Si (NV=1)
PC PC+ Etiqueta +1
Mnemonico
BRGE
BRLT
BREQ
BRNE
BRCC/BRSH
BRCS/BRLO
BRCS
BRCC
BRMI
BRPL
BRVS
BRVC
BREQ
BRNE
Ninguno
1o2
Ninguno
1o2
Comentario
Signo
Signo
Signo/Sin signo
Signo/Sin signo
Sin signo
Sin signo
Simple
Simple
Simple
Simple
Simple
Simple
Simple
Simple
39
Juego de instrucciones
Instrucciones de bit y de bit-test.
LSL
LSR
Rd
ROL
Rd
Desplazamiento a la
izquierda
Desplazamiento a la
derecha
Rotacin a la izquierda
ROR
Rd
Rotacin a la derecha
ASR
Rd
Rd
Desplazamiento
aritmtico a la derecha
d[0,31]
d[0,31]
d[0,31]
d[0,31]
d[0,31]
Rn
LSR
Rn
LSL
Rn
ASR
Rd(n+1)Rd(n),
Rd(0)0, C Rd(7)
Rd(n)Rd(n+1),
Rd(7)0, C Rd(0)
Rd(n+1)Rd(n),
Rd(0)C, C Rd(7)
Rd(n)Rd(n+1),
Rd(7)C, C Rd(0)
Rd(n)Rd(n+1),
Rd(7)Rd(7), C Rd(0)
Z,C,N,V,H
1
Z,C,N,V
1
Z,C,N,V,H
1
Z,C,N,V,
1
Z,C,N,V,
1
Rn
Rn
ROR
ROL
40
Juego de instrucciones
Instrucciones de bit y de bit-test.
SWAP Rd
SBI
P,b
Intercambia nibbles
Poner a 1 el bit b del puerto IO
CBI
P,b
SEcc
1
CLcc
1
d[0,31]
b[0,7]
P[0,31]
b[0,7]
P[0,31]
Rd(3..0)Rd(7.4)
IO(P,b)1
Ninguno
Ninguno
IO(P,b)0
Ninguno
1
2
2
cc
1
cc
1
cc= C,N,T,Z,I,V,H,S
41
Juego de instrucciones
Instrucciones de control
NOP
BREAK
WDR
SLEEP
Nada
Para depuracin
Reinica el temporizador del perro
guardin
Dormir
Ninguno
Ninguno
Ninguno
1
N/A
1
Ninguno
42
Directivas de ensamblador
Directivas de ensamblador
Son comandos al programa que genera el cdigo objeto y que
se encuentran mezclados en el fichero fuente con las
instrucciones del microcontrolador .
CSEG-Code Segment
- Sintaxis: .CSEG
DSEG-Date Segment
- Sintaxis: .DSEG
43
Directivas de ensamblador
Directivas de ensamblador(cont.)
BYTE Reserva bytes a una variable
44
Directivas de ensamblador
Directivas de ensamblador(cont.)
DEF Asigna un nombre simblico a un
registro.
- Sintaxis: .DEF symbol=register
- .DEF temp = r16
- .DEF ior= r0
EQU Smbolo igual a expresin
45
Directivas de ensamblador
Directivas de ensamblador(cont.)
ORG Establece la direccin de memoria
46
Arquitectura interna
Reloj del sistema y opciones de reloj
Fuentes
- Externo
- Oscilador de cristal
- Oscilador RC calibrado
- Oscilador del
perro guardin.
Actan sobre:
- AVR clock control unit
mediante un Prescaler
- Circuito de Reset
47
Arquitectura interna
Reloj del sistema y opciones de reloj (cont.)
La fuente de reloj se configura mediante la programacin de
unos fusibles.
De fbrica RC a 8MHz con Prescaler de 8.
Secuencia de puesta en marcha del reloj (Clock startup
sequence)
Fusibles
48
Arquitectura interna
Reloj del sistema y opciones de reloj(cont.)
Unidad de control y distribucin de reloj
49
Arquitectura interna
Circuito de Reset
Provoca que el sistema pase a un estado inicial conocido.
Los registros de ES toman sus valores por defecto.
Se busca la instruccin en la posicin asociada al vector de
RESET.
Existen varias causas que generan un RESET:
Power on Reset
Reset externo
Perro guardin (Watchdog Reset)
Detector de apagones (Brown-out detectors)
50
I nterrupciones
Qu es una interrupcin?
Evento que requiere la suspensin (interrupcin) del programa
actual y la ejecucin de una rutina concreta (rutina de
interrupcin), al final de la cual se devuelve el control al
programa interrumpido.
I nterrupciones
El SP del AtmegaX8pa se inicia automticamente a la
posicin ms alta de la memoria de datos.
La instalacin de la rutina de interrupcin requiere situar
la instruccin jmp o rjmp en la posicin adecuada del
vector de interrupcin.
Modelos Atmega168pa y Atmega328pa requiere
instruccin JMP.
Modelos Atmega48pa y Atmega88pa requiere
instruccin RJMP.
La tabla de vectores de interrupcin depende del modelo.
52
53
I nterrupciones
Para modelos con seccin de arranque, la tabla de
vectores o/y reset puede ubicarse o en la seccin de
aplicacin o arranque dependiendo de unos fusibles.
54
I nterrupciones
Para que se procesen las interrupciones, el
.CSEG
.ORG 0
JMP main
JMP IRQ0_handler
JMP IRQ_handler
..
main:
interrupciones.
IRQ0_handler:
OUT SREG,r16
RETI
IRQ1_handler:
IN r16,SREG
PUSH r16
OUT SREG,r16
POP r16
RETI
55
Entrada / Salida
Puertos de entrada/salida
PB7-o
PC7-0
PD7-0
Temporizadores
Timer 0
Timer 1
56
Entrada / Salida
Acceso a los puertos y al timer1
Puertos B, C y D
-
Zona baja de la ES
Zona alta de la ES
$00
Registros R0-R31
$1F
$20
ES
$5F
$60
Extensin ES
$FF
$100
Timer1
-
Extensin ES
SRAM
57
Puertos E/S
Son entradas / salidas digitales que permiten escribir
valores lgicos en cada uno de los pines.
Tpicamente: Uno=5V, Cero=0V
Existen tres puertos de 8 bits: Puerto B, Puerto C y
Puerto D
Los puertos tienen funciones alternativas:
Ejemplo PB0: Capturador de eventos del temporizador Salida
de reloj interno Interrupcin 0 ante cambio en el PIN
Activar la funcin alternativa de un PIN no afecta al resto del pines
del puerto
58
Puertos E/S
Configuracin
Resistencia Pull-up
Salida
Entrada
59
Puertos E/S
Los pines del puertos tienen resistencias de Pull-Up
que pueden activarse
Tienen un circuito de sincronizacin para leer los
valores lgicos.
Cada puerto tiene asociado 3 registros: (x={B,C,D})
DDRX7-0: Configura la direccin de cada PIN (entrada o salida)
PORTX7-0: Registro de datos del puerto para escribir en el puerto
PINX7-0: Permite leer directamente en el PIN independientemente
del valor DDRXi
60
Puertos E/S
Uso del puerto B
(C y D son similares)
Registro DDRB7-0 (R/W): El valor del bit DDBX indica si el pin PBX
es una entrada (0) o es salida (1)
61
Puertos E/S
Uso del puerto B
Registro PORTB (R/W):
62
Puertos E/S
Ejemplo 1: Establecer el puerto B como salida y activar el
PINB3 a '1' y el PINB6 a '0'
LDI
OUT
S BI
CBI
R16, 0xFF
DDRB, R16 Puer t o ent er o c omo s al i da
PORTB, 3 Es t abl ec er el bi t 3 a 1
PORTB, 6 Es t abl ec er el bi t 6 a 0
63
Puertos E/S
Ejemplo 2: Establecer el PINC4 del puerto C como
entrada y tomar una decisin en funcin del valor
ledo:
CBI
DDRC, 4
S BI S PI ND, 4
J MP
J MP
Temporizadores
Hay 3 timers disponibles del que slo se estudiar el
Timer 1 de 16bit
Funcionalidad:
Generar eventos de forma peridica
Contador de eventos
Generador de seales
PWM (Pulse Width Modulartor)
Temporizadores
Esquema general del temporizador 1 (16 bits)
66
Temporizadores
Pre-escalador:
Divisor de frecuencia previo al reloj del temporizador.
Permite disminuir la frecuencia de cuenta
67
Temporizadores
De los modos de operacin posibles estudiaremos:
Normal: Cuenta ascendente de manera indefinida. Despus del
estado de cuenta $FFFF pasa al $0000
Puesta a cero al llegar a un valor: El contador se pone a cero
automticamente cuando se alcanza el valor establecido en
OCR1A
Registros involucrados
Configuracin: TCCR1A y TCCR1B
Estado de cuenta: TCNT1H y TCNT1L
Comparadores: OCR1AH ,OCR1AL, OCR1BH y OCR1BL
68
Temporizadores
Registro de configuracin:
Solo estudiaremos 4 bits el TCCR1B
El resto se pueden quedar sin inicializar, por defecto todos estn a
cero
69
Temporizadores
Frecuencia de funcionamiento del temporizador en
funcin de 3 bits (CS12,CS11,CS10)
CS12
CS11
CS10 Descripcin
Temporizador parado
Frecuencia clk/1
Frecuencia clk/8
Frecuencia clk/64
Frecuencia clk/256
Frecuencia clk/1024
70
Temporizadores
Modos de funcionamiento:
Modo Normal:
El bit WGM12 debe configurarse a '0' (registro TCCR1B).
El contador cuenta desde 0x0000 a 0xFFFF y vuelta a 0x0000, a la
frecuencia de reloj configurada.
En cada paso por 0x0000 se activa un bit llamado TOV1
Modo CTC (Clear Timer on Compare Match):
El bit WGM12 debe configurarse a '1' (registro TCCR1B)
El contador cuenta desde 0x0000 hasta que su contenido es igual al
almacenado en OCR1A (16 bits). Tras esto se pone
automticamente a 0x0000.
Cuando esto ocurre se activa un bit llamado OCF1
71
Temporizadores
Registros de habilitacin de interrupciones
72
Temporizadores
Interrupciones:
Si
Temporizadores
Importante: El contador es de 16bits y el bus de 8. La
escritura de registros de 16bits se debe hacer en 2
pasos y en un orden correcto:
1 Parte alta del registro. Por ejemplo OCR1AH
2 Parte baja del registro. Por ejemplo OCR1AL
LDI R16, 0x 10
S TS OCR1AH, R16 Es c r i t ur a de l a par t e al t a, r eal ment e no
s e es c r i be el r egi s t r o, s e queda en un
r egi s t r o t empor al
LDI R16, 0x 02
S TS OCR1AL, R16 S e di s par a es c r i t ur a s i mul t nea de 16
bi t s : 8 des de un r egi s t r o t empor al y 8
des de el bus del s i s t ema
74
Temporizadores
Ejemplo: Con un micro con reloj a 1Mhz conseguir que
el contador se reinicie 1 vez por segundo
1 Bajar la frecuencia del reloj con el preescalador:
1Mhz/64=15625Hz
2 Cargar en OCR1A el valor 15625 = $3D09
3 Activa el auto-clear cuando el contenido el temporizador sea
igual a OCR1A.
Cada vez que se cicle el contador ha pasado un segundo
75
Temporizadores
Solucin del ejemplo
LDI
S TS
R16, 0x 3D
OCR1AH, R16
LDI
S TS
R16, 0x 09
OCR1AL, R16
LDI
R16, 0b00001011
S TS
TCCR1B, R16
76
Bibliografa
Instruction Set datasheet.
Atmegax8pa datasheet.
Microcontroller projects with the atmel controller. Gadre,
Dhananjay.
Atmel AVR microcontroller primer: programming and
interfacing. Barlett and Pack
Embedded Systems Design with the Atmel AVR
Microcontroller. Steven Barret.
77