Inicio/Profesional/Ciencia y tecnología/Mecatrónica y robótica/Curso práctico para programación de AVR

Curso práctico para programación de AVR

$588

Hay existencias

Autor: PAREDES MARTÍNEZ, Ernesto

Páginas: 480

Editorial: Alfaomega

Hay existencias

ISBN: 9786075380957 Categoría:

Descripción

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

Título

Ir a Arriba