Autor: PAREDES MARTÍNEZ, Ernesto
Páginas: 480
Editorial: Alfaomega
$588
Hay existencias
Autor: PAREDES MARTÍNEZ, Ernesto
Páginas: 480
Editorial: Alfaomega
Hay existencias
Los AVR son microcontroladores amigables en la programación y poderosos en su aplicación. Entre las ventajas que el lector encontrará se hallan un rango de voltaje de operación y de frecuencia de oscilación amplio, además de varios registros de usuario. Aunado a lo anterior, tienen la bondad de ser programados en lenguaje ensamblador y lenguaje C. En la obra se utiliza el lenguaje ensamblador a través del programa AVR Studio 4.
Este libro es un apoyo para quien se inicia en la programación de un AVR, ya que es una guía paso a paso de cómo configurar y poner en marcha este microcontrolador.
También incluye algunos circuitos prácticos, secciones de código y tips para su correcta programación. Cabe señalar que este curso práctico no requiere que el lector tenga experiencia en la programación de un AVR, ya que la información aquí contenida es accesible a cualquier nivel.
VENTAJAS
• Utiliza un lenguaje adecuado para llegar a todos los niveles de varias disciplinas (tanto médicas como tecnológicas) con un conocimiento desmenuzado de la programación AVR y con la ayuda de prácticas y propuestas de proyectos.
• Con esta obra se facilita el entendimiento de la programación de AVR, que actualmente ha sido considerada un gran apoyo tecnológico en el diseño de circuitos electrónicos para proyectos de alto nivel.
• El autor ha sido profesor de la asignatura de Microcontroladores AVR por más de 10 años.
CONOZCA
• Algunos circuitos empleados en la programación del AVR.
• Un diagrama eléctrico de una base multi AVR para programar varios microcontroladores de Atmel en un mismo código programador.
APRENDA
• A programar un microcontrolador AVR
• Usar comandos, operandos, macros y demás cualidades del AVR.
DESARROLLE SUS HABILIDADES PARA
• Poner en práctica proyectos reales.
• Poner en práctica la elaboración de códigos y diagramas eléctricos.
A QUIÉN VA DIRIGIDO
El libro está dirigido a personas que quieran incursionar en la programación AVR y pone al alcance del lector conocimientos de los pasos a seguir para configurar y poner en marcha este microcontrolador. Para ello, se le brindan herramientas tales como circuitos prácticos y secciones del programa de cada circuito, así como tips para programar de forma correcta una aplicación poderosa. No importa si el interesado no cuenta con experiencia en el ramo, la información contenida es tan accesible que le permite a cualquiera en cualquier nivel solucionar problemas gracias al uso del simulador del AVR Studio.
Contenido
Relación de figuras, tablas, registros y diagramas……………………………………………………XV
Introducción ………………………………………………………………………………………………………XIX
Parte 1
Capítulo 1
Programando………………………………………………………………………………………………………..3
Capítulo 2
Primer programa en AVR (prender un LED) …………………………………………………………7
Capítulo 3
Encabezado…………………………………………………………………………………………………………17
3.1. Directiva .ORG: indica el origen o inicio del programa…………………………………30
3.2. Directiva .CSEG: Code Segment………………………………………………………………..33
3.3. Directiva .ESEG: EEPROM Segment …………………………………………………………39
3.4. Directiva .DSEG: Data Segment ………………………………………………………………..44
3.4.1. Problema en el segmento .DSEG……………………………………………………………..48
Capítulo 4
Configuración……………………………………………………………………………………………………..49
4.1. Stack Pointer……………………………………………………………………………………………49
Capítulo 5
Cuerpo del programa…………………………………………………………………………………………..55
5.1. Subrutinas……………………………………………………………………………………………….55
Capítulo 6
Pull-up y pull-down……………………………………………………………………………………………..59
Capítulo 7
Ciclo While………………………………………………………………………………………………………….63
Capítulo 8
Programa 2 (botón prende LED)………………………………………………………………………….65
Capítulo 9
Programa 3 (puerto bidireccional)……………………………………………………………………….67
X Contenido
Curso práctico para programación de AVR • Ernesto Paredes Martínez
Capítulo 10
Programa 4 (máscara)…………………………………………………………………………………………73
Capítulo 11
Programa 5 (subrutina de un segundo) ………………………………………………………………..75
Capítulo 12
Ciclo For……………………………………………………………………………………………………………..81
12.1. Programa 6 (retardo de 1 minuto usando ciclo For)…………………………………..82
Capítulo 13
Debouncer (función antirrebote)………………………………………………………………………….85
13.1. Programa 7 (Delay_Debouncer)……………………………………………………………..86
Capítulo 14
Programa 8 (control de un motor a pasos unipolar)………………………………………………89
Capítulo 15
Programa 9 (control de velocidad de un motor CD)………………………………………………93
Capítulo 16
Direccionamientos……………………………………………………………………………………………….97
16.1. Direccionamiento directo de un solo registro……………………………………………97
16.2. Direccionamiento directo de dos registros ……………………………………………….98
16.3. Direccionamiento directo de I/O …………………………………………………………….98
16.4. Direccionamiento directo de datos ………………………………………………………….99
16.5. Direccionamiento indirecto de datos con desplazamiento…………………………100
16.6. Direccionamiento indirecto de datos……………………………………………………..100
16.7. Direccionamiento indirecto de datos con predecremento………………………….101
16.8. Direccionamiento indirecto de datos con postincremento…………………………101
16.9. Direccionamiento a memoria de programa……………………………………………..102
16.10. Direccionamiento indirecto a memoria de programa, IJMP e ICALL ………..103
16.11. Direccionamiento relativo a memoria de programa………………………………….103
Capítulo 17
Instrucciones orientadas a Bit…………………………………………………………………………….107
Capítulo 18
Interrupciones………………………………………………………………………………………………….. 111
18.1. Programa 10 (prender un LED con interrupción INT0)……………………………..119
Contenido XI
Curso práctico para programación de AVR • Ernesto Paredes Martínez
Capítulo 19
Reset entre los AVR……………………………………………………………………………………………129
Capítulo 20
Instrucciones de control del MCU………………………………………………………………………135
Capítulo 21
Error de Branch out of range …………………………………………………………………………….143
21.1. Branch: saltos a subrutinas …………………………………………………………………….144
Capítulo 22
Uso de teclado y display LCD …………………………………………………………………………….147
22.1. Programa 11 (desplegar mensajes en el display LCD)……………………………….157
22.2. Programa 12 (desplegar los caracteres del teclado en el display) ………………..160
Capítulo 23
Álgebra booleana con AVR ………………………………………………………………………………..169
23.1. Programa 13 (ecuación booleana a través de programación AVR) ………………169
Capítulo 24
Flip-Flops con AVR……………………………………………………………………………………………177
24.1. Programa 14 (Flip-Flop con AVR)…………………………………………………………..178
Capítulo 25
Lectura/escritura en EEPROM………………………………………………………………………….181
25.1. Programa 15 (memorización de teclado matricial en EEPROM)…………………183
Capítulo 26
Instrucciones Push y Pop……………………………………………………………………………………191
26.1. Push: salvar el valor de un registro en el Stack …………………………………………191
26.2. Pop: recuperar el valor de un registro del Stack………………………………………..191
26.3. Error en el uso del Stack Pointer con interrupciones………………………………….196
26.4. Error en el uso del Stack Pointer con saltos RCALL………………………………….199
Capítulo 27
Instrucciones ST/STD/STS – LD/LDS…………………………………………………………………203
Capítulo 28
PWN …………………………………………………………………………………………………………………207
28.1. Control de servo-motor………………………………………………………………………….213
XII Contenido
Curso práctico para programación de AVR • Ernesto Paredes Martínez
Capítulo 29
Contador de 24 y 32-bits (ascendente y descendente)…………………………………………..221
Capítulo 30
Expresiones (Expressions)………………………………………………………………………………….225
30.1. Operandos (Operands)…………………………………………………………………………..225
30.2. Operadores (Operators) …………………………………………………………………………225
30.3. Funciones (Functions) …………………………………………………………………………..232
Capítulo 31
Macros………………………………………………………………………………………………………………237
Capítulo 32
Directivas………………………………………………………………………………………………………….243
32.1. Directiva #DEFINE …………………………………………………………………………….243
32.2. Directiva DEF: establece una etiqueta a un registro…………………………………244
32.3. Directiva UNDEF: indefinir o “desnombrar” el nombre
simbólico de un registro (quitar la etiqueta a un registro)…………………………247
32.4. Directiva EQU: hacer un símbolo igual que una expresión
(asignar un valor a una etiqueta)……………………………………………………………248
32.5. Directiva SET: establece que un símbolo sea igual a una expresión…………..250
32.6. Directiva DEVICE………………………………………………………………………………250
32.7. Directiva CSEGSIZE: tamaño de la memoria del programa
(Program Memory Size) ………………………………………………………………………251
32.8. Directivas IF, ELSE, ENDIF: condicionales (conditional assembly)………….251
32.9. Directivas IFDEF, IFNDEF: condicionales (conditional assembly) …………..253
32.10. Directiva ELIF: condicionales (conditional assembly) …………………………….254
32.11. Directiva ERROR: saca la palabra “ERROR” con una
cadena de caracteres (string)…………………………………………………………………255
32.12. Directiva WARNING: saca la palabra “WARNING”
con una cadena de caracteres (string)…………………………………………………….256
32.13. Directiva MESSAGE: saca la palabra “MESSAGE”
con una cadena de caracteres (string)…………………………………………………….257
32.14. Directiva EXIT: salirse del archivo ……………………………………………………….258
32.15. Directivas LIST – NOLIST: genera un archivo “listfile .lst” …………………….260
32.16. Directiva LISTMAC: expansión del contenido de una macro …………………..263
Parte 2
Capítulo 33
Comunicación entre un AVR y una computadora ……………………………………………….267
Contenido XIII
Curso práctico para programación de AVR • Ernesto Paredes Martínez
Capítulo 34
Comunicación entre los AVR ……………………………………………………………………………..275
34.1. Comunicación entre los AVR usando SPI-USI………………………………………….275
34.2. Comunicación USI 3-hilos (3-Wire)………………………………………………………..280
34.3. Comunicación entre los AVR usando comunicación híbrida síncrona ………….287
Capítulo 35
Comunicación entre los AVR a distancia …………………………………………………………….295
35.1. Comunicación a distancia con interfaz RS-485…………………………………………295
35.2. Comunicación a distancia usando XBEE …………………………………………………296
Capítulo 36
Generador de pulso de reloj para sincronía (Clock Recovery)……………………………..305
36.1. Codificador Manchester…………………………………………………………………………310
Capítulo 37
Lectura de un convertidor ADC0804 en un display LCD…………………………………….321
37.1. Convertidor ADC del ATtiny13………………………………………………………………326
Capítulo 38
Voltímetro digital de 8-bits…………………………………………………………………………………329
Capítulo 39
Sensor de temperatura PT100 ……………………………………………………………………………339
39.1. Instrucción de multiplicación MUL…………………………………………………………342
Capítulo 40
Generador de funciones usando convertidor DAC0800……………………………………….353
40.1. Trazador de figuras de dos dimensiones…………………………………………………..358
Capítulo 41
Sensor de proximidad ultrasónico HC-SR04……………………………………………………….361
41.1. Multiplicación de un número de 24-bits por uno de 16-bits………………………..364
Capítulo 42
Puente de Wheatstone………………………………………………………………………………………..379
42.1. Potenciómetro digital…………………………………………………………………………….380
Capítulo 43
Circuito de cruce por cero para Dimmer 120 VCA ……………………………………………..389
XIV Contenido
Curso práctico para programación de AVR • Ernesto Paredes Martínez
Capítulo 44
Resolución de ecuaciones con AVR……………………………………………………………………..399
44.1. Raíz cuadrada en AVR…………………………………………………………………………..400
Capítulo 45
Crear un PLC con AVR……………………………………………………………………………………..417
Capítulo 46
Tarjeta Programadora Universal ……………………………………………………………………….421
Capítulo 47
Cómo hacer una tarjeta tipo Arduino…………………………………………………………………423
47.1. ¿Qué es el Bootloader? ………………………………………………………………………….426
47.2. Partes de la tarjeta Arduino…………………………………………………………………….442
47.3. Armando nuestra tarjeta tipo Arduino………………………………………………………444
Palabras finales …………………………………………………………………………………………………..453
Índice analítico……………………………………………………………………………………………………455