Sei sulla pagina 1di 10

LOS MICROCONTROLADORES AVR DE ATMEL:

ATMega8 y ATMega16.
PROGRAMACIN EN ENSAMBLADOR Y LENGUAJE C

Por Felipe Santiago Espinosa

Contenido
CONTENIDO .................................................................................................................................................... I
PRLOGO ....................................................................................................................................................... 1
1.

INTRODUCCIN A LOS MICROCONTROLADORES................................................................... 3


1.1
SISTEMAS ELECTRNICOS ................................................................................................................. 3
1.2
CONTROLADORES Y MICROCONTROLADORES ................................................................................... 4
1.3
MICROPROCESADORES Y MICROCONTROLADORES ............................................................................ 5
1.4
FPGAS Y MICROCONTROLADORES .................................................................................................... 6
1.5
ORGANIZACIN DE LOS MICROCONTROLADORES .............................................................................. 8
1.5.1 La Unidad Central de Procesamiento (CPU) ............................................................................... 8
1.5.1.1
1.5.1.2

Organizacin de una CPU ........................................................................................................................ 10


Tareas de la CPU ...................................................................................................................................... 11

1.5.2 Sistema de Memoria ................................................................................................................... 11


1.5.3 Oscilador .................................................................................................................................... 13
1.5.4 Temporizador/Contador ............................................................................................................. 13
1.5.5 Perro Guardin (WDT, watchdog timer) ................................................................................... 14
1.5.6 Puerto Serie ................................................................................................................................ 14
1.5.7 Entradas/Salidas Digitales ......................................................................................................... 15
1.5.8 Entradas/Salidas Analgicas ...................................................................................................... 15
1.6
CLASIFICACIN DE LOS MICROCONTROLADORES ............................................................................ 15
1.7
CRITERIOS PARA LA SELECCIN DE LOS ELEMENTOS DE PROCESAMIENTO ..................................... 17
1.8
EJERCICIOS ...................................................................................................................................... 19
2.

ORGANIZACIN DE LOS MICRONTROLADORES AVR DE ATMEL .................................... 21


2.1
CARACTERSTICAS GENERALES ....................................................................................................... 21
2.2
EL NCLEO AVR............................................................................................................................. 23
2.2.1 Ejecucin de Instrucciones ......................................................................................................... 24
2.2.2 Archivo de Registros ................................................................................................................... 25
2.3
MEMORIA DE PROGRAMA ................................................................................................................ 26
2.4
MEMORIA DE DATOS ....................................................................................................................... 28
2.4.1 Espacio de SRAM ....................................................................................................................... 28
2.4.1.1
2.4.1.2

Registros I/O ............................................................................................................................................. 28


SRAM de Propsito General ................................................................................................................... 32

2.4.2 Espacio de EEPROM.................................................................................................................. 33


2.5
PUERTOS DE ENTRADA/SALIDA ....................................................................................................... 35
2.6
SISTEMA DE INTERRUPCIONES ......................................................................................................... 39
2.6.1 Manejo de Interrupciones ........................................................................................................... 42
2.7
INICIALIZACIN DEL SISTEMA (RESET) ............................................................................................. 43
2.8
RELOJ DEL SISTEMA ........................................................................................................................ 46
2.8.1 Resonador Cermico o Cristal Externo...................................................................................... 47
2.8.2 Cristal de Baja Frecuencia Externo ........................................................................................... 48
2.8.3 Oscilador RC Externo ................................................................................................................ 49
2.8.4 Oscilador RC Calibrado Interno ................................................................................................ 50
2.8.5 Reloj Externo .............................................................................................................................. 51
2.9
MODOS DE BAJO CONSUMO DE ENERGA ........................................................................................ 51

2.10
3.

EJERCICIOS ...................................................................................................................................... 54

PROGRAMACIN DE LOS MICROCONTROLADORES ............................................................ 55


3.1
REPERTORIO DE INSTRUCCIONES ..................................................................................................... 55
3.1.1 Instrucciones Aritmticas y Lgicas ........................................................................................... 55
3.1.2 Instrucciones para el Control de Flujo....................................................................................... 58
3.1.3 Instrucciones de Transferencia de Datos ................................................................................... 61
3.1.4 Instrucciones para el Manejo de Bits ......................................................................................... 64
3.1.5 Instrucciones Especiales............................................................................................................. 66
3.2
MODOS DE DIRECCIONAMIENTO ...................................................................................................... 66
3.2.1 Direccionamiento Directo por Registro ..................................................................................... 67
3.2.2 Direccionamiento Directo a Registros I/O ................................................................................. 68
3.2.3 Direccionamiento Directo a Memoria de Datos ........................................................................ 68
3.2.4 Direccionamiento Indirecto a Memoria de Datos ...................................................................... 69
3.2.5 Direccionamiento Indirecto a Memoria de Cdigo .................................................................... 70
3.2.6 Direccionamiento Inmediato ...................................................................................................... 71
3.2.7 Direccionamientos en Bifurcaciones .......................................................................................... 72
3.2.7.1
3.2.7.2
3.2.7.3

Bifurcaciones con Direccionamiento Relativo ....................................................................................... 72


Bifurcaciones con Direccionamiento Indirecto ...................................................................................... 73
Bifurcaciones con Direccionamiento Absoluto ...................................................................................... 73

3.3
PROGRAMACIN EN LENGUAJE ENSAMBLADOR .............................................................................. 73
3.3.1 Directiva INCLUDE ................................................................................................................... 74
3.3.2 Directivas CSEG, DSEG y ESEG ............................................................................................... 74
3.3.3 Directiva DB y DW ..................................................................................................................... 75
3.3.4 Directiva EQU ............................................................................................................................ 75
3.3.5 Directiva ORG ............................................................................................................................ 76
3.3.6 Directivas HIGH y LOW ............................................................................................................ 76
3.3.7 Directiva BYTE ........................................................................................................................... 77
3.4
PROGRAMACIN EN LENGUAJE C .................................................................................................... 77
3.4.1 Tipos de Datos ............................................................................................................................ 78
3.4.2 Operadores Lgicos y para el Manejo de Bits ........................................................................... 79
3.4.3 Tipos de Memoria ....................................................................................................................... 79
3.4.3.1
3.4.3.2
3.4.3.3

Datos en SRAM ........................................................................................................................................ 79


Datos en FLASH....................................................................................................................................... 80
Datos en EEPROM ................................................................................................................................... 81

3.5
PROGRAMAS DE EJEMPLO ................................................................................................................ 81
3.5.1 Parpadeo de un LED .................................................................................................................. 82
3.5.2 Decodificador de Binario a 7 Segmentos ................................................................................... 84
3.5.3 Diseo de una ALU de 4 Bits ...................................................................................................... 86
3.6
RELACIN ENTRE LENGUAJE C Y ENSAMBLADOR ........................................................................... 90
3.7
EJERCICIOS ...................................................................................................................................... 91
4.

INTERRUPCIONES EXTERNAS, TEMPORIZADORES Y PWM ............................................... 93


4.1
INTERRUPCIONES EXTERNAS ........................................................................................................... 93
4.1.1 Configuracin de las Interrupciones Externas ........................................................................... 94
4.1.2 Habilitacin y Estado de las Interrupciones Externas ............................................................... 94
4.1.3 Ejemplos de Uso de Interrupciones Externas ............................................................................. 95
4.2
TEMPORIZADORES ......................................................................................................................... 100
4.2.1 Eventos de los Temporizadores ................................................................................................ 101
4.2.1.1

ii

Desbordamientos .................................................................................................................................... 101

4.2.1.2
4.2.1.3

4.2.2

Respuesta a los Eventos ............................................................................................................ 103

4.2.2.1
4.2.2.2
4.2.2.3

4.2.3
4.2.4
4.2.5
4.2.6

Generacin de Formas de Onda con el Temporizador 0 ...................................................................... 109


Respuesta Automtica en la Terminal OC0 .......................................................................................... 109
Seleccin del Reloj para el Temporizador 0 ......................................................................................... 110

Organizacin y Registros del Temporizador 1 ......................................................................... 110

4.2.7.1
4.2.7.2
4.2.7.3
4.2.7.4

4.2.8

Sondeo (Polling) ..................................................................................................................................... 103


Uso de Interrupciones ............................................................................................................................. 103
Respuesta Automtica ............................................................................................................................ 104

Pre-escalador ........................................................................................................................... 104


Temporizacin Externa............................................................................................................. 106
Registros Compartidos por los Temporizadores ...................................................................... 107
Organizacin y Registros del Temporizador 0 ......................................................................... 108

4.2.6.1
4.2.6.2
4.2.6.3

4.2.7

Coincidencias por Comparacin ............................................................................................................ 102


Captura de Entrada ................................................................................................................................. 102

Generacin de Formas de Onda con el Temporizador 1 ...................................................................... 112


Respuesta Automtica en las Terminales OC1A y OC1B ................................................................... 113
Seleccin del Reloj para el Temporizador 1 ......................................................................................... 113
Acceso a los Registros de 16 Bits del Temporizador 1 ........................................................................ 114

Organizacin y Registros del Temporizador 2 ......................................................................... 114

4.2.8.1
4.2.8.2
4.2.8.3

Generacin de Formas de Onda con el Temporizador 2 ...................................................................... 116


Respuesta Automtica en la Terminal OC2 .......................................................................................... 117
Seleccin del Reloj para el Temporizador 2 ......................................................................................... 117

4.2.9 Ejemplos de Uso de los Temporizadores .................................................................................. 118


4.3
MODULACIN POR ANCHO DE PULSO (PWM) ............................................................................... 123
4.3.1 Generacin de PWM con los Microcontroladores AVR ........................................................... 124
4.3.2 PWM Rpido ............................................................................................................................ 125
4.3.3 PWM con Fase Correcta .......................................................................................................... 126
4.3.4 PWM con Fase y Frecuencia Correcta .................................................................................... 127
4.3.5 El Temporizador 0 y la Generacin de PWM ........................................................................... 128
4.3.6 El Temporizador 1 y la Generacin de PWM ........................................................................... 128
4.3.7 El Temporizador 2 y la Generacin de PWM ........................................................................... 130
4.3.8 Ejemplos de Uso de las Seales PWM...................................................................................... 130
4.4
EJERCICIOS .................................................................................................................................... 132
5.

RECURSOS PARA EL MANEJO DE INFORMACIN ANALGICA ...................................... 135


5.1
CONVERTIDOR ANALGICO A DIGITAL ......................................................................................... 135
5.1.1 Proceso de Conversin Analgico a Digital ............................................................................ 135
5.1.2 Hardware para la Conversin Digital a Analgico ................................................................. 136
5.1.3 Hardware para la Conversin Analgico a Digital ................................................................. 137
5.1.3.1

ADC de Aproximaciones Sucesivas ...................................................................................................... 137

5.1.4 El ADC de un AVR.................................................................................................................... 138


5.1.5 Registros para el Manejo del ADC ........................................................................................... 143
5.1.6 Ejemplos de Uso del Convertidor Analgico a Digital ............................................................ 145
5.2
COMPARADOR ANALGICO ........................................................................................................... 149
5.2.1 Organizacin del Comparador Analgico ............................................................................... 149
5.2.2 Registros para el Manejo del AC .............................................................................................. 150
5.2.3 Ejemplos de uso del Comparador Analgico ........................................................................... 151
5.3
EJERCICIOS .................................................................................................................................... 154
6.

INTERFACES PARA UNA COMUNICACIN SERIAL .............................................................. 157


6.1

COMUNICACIN SERIAL A TRAVS DE LA USART ........................................................................ 157

iii

6.1.1

Organizacin de la USART ...................................................................................................... 158

6.1.1.1
6.1.1.2
6.1.1.3

Generacin de Reloj y Modos de Operacin ........................................................................................ 159


Transmisin de Datos ............................................................................................................................. 161
Recepcin de Datos ................................................................................................................................ 162

6.1.2 Transmisin y Recepcin de Datos de 9 Bits ............................................................................ 163


6.1.3 Comunicacin entre Mltiples Microcontroladores ................................................................. 163
6.1.4 Registros para el Manejo de la USART .................................................................................... 164
6.1.5 Ejemplos de Uso de la USART ................................................................................................. 167
6.2
COMUNICACIN SERIAL POR SPI ................................................................................................... 171
6.2.1 Organizacin de la Interfaz SPI en los AVR ............................................................................. 172
6.2.2 Modos de Transferencias SPI ................................................................................................... 174
6.2.3 Funcionalidad de la Terminal SS ............................................................................................. 175
6.2.4 Registros para el Manejo de la Interfaz SPI............................................................................. 176
6.2.5 Ejemplos de Uso de la Interfaz SPI .......................................................................................... 178
6.3
COMUNICACIN SERIAL POR TWI ................................................................................................. 183
6.3.1 Transferencias de Datos va TWI ............................................................................................. 184
6.3.1.1
6.3.1.2
6.3.1.3

6.3.2
6.3.3

Sistemas Multi-Maestros .......................................................................................................... 186


Organizacin de la Interfaz TWI .............................................................................................. 187

6.3.3.1
6.3.3.2
6.3.3.3
6.3.3.4
6.3.3.5

6.3.4
6.3.5

Formato de los Paquetes de Direccin .................................................................................................. 184


Formato de los Paquetes de Datos ......................................................................................................... 185
Transmisin Completa: Direccin y Datos ........................................................................................... 185

Terminales SCL y SDA.......................................................................................................................... 187


Generador de Bit Rate ............................................................................................................................ 188
Unidad de Interfaz con el Bus................................................................................................................ 188
Unidad de Comparacin de Direccin .................................................................................................. 189
Unidad de Control .................................................................................................................................. 189

Registros para el Manejo de la Interfaz TWI............................................................................ 190


Modos de Transmisin y Cdigos de Estado ............................................................................ 192

6.3.5.1
6.3.5.2
6.3.5.3
6.3.5.4
6.3.5.5

Modo Maestro Transmisor ..................................................................................................................... 192


Modo Maestro Receptor ......................................................................................................................... 194
Modo Esclavo Receptor ......................................................................................................................... 196
Modo Esclavo Transmisor ..................................................................................................................... 198
Estados Miscelneos ............................................................................................................................... 199

6.3.6 Ejemplos de Uso de la Interfaz TWI ......................................................................................... 200


6.4
EJERCICIOS .................................................................................................................................... 205
7.

RECURSOS ESPECIALES ................................................................................................................ 209


7.1
WATCHDOG TIMER DE UN AVR .................................................................................................... 209
7.1.1 Registro para el Manejo del WDT ............................................................................................ 210
7.2
SECCIN DE ARRANQUE EN LA MEMORIA DE PROGRAMA ............................................................. 211
7.2.1 Organizacin de la Memoria Flash .......................................................................................... 211
7.2.2 Acceso a la Seccin de Arranque ............................................................................................. 213
7.2.3 Cargador para Autoprogramacin........................................................................................... 215
7.2.3.1
7.2.3.2
7.2.3.3
7.2.3.4
7.2.3.5

Restricciones de Acceso en la Memoria Flash ..................................................................................... 215


Capacidades para Leer-Mientras-Escribe ............................................................................................. 216
Escritura y Borrado en la Memoria Flash ............................................................................................. 218
Direccionamiento de la Flash para Autoprogramacin ........................................................................ 221
Programacin de la Flash ....................................................................................................................... 222

7.3
BITS DE CONFIGURACIN Y SEGURIDAD........................................................................................ 222
7.4
INTERFAZ JTAG ............................................................................................................................ 224
7.4.1 Organizacin General de la Interfaz JTAG .............................................................................. 225

iv

7.4.2 La Interfaz JTAG y los Mecanismos para la Depuracin en un AVR ...................................... 226
7.5
EJERCICIOS .................................................................................................................................... 228
8.

INTERFAZ Y MANEJO DE DISPOSITIVOS EXTERNOS .......................................................... 229


8.1
INTERRUPTORES Y BOTONES ......................................................................................................... 229
8.2
TECLADO MATRICIAL .................................................................................................................... 230
8.2.1 Decodificadores Integrados para Teclados Matriciales .......................................................... 232
8.3
INTERFAZ CON LEDS Y DISPLAYS DE 7 SEGMENTOS ..................................................................... 233
8.4
MANEJO DE UN DISPLAY DE CRISTAL LQUIDO ............................................................................. 235
8.4.1 Espacios de Memoria en el Controlador de un LCD ............................................................... 237
8.4.2 Conexin de un LCD con un Microcontrolador ....................................................................... 239
8.4.3 Transferencias de Datos ........................................................................................................... 241
8.4.4 Comandos para el Acceso de un LCD ...................................................................................... 242
8.4.4.1
8.4.4.2
8.4.4.3
8.4.4.4
8.4.4.5
8.4.4.6
8.4.4.7
8.4.4.8
8.4.4.9
8.4.4.10
8.4.4.11

Limpieza del Display.............................................................................................................................. 243


Regreso del Cursor al Inicio .................................................................................................................. 243
Ajuste de Entrada de Datos .................................................................................................................... 244
Encendido/Apagado del Display ........................................................................................................... 244
Desplazamiento del Cursor y del Display ............................................................................................. 244
Configura la Funcin del Display .......................................................................................................... 245
Configura Direccin en CGRAM .......................................................................................................... 245
Configura Direccin en DDRAM.......................................................................................................... 245
Lee la Bandera de Ocupado y la Direccin........................................................................................... 245
Escribe Dato en CGRAM o en DDRAM .............................................................................................. 245
Lee Dato de CGRAM o de DDRAM .................................................................................................... 246

8.4.5 Inicializacin del LCD.............................................................................................................. 246


8.5
MANEJO DE MOTORES ................................................................................................................... 248
8.5.1 Motores de CD ......................................................................................................................... 248
8.5.2 Motores Paso a Paso ................................................................................................................ 250
8.5.2.1
8.5.2.2

Polarizacin y Operacin de un Motor Bipolar .................................................................................... 251


Polarizacin y Operacin de un Motor Unipolar .................................................................................. 253

8.5.3 Servomotores ............................................................................................................................ 257


8.6
INTERFAZ CON SENSORES .............................................................................................................. 258
8.7
INTERFAZ CON UNA COMPUTADORA PERSONAL ............................................................................ 259
8.7.1 Puerto Serie .............................................................................................................................. 259
8.7.2 Puerto Paralelo ........................................................................................................................ 261
8.7.3 Puerto USB ............................................................................................................................... 263
8.7.3.1
8.7.3.2
8.7.3.3
8.7.3.4

8.8
9.

Adaptador de USB a RS-232 ................................................................................................................. 264


Circuitos Integrados Controladores ....................................................................................................... 264
Mdulos de Evaluacin y Prototipado .................................................................................................. 265
Uso de un AVR con Controlador USB Integrado ................................................................................ 266

EJERCICIOS .................................................................................................................................... 268

DESARROLLO DE SISTEMAS ........................................................................................................ 271


9.1
METODOLOGA DE DESARROLLO ................................................................................................... 271
9.2
EJEMPLOS DE DISEO .................................................................................................................... 274
9.2.1 Reloj de Tiempo Real con Alarma ............................................................................................ 274
9.2.1.1
9.2.1.2
9.2.1.3
9.2.1.4
9.2.1.5

Planteamiento del Problema .................................................................................................................. 275


Requerimientos de Hardware y Software ............................................................................................. 277
Diseo del Hardware .............................................................................................................................. 278
Diseo del Software ............................................................................................................................... 278
Implementacin del Hardware ............................................................................................................... 282

9.2.1.6
9.2.1.7
9.2.1.8

9.2.2

Chapa Electrnica .................................................................................................................... 288

9.2.2.1
9.2.2.2
9.2.2.3
9.2.2.4
9.2.2.5
9.2.2.6
9.2.2.7
9.2.2.8

9.3

Implementacin del Software ................................................................................................................ 283


Integracin y Evaluacin........................................................................................................................ 287
Ajustes y Correcciones ........................................................................................................................... 287
Planteamiento del Problema .................................................................................................................. 289
Requerimientos de Hardware y Software ............................................................................................. 291
Diseo del Hardware .............................................................................................................................. 292
Diseo del Software ............................................................................................................................... 293
Implementacin del Hardware ............................................................................................................... 295
Implementacin del Software ................................................................................................................ 296
Integracin y Evaluacin........................................................................................................................ 299
Ajustes y Correcciones ........................................................................................................................... 299

SISTEMAS PROPUESTOS ................................................................................................................. 299

APNDICE A: RESUMEN DE LOS REGISTROS I/O ........................................................................... 307


APNDICE B: RESUMEN DEL REPERTORIO DE INSTRUCCIONES ............................................ 309
APNDICE C: USO DEL AVR STUDIO .................................................................................................. 313
APNDICE D: SITIOS WEB DE REFERENCIA .................................................................................... 321
NDICE TEMTICO .................................................................................................................................. 323

vi

Prlogo
Comenc a trabajar con microcontroladores en el ao de 1994, precisamente en uno de mis ltimos
cursos de licenciatura. Un microcontrolador tambin suele ser referido como MCU (Micro
Controller Unit), por lo que a lo largo del texto, indistintamente es tratado de una u otra manera.
El primer MCU que utilic fue un 8031, un microcontrolador de 8 bits perteneciente a la familia
MCS-51 de Intel. El 8031 requiere de todo un sistema de acondicionamiento para ser puesto en
marcha. Posteriormente, otros microcontroladores llegaron a mis manos, adquir experiencia
trabajando con el DS5000T, una versin mejorada del 8031, con memoria de programa tipo
NVRAM (RAM no voltil) y un reloj de tiempo real, pero manufacturado por Dallas
Semiconductor. Luego, conoc a la familia de microcontroladores PIC de Microchip, tuve una ligera
experiencia con el HC11 de Motorola y, en los ltimos aos, he trabajado con los
microcontroladores AVR, de ATMEL.
Desde mi incorporacin a la Universidad Tecnolgica de la Mixteca, en 1998, ao con ao he
impartido el curso de microcontroladores, utilizando uno u otro dispositivo, segn la disponibilidad
o requerimientos de las aplicaciones. Con la experiencia adquirida he observado que los
microcontroladores AVR tienen ms recursos en relacin con sus equivalentes en costo de otras
compaas, adems de un rendimiento ms alto.
Por ello, desde el ao 2006 he enfocado mis cursos al manejo de los microcontroladores AVR,
especficamente trabajando con el ATMega8 y el ATMega16. El primer paso para trabajar con estos
dispositivos fue la bsqueda del libro de texto adecuado. Necesitaba un libro que detallara al
hardware y lo vinculara con el software, que sentara las bases para el desarrollo de sistemas y
permitiera a los estudiantes empezar desde cero en los microcontroladores, hasta adquirir ideas
aplicables al desarrollo de sistemas complejos. Y que adems, incluyera aspectos relacionados con
su programacin, tanto en Ensamblador, como en Lenguaje C. Al no encontrarlo, me di a la tarea de
escribirlo.
En este libro pretendo reflejar la experiencia que he adquirido con estos dispositivos. Es un libro de
texto bsico, inicialmente para mis cursos y ms adelante, quizs, tambin sea empleado en otras
universidades o por profesionistas independientes interesados en este apasionante mundo de los
microcontroladores.
Dado que el tema central son los microcontroladores, supongo que los lectores tienen fundamentos
de electrnica digital, esto involucra un conocimiento de sistemas numricos, compuertas lgicas,
registros, memorias, mquinas de estados, etc., incluso algunos aspectos bsicos de programacin
en ensamblador y en Lenguaje C, u otro lenguaje de alto nivel.
Por lo tanto, me enfoco en las caractersticas de los microcontroladores y, slo si es necesario,
profundizo en algn concepto en torno a ellos, pero sin desviarme del tema de inters.

A lo largo del texto, realizo una descripcin del hardware y el software de los microcontroladores
ATMega8 y ATMega16, mostrando cmo los diferentes recursos de hardware pueden ser
manejados en Ensamblador o en Lenguaje C. ste es un aspecto interesante, dado que pretendo
mostrar las ventajas o inconvenientes de desarrollar aplicaciones en diferentes niveles de
programacin. Para todos los recursos internos, he documentado ejemplos completos, los cuales
fueron previamente implementados como prcticas en la Universidad Tecnolgica de la Mixteca.
Dispongo de un captulo dedicado al manejo de dispositivos externos y concluyo con la propuesta
de una metodologa que se puede emplear para construir sistemas con ms requerimientos, la cual
ilustro con el desarrollo de dos sistemas relativamente complejos.
Agradezco a la Universidad Tecnolgica de la Mixteca las facilidades para llevar a cabo la
redaccin de este libro, deseo sea de utilidad para las futuras generaciones de sta y otras
instituciones. Tambin agradezco a todos los alumnos y profesores que, de una u otra manera,
colaboraron en la realizacin y revisin de este texto.

F. Santiago Espinosa
fsantiag@mixteco.utm.mx

Potrebbero piacerti anche