Professional Documents
Culture Documents
ATmega8535
ATmega8535L
Página 0
UNIDAD I.- ARQUITECTURA DEL MICROCONTROLADOR ATMEGA8535
• Características Periféricas
- Dos Temporizadores/Contadores de 8-bits con Divisor separado y Modos de Comparación
- Un Temporizador/Contador de 16-bit con Divisor separado, Modo de comparación y Modo de
Captura
- Contador de Tiempo Real con Oscilador Separado
- Cuatro canales PWM
- Convertidor Análogo Digital de 8-Canales y 10-Bits de Resolución
8 Canales con Referencia a una sola terminal común de tierra (Single-ended)
7 Canales Diferenciales solo para el encapsulado TQFP
2 Canales Diferenciales con Ganancia Programable a 1x, 10x o 200x solo para el encapsulado TQFP
- Interfaz Serial a Dos Hilos tipo “Byte-orientado” (TWI)
- USART Serie Programable
- Interfaz Serie SPI Maestro / Esclavo
- Temporizador de Vigilancia Programable (Timer Watchdog) con Oscilador Separado Integrado en el
Chip
- Comparador Análogo Integrado en el Chip
• Voltajes de operación
- 2,7 - 5.5V para el ATmega8535L
- 4.5 - 5.5V para el ATmega8535
• Grados de Velocidad
– 0 - 8 MHz para el ATmega8535L – 0 - 16 MHz para el ATmega8535
Página 1
Configuración y descripción de Terminales
PDIP
ATMEGA8535
(MISO) PB6 7 34 PA6 (ADC6)
(SCK) PB7 8 33 PA7 (ADC7)
RESET 9 32 AREF
Vcc 10 31 GND
GND 11 30 AVCC
XTAL2 12 29 PC7
XTAL1 13 28 PC6
(RXD) PD0 14 27 PC5 (TOSC2)
(TXD) PD1 15 26 PC4 (TOSC1)
(INT0) PD2 16 25 PC3
(INT1) PD3 17 24 PC2
(OC1B) PD4 18 23 PC1 (SDA)
(OC1A) PD5 19 22 PC0 (SCL)
(ICP1) PD6 20 21 PD7 (Oc2)
TQFP/MLF
PLCC
PB2 (INT2/AIN0)
PB3 (OC0/AIN1)
PB0 (XCK/T0)
PB2 (INT2/AIN0)
PB3 (OC0/AIN1)
PA0 (ADC0)
PA1 (ADC1)
PA2 (ADC2)
PA3 (ADC3)
PB0 (XCK/T0)
PB4 (SS)
PB1 (T1)
PA0 (ADC0)
PA1 (ADC1)
PA2 (ADC2)
PA3 (ADC3)
PB4 (SS)
PB1 (T1)
GND
Vcc
GND
Vcc
44
43
42
41
40
39
38
37
36
35
34
2
6
5
4
3
1
44
43
42
41
40
GND
(SDA) PC1
(INT1) PD3
(OC1B) PD4
(OC1A) PD5
(ICP1) PD6
(Oc2) PD7
(SCL) PC0
PC2
PC3
Vcc
GND
(SDA) PC1
(INT1) PD3
(OC1B) PD4
(OC1A) PD5
( ICP1) PD6
(Oc2) PD7
(SCL) PC0
PC2
PC3
Vcc
Página 2
Descripción General.
El ATmega8535 es un microcontrolador CMOS de baja potencia, de 8-bits, basado en la
arquitectura mejorada AVR RISC. Mediante la ejecución de instrucciones en un solo ciclo de
reloj, el ATmega8535 logra acercarse al procesamiento de Un Millón de Instrucciones Por
Segundo (MIPS) por MHz permitiendo al diseñador del sistema optimizar el consumo de
energía versus velocidad de procesamiento.
Diagrama de Bloques
AVCC
ADC
MUX & ADC INTERFACE TWI
AREF
TIMERS/
PROGRAM STACK OSCILLATOR
COUNTERS
COUNTER POINTER
PROGRAM INTERNAL
SRAM
FLASH OSCILLATOR
XTAL1
CONROL INTERNAL
LINES INTERRUPT CALIBRATED
ALU UNIT
OSCILLATOR
+ COMP.
_ INTERFACE
PB0-PB7 PD0-PD7
Página 3
El núcleo AVR combina un rico conjunto de instrucciones con 32 registros de trabajo de
propósito general. Los 32 registros están conectados directamente a la unidad aritmética y
lógica (ALU), permitiendo que dos registros independientes sean accesados en una sola
instrucción ejecutada en un ciclo de reloj. La arquitectura resultante genera un código más
eficiente mientras que el logro de procesamiento es de hasta diez veces más rápido que en los
microcontroladores CISC convencionales.
Página 4
Núcleo AVR
Introducción
Esta sección discute de forma general la arquitectura del núcleo AVR. La función
principal del núcleo del CPU es asegurar la correcta ejecución de los programas. El procesador
debe ser capaz de accesar memorias, realizar cálculos, controlar periféricos, y manejar las
interrupciones.
Descripción de la Arquitectura
Interrupt
32x8 Unit
Instruction General
Register Purpose SPI
Registers Unit
Instruction Watchdog
Decoder
Indirect Addressing
Timer
Direct Addressing
ALU Analog
Control Lines Comparator
I/O Module 1
I/O Module n
EEPROM
I/O Lines
Página 5
operandos son sacados del Archivo de Registros, la operación es ejecutada, y el resultado se
regresa al Archivo de Registros - en un solo ciclo de reloj.
Seis de los 32 registros pueden ser usados como tres registros apuntadores de 16-bits
en el direccionamiento indirecto para el acceso a direcciones en el Espacio de Datos-
habilitando un eficiente cálculo de direcciones. Uno de estos apuntadores de dirección se puede
utilizar también como un apuntador de dirección para tablas almacenadas en la memoria de
programa (tablas look-up). Estas funciones son añadidas a los registros de 16 bits X, Y y Z-,
que se describe más adelante en esta sección.
La ALU soporta operaciones aritméticas y lógicas entre registros o entre una constante
y un registro. También pueden ser ejecutadas en la ALU operaciones de un solo Registro.
Después de una operación aritmética, el Registro de Estado es actualizado para reflejar la
información sobre el resultado de la operación.
Un flexible módulo para interrupciones tiene sus registros de control en el espacio I/O
con un bit adicional de Habilitación Global de Interrupción en el Registro de Estado. Todas las
interrupciones tienen un Vector de Interrupción separado en la tabla de Vectores de
Interrupción. Las interrupciones tienen una prioridad de acuerdo con la posición del Vector de
Interrupción. Cuanto menor sea la dirección del Vector de Interrupción, mayor es la prioridad.
El espacio de memoria de I/O contiene 64 direcciones para funciones periféricas del CPU
así como Registros de Control, SPI, y otras funciones de E/S. La memoria de I/O puede ser
accesada directamente, o como localidades de Espacio de Datos, direcciones 0x20 - 0x5F,
después de las direcciones del Archivo de Registros.
Página 6
Unidad Aritmética y Lógica- ALU
La ALU AVR de alto rendimiento opera en conexión directa con los 32 registros de
trabajo de propósito general. Dentro de un solo ciclo de reloj, son ejecutadas operaciones
aritméticas entre registros de propósito general o entre un registro y un dato inmediato. Las
operaciones de la ALU se dividen en tres categorías principales - aritmética, lógica, y funciones
a nivel de bits. Algunas implementaciones de la arquitectura también proveen un poderoso
multiplicador soportando así multiplicaciones de números con signo o sin signo y además
formato fraccional. Véase "el Conjunto de Instrucciones " para una descripción detallada.
En esta sección solo se describirán los registros del CPU con la finalidad de entender la
separación entre estos, y los registros periféricos.
Registro de Estado
Este Registro también llamado Registro de Banderas contiene información de estado del
resultado de la última instrucción aritmética ejecutada. Esta información puede utilizarse para
alterar el flujo del programa con el fin de realizar operaciones condicionales. Tenga en cuenta
que el Estado de Registro se actualiza después de todas las operaciones de la ALU, tal como
se especifica en la Referencia del Conjunto de Instrucciones. Esto, en muchos casos, elimina la
necesidad de utilizar instrucciones de comparación, resultando un código más compacto y
rápido.
El bit de Habilitación Global de Interrupción debe ser puesto en uno para habilitar las
interrupciones. El control de habilitación individual de interrupción se realiza en registros
de control por separado. Si el bit de Habilitación Global de Interrupción se borra, ninguna
de las interrupciones se habilitará independiente de que se hayan habilitado las
interrupciones individualmente. El bit-I es borrado por hardware después de que ha
ocurrido una interrupción, y es puesto en uno por la instrucción RETI para habilitar
Página 7
interrupciones posteriores. El bit-I también puede ser borrado o puesto en uno por
programación mediante las instrucciones SEI y CLI, como se describe en la referencia
conjunto de instrucciones.
Las instrucciones copia de bit BLD (Bit de carga) y BST (Almacenamiento de Bit) utilizan
el bit-T como fuente o destino para la manipulación de algún bit. Un bit de un registro
desde el Archivo de Registros se puede copiar en T por la instrucción BST, y un bit en T
se puede copiar en un registro del archivo de Registros con la instrucción BLD.
Página 8
Archivo de Registros
El Archivo de Registros está optimizado para el conjunto de instrucciones RISC del AVR
Mejorado. Con el fin de alcanzar el grado de rendimiento y flexibilidad, los siguientes esquemas
de entrada/salida son soportados por el Archivo de Registros:
7 0 Dirección
R0 0x00
R1 0x01
R2 0x02
...
R13 0x0D
Registros de R14 0x0E
Trabajo de R15 0x0F
Proposito
General R16 0x10
R17 0x11
...
R26 0x1A Byte Bajo del Registro X
R27 0x1B Byte Alto del Registro X
R28 0x1C Byte Bajo del Registro Y
R29 0x1D Byte Alto del Registro Y
R30 0x1E Byte Bajo del Registro Z
R31 0x1F Byte Alto del Registro Z
Página 9
Los Registros X, Y, y Z
Los registros R26 .. R31 también tienen algunas funciones adicionales para uso de
propósito general. Estos registros son apuntadores de 16 bits para el direccionamiento indirecto
en la memoria de Datos. Los tres registros de direccionamiento indirecto X, Y y Z se definen
como se describe en la Figura 6.
Figura 6. Registros X, Y, y Z
15 XH XL 0
Registro-X 7 0 7 0
R27 (0x1B) R26 (0x1A)
15 YH YL 0
Registro-Y 7 0 7 0
R29 (0x1D) R28 (0x1C)
15 ZH ZL 0
Registro-Z 7 0 7 0
R31 (0x1F) R30 (0x1E)
Página 10
El Apuntador de Pila AVR se implementa como dos registros de 8 bits en el espacio de
I/O. El número de bits utilizados en realidad es dependiente del microcontrolador usado. Tenga
en cuenta que el espacio de datos en algunos microcontroladores AVR es tan pequeño que
sólo se necesita SPL. En este caso, el Registro SPH no estará presente.
Lectura/Escritura R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W
Valor inicial 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Estos son los principales registros que controla el procesador, sin embargo existen otros
registros que son transparentes para el usuario.
Este Registro provee información acerca de cuál fuente de reset causa un reset al MCU,
y es explicado en la pagina 18.
Página 11
Los puertos de E/S del AVR se restablecen inmediatamente a su estado inicial, cuando
una fuente de restablecimiento se activa. Esto no requiere que ninguna fuente de reloj este en
funcionamiento.
Después de que todas las fuentes de reset se van a inactivo, se invoca a un contador
de retardo, que extiende el reset interno. Esto permite que la alimentación llegue a un nivel
estable antes de que inicie la operación normal. El periodo de tiempo del contador de retardo
es definido por el usuario a través de los Fusibles CKSEL. Las diferentes selecciones para el
período de retardo se presentan en el tema " Fuentes de Reloj "en la página 19.
Fuentes de Reset
• Brown-out Reset (Reset por bajo voltaje). El MCU se reinicia cuando la tensión de
alimentación VCC está por debajo del voltaje de umbral Brown-out Reset (VBOT) si es
que el Detector de Brown-out está habilitado.
Página 12
La figura 9 muestra la señal de un oscilador con un cristal de cuarzo al
encender la fuente de alimentación.
Figura 10. Lógica de Reset
DATA BUS
PORF
BORF
EXTRF
WDRF
VCC Power-on
Reset Circuit
Brown-out
BODEN Reset Circuit
BODLEVEL
INTERNAL RESET
Pull-up Resistor
RESET Spike Q
Filter Reset Circuit S
COUNTER RESE T
R
Watchdog
Timer
Watchdog
Oscillator
CKSEL[3:0]
SUT[1:0]
Página 13
Tabla 1. Características del Reset
Página 14
contador de retardo, el cual determina cuánto tiempo se mantiene el dispositivo en RESET
después de que se alcanza VCC. La señal de RESET es activada de nuevo, sin retardo,
cuando VCC disminuye por debajo del nivel de detección.
Página 15
Reset Externo (External Reset)
El circuito BOD puede ser habilitado o deshabilitado con el fusible BODEN. Cuando es
habilitado BOD (BODEN programadas), y VCC disminuye a un valor por debajo del nivel de
activación (VBOT- en la Figura 14), y el Reset Brown-out es activado inmediatamente. Cuando
aumenta VCC por encima del nivel de activación (VBOT + en la Figura 14), el contador de retardo
arranca al MCU después de que el periodo de tiempo tTOUT ha caducado.
El circuito BOD sólo detecta una disminución en el voltaje VCC si el voltaje se mantiene
por debajo del nivel de activación por más de un periodo mayor a tBOD indicado en la tabla 1.
Página 16
Figura 14. Reset Brown-out Durante la Operación
Página 17
Registro de Control y Estado del MCU- MCUCSR
El Registro de Control y Estado del MCU provee información acerca de cuál fuente de
reset causa un reset al MCU
Para hacer uso de las Banderas de Reset para identificar una condición de reinicio, el
usuario deberá leer y resetear al MCUCSR lo antes posible en el programa. Si el registro se
borra
antes de que ocurra otro reset, la fuente de este reset puede encontrarse mediante el examen
de las Banderas de Reset.
Página 18
Figura 17. Distribución de las Señales de Reloj
CPU Clock-clkCPU
El CPU Clock es enrutado a las partes concernientes a la operación del núcleo del
sistema AVR. Ejemplo de tales módulos son el Archivo de Registros de Propósito General, el
Registro de Estado y la memoria de datos que retiene la dirección indicada por el Apuntador de
Stack. Deteniendo el reloj del CPU se inhibe al núcleo de la ejecución de cálculos y operaciones
generales.
I/O Clock-clkI/O
El reloj de I/O es usado por la mayoría de los módulos de I/O, tales como
Timers/Counters, SPI y USART. El reloj de I/O también es usado por el módulo de
interrupciones externas, pero note que algunas interrupciones externas son detectadas por la
lógica asíncrona permitiendo que tales interrupciones sean detectadas aun si el reloj de I/O es
detenido. También note que el reconocimiento de direcciones en el modulo TWI es llevado a
cabo asincrónicamente cuando el reloj clkI/O es detenido, habilitando la recepción de direcciones
TWI en todos los modos de hibernación.
FLASH Clock-clkFLASH
El reloj para la memoria flash controla la operación de la Interface flash. El reloj flash
usualmente esta activo simultáneamente con el reloj del CPU.
Página 19
ADC Clock-clkADC
El ADC es provisto con un reloj dominante dedicado. Esto permite detener al CPU y al
reloj clkI/O a fin de reducir el ruido generado por la circuitería digital. Esto da una mayor
precisión en el resultado de la conversión del ADC.
Fuentes de Reloj
El dispositivo cuenta con las siguientes opciones como fuentes de reloj, seleccionadas
mediante los bits de fusible flash mostrados en la tabla 2. El reloj desde la fuente seleccionada
es introducido al generador de reloj AVR y direccionado hacia el módulo apropiado.
Nota 1. Para todos los fusibles “1” significa no programado y “0” significa programado
Las diferentes opciones de selección de reloj son dadas más adelante. Cuando el CPU
despierta del modo Power-down o del modo Power-save, la fuente de reloj seleccionada es
usada para generar el tiempo de arranque, asegurando la operación estable del oscilador antes
de que inicie la ejecución de instrucciones. Cuando el CPU inicia desde el reset, hay un retardo
adicional permitiendo que la alimentación alcance un nivel estable antes de que comience la
operación normal. El oscilador watchdog es usado para temporizar esta parte de tiempo real del
tiempo de arranque. El numero de ciclos del oscilador WDT usado para este propósito, es
mostrado en la tabla 3. La frecuencia del oscilador del watchdog es dependiente del voltaje de
alimentación como se muestra en la sección “características típicas del ATmega8535” en la
página 266 del manual.
Oscilador a Cristal
XTAL1 y XTAL2 son la entrada y salida respectivamente de un amplificador inversor el
cual puede ser configurado para usarse como un oscilador interno, tal como se muestra en la
figura 19. Puede ser usado un oscilador de cuarzo o un resonador cerámico. El fusible CKOPT
selecciona entre dos diferentes modos del amplificador oscilador. Cuando CKOPT es
Página 20
programado, la salida del oscilador oscilara al máximo. Este modo es apropiado cuando se
opera en un ambiente muy ruidoso o cuando desde la salida XTAL2 se maneja un segundo
driver de reloj. Este modo tiene un amplio rango de frecuencia. Cuando CKOPT no es
programado, el oscilador tiene una oscilación de salida muy pequeña. Esto reduce
considerablemente el consumo de energía. Este modo tiene un rango de frecuencia limitado y
este no puede ser usado para manejar otro driver de reloj.
El oscilador puede operar en tres modos diferentes, cada uno de ellos optimizado para
un rango de frecuencias especifico. El modo de operación es seleccionado con los fusibles
CKCEL3..0 como se muestra en la tabla 4.
Página 21
Tabla 5. Selección del tiempo de arranque para osciladores a cristal.
Notas:
1. Estas opciones solo deben utilizarse cuando no operan cerca de la frecuencia máxima del
dispositivo, y solo si la estabilidad de la frecuencia en el tiempo de arranque no es importante
para la aplicación. Estas opciones no son adecuadas para los cristales.
2. Estas opciones están destinadas para el uso con resonadores de cerámica y se garantizará la
estabilidad de la frecuencia en el arranque.
Página 22
Tabla 6. Selección del Tiempo de Arranque cuando se conecta un Oscilador a Cristal de Baja
Frecuencia
Nota: 1. Esta opción deberá ser usada solo si la estabilidad de la frecuencia en el tiempo de
arranque no es importante para la aplicación
Oscilador Externo RC
Para aplicaciones con tiempos insensibles, la configuración externa del circuito RC que
se puede hacer, se muestra en la figura 20. La frecuencia es más o menos estimada por la
ecuación f . Donde C deberá ser al menos de 22pf. Al programar el fusible CKOPT, el
usuario puede habilitar la conexión de un condensador interno de 36pf entre la terminal XTAL1
y tierra, eliminando así la conexión de un condensador externo. Para obtener más información
sobre el funcionamiento del oscilador y detalles sobre cómo elegir R y C, refiérase a la nota de
aplicación oscilador externo RC.
El oscilador puede operar en cuatro modos diferentes, cada uno optimizado para un
rango de frecuencia específico. El modo de funcionamiento es seleccionado por los bits de
fusible CKSEL3..0 como se muestra en la tabla 7.
Página 23
Tabla 7. Modos de Operación del Oscilador Externo RC.
Cuando es seleccionado este oscilador, el tiempo de arranque es seleccionado por los fusibles
SUT tal como se muestra en la tabla8.
Nota: 1. Esta opción no deberá usarse cuando opere cerca de la máxima frecuencia del dispositivo
Página 24
Tabla 9. Modos de Operación del Oscilador RC Calibrado Interno.
Cuando este oscilador es seleccionado, el tiempo de arranque está determinado por los
fusibles SUT como se muestra en la tabla 10. XTAL1 y XTAL2 deberán de estar
desconectados.
Tabla 10. Selección del tiempo de arranque para el oscilador RC interno calibrado.
Página 25
Cuando OSCCAL es cero, es seleccionada la frecuencia más baja disponible. Escribiendo
valores que no sean cero a este registro, se incrementa la frecuencia del Oscilador Interno.
Escribiendo 0xFF a este registro se selecciona la frecuencia más alta disponible. El Oscilador
calibrado es usado para temporizar el acceso a la memoria EEPROM y Flash. Si se escribe en
la Flash o en la EEPROM no calibre a más del 10% arriba de la frecuencia nominal. De otra
manera la escritura a la Flash o a la EEPROM puede fallar. Note que se intenta calibrar al
oscilador a una frecuencia de 1.0, 2.0, 4.0, y 8Mhz. Como se indica en la tabla 11, el ajuste a
otros valores no se garantiza.
Reloj Externo
Para manejar el dispositivo con una fuente de reloj externa, XTAL1 deberá de conectarse
como se muestra en la figura 21. Para arrancar el dispositivo con una fuente de reloj externa,
los fusibles CKSEL deberán de ser programados con “0000”. Programando el fusible CKOPT, el
usuario puede habilitar la conexión del condensador interno de 36pf entre XTAL1 y tierra.
Página 26
Tabla 12. Selección del Tiempo de Arranque con una Fuente de Reloj Externa
Cuando se aplique una fuente de reloj externa, es requerido evitar cambios repentinos en
la frecuencia de reloj aplicada, para asegurar una operación estable del MCU. Variaciones en la
frecuencia por mas del 2%, desde un ciclo de reloj, a otro puede conducir a un comportamiento
impredecible. Es requerido asegurar que el MCU se mantiene reseteado durante los cambios
de la frecuencia de reloj.
Página 27