Manual de prácticas para microcontrolador ATmega8

33
Índice I INTRODUCCIÓN 3 II PRÁCTICAS 7 1. Práctica 1 8 1.1. Objetivo ..................................... 8 1.2. Destreza ..................................... 8 1.3. Diagrama eléctrico ............................... 8 1.4. Codigo ...................................... 9 1.4.1. Descripción ............................... 9 2. Práctica 2 10 2.1. Objetivo ..................................... 10 2.2. Destreza ..................................... 10 2.3. Diagrama eléctrico ............................... 10 2.4. Código ...................................... 11 2.4.1. Descripción ............................... 11 3. Práctica 3 12 3.1. Objetivo ..................................... 12 3.2. Diagrama eléctrico ............................... 12 3.3. Código ...................................... 12 3.3.1. Descripción ............................... 13 4. Práctica 4 14 4.1. Objetivo ..................................... 14 4.2. Diagrama eléctrico ............................... 14 4.3. Código ...................................... 14 4.3.1. Descripción ............................... 15 5. Práctica 5 16 5.1. Objetivo ..................................... 16 5.2. Diagrama eléctrico ............................... 16 5.3. Código ...................................... 16 5.3.1. Descripción ............................... 17 6. Práctica 7 18 6.1. Objetivo ..................................... 18 6.2. Diagrama eléctrico ............................... 18 6.3. Código ...................................... 18 6.3.1. Descripción ............................... 19 1

Transcript of Manual de prácticas para microcontrolador ATmega8

Page 1: Manual de prácticas para microcontrolador ATmega8

Índice

I INTRODUCCIÓN 3

II PRÁCTICAS 7

1. Práctica 1 81.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.2. Destreza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.3. Diagrama eléctrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.4. Codigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.4.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2. Práctica 2 102.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.2. Destreza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.3. Diagrama eléctrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.4. Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.4.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3. Práctica 3 123.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.2. Diagrama eléctrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.3. Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.3.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

4. Práctica 4 144.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144.2. Diagrama eléctrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144.3. Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

4.3.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

5. Práctica 5 165.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165.2. Diagrama eléctrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165.3. Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

5.3.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

6. Práctica 7 186.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186.2. Diagrama eléctrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186.3. Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

6.3.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1

Page 2: Manual de prácticas para microcontrolador ATmega8

7. Práctica 8 207.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207.2. Diagrama eléctrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207.3. Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

7.3.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

8. Práctica 9 218.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218.2. Diagrama eléctrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218.3. Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

8.3.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

9. Práctica 10 229.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229.2. Diagrama eléctrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229.3. Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

9.3.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

10.Práctica 11 2310.1.Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2310.2.Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

10.2.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

11.Práctica 12 2411.1.Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2411.2.Diagrama eléctrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2411.3.Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

11.3.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

12.Práctica 13 2512.1.Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2512.2.Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

12.2.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

13.Práctica 14 2613.1.Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613.2.Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

13.2.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

14.Práctica 15 2714.1.Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2714.2.Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

14.2.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

15.Práctica 16 2815.1.Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2815.2.Características . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2

Page 3: Manual de prácticas para microcontrolador ATmega8

UNIVERSIDAD TECNOLÓGICA DE TEHUACÁN

Robótica

Reporte de Practicas

Luis Antonio Trinidad Cid

Francisco Gaspar Hernandez

Michael Milton Huerta Sevilla

19 de Octubre de 2015

Parte I

INTRODUCCIÓN

Microcontrolador

El microcontrolador es un circuito integrado de muy alta escala de integraciónque contiene las partes funcionales de un computador:

CPU (Central Processor Unit o Unidad de Procesamiento Central)

Memorias volátiles (RAM), para datos

Memorias no volátiles( ROM, PROM, EPROM) para escribir el programa

Líneas de entrada y salida para comunicarse con el mundo exterior.

Algunos periféricos (comunicación serial, temporizador, convertidor A/D, etc)

Es decir el microcontrolador es un computador integrado en un solo chip. Integrartodos estos elementos en un solo circuito integrado a significado desarrollar aplica-ciones importantes en la industria al economizar materiales, tiempo y espacio.

ATMEL

ATMEL fabrica los microcontroladores de la familia AVR, esta nueva tecnologíaproporciona todos los beneficios habituales de arquitectura RISC y memoria flashreprogramable eléctricamente. La característica que los identifica a estos microcon-troladores de ATMEL es la memoria flash y eeprom que incorpora. AVR compite con

3

Page 4: Manual de prácticas para microcontrolador ATmega8

varias familias de microcontroladores bien establecidas en el mercado, tales como8051 de Intel, 68HC11 de Motorola y la familia PIC de Microchip. La firma tambiénproduce y vende varios subproductos de la popular familia 8051 con la diferencia deque están basados en la memoria flash.

El ATmega8 es un microcontrolador de la familia Atmel, contiene una arquitecturatipo RISC, sus instrucciones se ejecutan en un solo ciclo de maquina, su estructuraelimina la necesidad de usar componentes externos ya que internamente contie-ne: osciladores, USART, SPI, resistencias pull-up, modulación por anchura de pul-so (PWM), convertidor ADC, comparador analógico y cronometros, estas son soloalgunas características que se encuentran en este dispositivo. Su programación esposible realizarla en leguaje C, assembly o Basic. Todo su sistema esta depositadoen una sola pastilla.

Características

Entre sus características encontramos:

Organización de memoria Flash 8kx8bitCapacidad de memoria EEPROM 512BCapacidad de memoria SRAM 512BCarcasa DIP28Frecuencia de tacteado 16MHzPeriféricos RTC, comparadorCantidad de entradas/salidas 23Cantidad de canales PWM 3Cantidad de timers 8-bit 2Cantidad de timers 16-bit 1Montaje THTTensión de trabajo 4.5...5.5VCantidad de transductores A/C 10-bit 6 92

Pines

El ATmega 8 cuenta con 26 pines de los cuales:VCC y GND. Son los pines de alimentación (+5 v) y tierra (0 v).XTAL1 y XTAL2. Conectores del cristal de reloj externo.RESET. Corresponde a la línea de reset (entrada).AVCC. Es el pin para conectar la fuente de alimentación al convertidor A/D.AREF. Para conectar una tensión de referencia para el conversor.Puerto C(PC0 .. PC5). Tiene 7 bits, bidireccionales con resistencias internas pull up,para cada bit.Puerto B(PB7 .. PB0).Puerto D (PD0..PD7).PC6/RESET.

4

Page 5: Manual de prácticas para microcontrolador ATmega8

Figura 1: Diagrama de pines del ATMEGA8.

El microcontrolador tiene varios puertos de los cuales podemos hacer uso, estospuertos los podemos configurar como nosotros queramos, como entrada o comosalida, para poder hacer esto es necesario escribir en los registros del puerto paradarle las instrucciones necesarias. Existen tres principales formas de controlar lospuertos, tomamos como ejemplo el puerto B.

DDR

Para obtener que el puerto B se comporte como entrada, como salida o ambos,es necesario indicarle esto en el DDR, este registro no activara ni desactivara ningúnpin del microcontrolador, simplemente le indicara al puerto si este será entrada osalida.

Figura 2: Direccion de registro de datos del Puerto B - DDRB.

Para indicarle al DDR si el puerto sea de entrada o salida, el 1 indica salida, y el 0entrada, se le puede escribir como hexadecimal, decimal, o binario, por ejemplo, siqueremos que todos los bits del puerto sean salidas lo podemos escribir como sigue:

5

Page 6: Manual de prácticas para microcontrolador ATmega8

DDRB=0xFF; //Como HexadecimalDDRB=255; //Como DecimalDDRB=0b11111111; //Como Binario

Si queremos que algunos bits funcionen como entradas:

DDRB=0x8C; //Como HexadecimalDDRB=140; //Como DecimalDDRB=0b10001100; //Como Binario

Se puede escribir en cualquiera de los tres tipos (binario hexadecimal y decimal),en todos los registros.

PORT

El PORT controla la salida del puerto, este se usa en caso de que el DDR haya si-do seleccionado como salida, un 1 en el PORT indica un nivel alto en el puerto comosalida, un 0 indica que el pin esta en nivel bajo. Varias configuraciones de ejemplopara el PORT:

PORTB=0xFF; //Todos los pines estan activosPORTB=0x00; //Todos los pines estan desactivadosPORTB=0x03; //Solo los primeros dos bits del puerto estan activos

Figura 3: Registro de datos del Puerto B - PORTB.

PIN

El PIN es un registro de lectura (notar en la imagen del registro donde dice Read/W-rite, todos son R), este registro nos da un 1 si a un pin del microcontrolador se le estáalimentando externamente, y un cero si esta en nivel bajo de voltaje. En este caso elvalor del PIN se le puede asignar a una variable la cual guardara el valor del miso, almomento de ejecutar la instrucción.

valor=PINB; //El valor de PINB es asignado a la variable "valor"

6

Page 7: Manual de prácticas para microcontrolador ATmega8

Figura 4: Direccion de los pines de entrada del Puerto B - PINB

Programación AVR

Para programar el microcontrolador se hara uso de el software de AVR Studio elcual utiliza el lenguje C, acontinuacion se describen los detalles del programa.

1 #define F_CPU 8000000L

Esta linea define la frecuencia a la que trabajará el micro, esta definición sirve parahacer calculos en algunas librerias, como en la librería delay.h, que requiere saber lafrecuencia del micro para poder calcular los tiempos de espera de sus rutinas.

1 #include <avr/io.h>

Incluimos la librería avr/io que contiene la información de las entradas y salidas delmicrocontrolador.

1 #include <util/delay.h>

Esta librería es necesaria, ya que contiene todas las funciones para poder utilizar losretardos de tiempo.

1 int main (void){

El main es la función principal, es donde el programa inicia, siempre es necesariodeclarar la función main.

1 while(1){

El ciclo while, es un ciclo que ejecuta todas las instrucciones que se encuentran den-tro de sus corchetes, siempre y cuando lo que este dentro del paréntesis se cumpla,en este caso el 1 es lo mismo que TRUE, por lo tanto, siempre se cumple y se ejecu-taran cíclicamente las instrucciones dentro del while. Esto se hace con la intenciónde que el programa nunca se detenga, y siempre repita lo mismo.

7

Page 8: Manual de prácticas para microcontrolador ATmega8

Parte II

PRÁCTICAS

1. Práctica 1

1.1. Objetivo

Diseñar un programa que encienda un led, dure 500ms y se apague; esta con-mutación debe darse en cadaterminal del puerto B, del LSB al MSB.

1.2. Destreza

Partiendo del código con el que se logró hacer funcionar el ATMEGA8, diseñe uncódigo que resuelva elproblema.

1.3. Diagrama eléctrico

Se presenta el diagrama eléctrico de la práctica.

Figura 5: Diagrama eléctrico de la Práctica 1.

8

Page 9: Manual de prácticas para microcontrolador ATmega8

1.4. Codigo

Listing 1: Código AVR

1 /*2 * Practica_1.c3 *4 * Created: 21/09/2015 08:51:43 AM5 *6 */7

8

9 #define F_CPU 1000000UL //Oscilador interno 10 Mhz10

11 #include <util/delay.h>12 #include <avr/io.h>13

14 int main(void)15 {16 DDRB = 0xFF; // Configurar el puerto B como salidas17

18 while(1)19 {20 PORTB = PORTB | 0x01; // Aplicamos or21 _delay_ms(500);22 PORTB = PORTB & 0xFE;23 _delay_ms(500);24 }25 }

1.4.1. Descripción

9

Page 10: Manual de prácticas para microcontrolador ATmega8

2. Práctica 2

2.1. Objetivo

Diseñar un programa que muestre los digitos en hexadecimal (0„1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)en undisplay 7 segmentos.

2.2. Destreza

El punto clave es guardar los datos en la memoria FLASH usando la libreriaavr/pgmspace.h. Recuerde que solo toma los 4 LSB del puerto D (Puerto D comoentrada). El display está conectado al puerto B.

2.3. Diagrama eléctrico

Se presenta el diagrama eléctrico de la práctica.

Figura 6: Diagrama eléctrico de la Práctica 2.

10

Page 11: Manual de prácticas para microcontrolador ATmega8

2.4. Código

Listing 2: Código Práctica 2

1

2 /*3 * Practica_2.c4 *5 * Created: 21/09/2015 08:51:43 AM6 */7

8 #include <avr/io.h>9 #include <avr/pgmspace.h>

10

11 const char tabla [] ={ 0x3F, 0x06, 0x5B, 0x4F,12 0x66, 0x6D, 0x7D, 0x07,13 0x7F, 0x67, 0x77, 0x7C,14 0x39, 0x5E, 0x79, 0x71};15

16 int main(void)17 {18 unsigned char dato;19 DDRD = 0x00;20 PORTD = 0x00;21 DDRB = 0xFF;22

23 while (1)24 {25 dato = PIND & 0x0F;26 PORTB = pgm_read_byte (& tabla[dato]);27 }28 }

2.4.1. Descripción

11

Page 12: Manual de prácticas para microcontrolador ATmega8

3. Práctica 3

3.1. Objetivo

Diseñar una ALU (Unidad Aritmética Lógica) de 4 bits.

3.2. Diagrama eléctrico

Se presenta el diagrama eléctrico de la práctica.

Figura 7: Diagrama eléctrico de la Práctica 3.

3.3. Código

Listing 3: Código Práctica 3

1

2 /*3 * Practica_3.c4 *5 * Created: 21/09/2015 09:01:43 AM6 */

12

Page 13: Manual de prácticas para microcontrolador ATmega8

7

8 #include <avr/io.h>9

10 int main(void)11 {12 unsigned char Dig1, Dig2, R, Oper;13

14 DDRB = 0x00 ;15 DDRC = 0x00 ;16 PORTB= 0x00 ; // Resistores Pull Down17 PORTC= 0x00 ; // Resistores Pull Down18 DDRD=0xFF;19

20 while (1)21 {22 Dig1 = PINB&0x0F ;23 Dig2 =(PINB&0xF0)>>4;24 Oper = PINC&0x07 ;25

26 switch(Oper)27 {28 case 0: R = A + B;29 break;30 case 1: R = A - B;31 break;32 case 2: R = A * B;33 break;34 case 3: R = A & B;35 break;36 case 4: R = A | B;37 break;38 default: R = 0;39 }40 PORTD=R;41 }42 }

3.3.1. Descripción

13

Page 14: Manual de prácticas para microcontrolador ATmega8

4. Práctica 4

4.1. Objetivo

Mostrar letras (según las posibilidades)en un display 7 segmentos, formandouna palabra de mínimo 4 letras. Estas letras deben visulizarse cada 400ms. Dise-ñar las letras como se hizo en clase.

4.2. Diagrama eléctrico

Se presenta el diagrama eléctrico de la práctica.

Figura 8: Diagrama eléctrico de la Práctica4.

4.3. Código

Listing 4: Código Práctica 4

1 /*2 * Practica_4.c3 *4 * Created: 18/09/2015 07:21:54 AM5 */6

7 #define F_CPU 1000000UL

14

Page 15: Manual de prácticas para microcontrolador ATmega8

8 #include <avr/io.h>9 #include <util/delay.h>

10

11 int main(void)12 {13 DDRB = 0xFF;14 while(1)15 {16 PORTB = 0x7D;17 _delay_ms(400);18 PORTB = 0xF9;19 _delay_ms(400);20 PORTB = 0x50;21 _delay_ms(400);22 PORTB = 0x77;23 _delay_ms(400);24 PORTB = 0x50;25 _delay_ms(400);26 PORTB = 0x5E;27 _delay_ms(400);28 PORTB = 0x3F;29 _delay_ms(400);30 }31 }

4.3.1. Descripción

15

Page 16: Manual de prácticas para microcontrolador ATmega8

5. Práctica 5

5.1. Objetivo

Diseñar un registro de corrimiento de bits utilizando el puerto D. Debe ir del LSBal MSB y viceversa.

5.2. Diagrama eléctrico

Se presenta el diagrama eléctrico de la práctica.

Figura 9: Diagrama eléctrico de la Práctica 5.

5.3. Código

Listing 5: Código Práctica 5

1 /*2 * Proyecto_5.c3 *4 * Created: 18/09/2015 07:38:21 AM5 */6

7 #define F_CPU 1000000UL8 #include <avr/io.h>9 #include <util/delay.h>

10

11 int main(void)12 {13 DDRB = 0xFF;

16

Page 17: Manual de prácticas para microcontrolador ATmega8

14 PORTD = 0x01;15 while(1)16 {17 while (PORTB < 0x80)18 {19 PORTD = PORTD << 1; //Recorrer a la izquierda20 _delay_ms(300);21 }22 while (PORTD > 0x01)23 {24 PORTD = PORTD >> 1; //Recorrer a la derecha25 _delay_ms(300);26 }27 }28 }

5.3.1. Descripción

17

Page 18: Manual de prácticas para microcontrolador ATmega8

6. Práctica 7

6.1. Objetivo

Utilizar interrupciones y hacer conmutar el LSB del Puerto B.

6.2. Diagrama eléctrico

Se presenta el diagrama eléctrico de la práctica.

Figura 10: Diagrama eléctrico de la Práctica 7.

6.3. Código

Listing 6: Código Práctica 7

1 /*2 * Proyecto_7.c3 *4 * Created: 18/09/2015 07:38:21 AM5 */6

7 #include <avr/io.h>8 #include <avr/interrupt.h>9

10 ISR (INT0_vect)11 {12 PORTB = PORTB^0X01; //OR EXCLUSIVE PARA CONMUTAR LSB13 }14

15 int main ()

18

Page 19: Manual de prácticas para microcontrolador ATmega8

16 {17 DDRD = 0X00; //PUERTO D COMO ENTRADA18 PORTD = 0XFF; //RESISTOR PULL UP19

20 DDRB = 0XFF; //PUERTO B COMO SALIDA21

22 MCUCR= 0X02;//CONFIGURACION DE INTERRUPCION POR FLANCO DE ←-

BAJADA23 GICR = 0X40;//HABILITA INTERRUPCION24

25 PORTB = 0X00; //ESTADO INICIAL DE LA SALIDA26 sei () ; //HABILITADOR GLOBAL DE INTERRUPCIONES27

28 while (1)29 {30 asm( "nop" ) ;31 }32 }

6.3.1. Descripción

19

Page 20: Manual de prácticas para microcontrolador ATmega8

7. Práctica 8

7.1. Objetivo

Utilizar interrupciones y hacer conmutar el LSB del Puerto B durante 2000ms.

7.2. Diagrama eléctrico

Se presenta el diagrama eléctrico de la práctica.

Figura 11: Diagrama eléctrico de la Práctica 8.

7.3. Código

Listing 7: Código Práctica 8

1 #define F_CPU 1000000UL2 #include <avr/io.h>3 #include <avr/interrupt.h>4 #include <util/delay.h>5

6 ISR (INT0_vect)7 {8 PORTB = 0x01;9 _delay_ms(2000);

10 PORTB = 0x00;11 }12

13 int main(void)14 {15 DDRD = 0x00;

20

Page 21: Manual de prácticas para microcontrolador ATmega8

16 PORTD = 0xFF;17 DDRB = 0xFF;18

19 cli ();20

21 MCUCR = 0x02;22 GICR = 0x40;23

24 sei ();25

26 while(1)27 {28 PORTB = 0x40;29 }30 }

7.3.1. Descripción

21

Page 22: Manual de prácticas para microcontrolador ATmega8

8. Práctica 9

8.1. Objetivo

Realice contador de eventos ascendente y descendente con salida en binario.

8.2. Diagrama eléctrico

Se presenta el diagrama eléctrico de la práctica.

Figura 12: Diagrama eléctrico de la Práctica 9.

8.3. Código

Listing 8: Código Práctica 9

1 #include <avr/io.h>2 #include <avr/interrupt.h>3

4 unsigned char cuenta; // variable global5

6 ISR (INT0_vect)7 {8 cuenta ++;9 PORTB = cuenta;

10 }11

12 ISR (INT1_vect)13 {

22

Page 23: Manual de prácticas para microcontrolador ATmega8

14 cuenta--;15 PORTB = cuenta;16 }17

18 int main(void)19 {20 DDRD = 0x00; //Puerto D como entrada21 PORTD = 0xFF; // Configuracion Pull Up22 DDRB = 0xFF; // Puerto B como salida23

24 MCUCR = 0x0A; // Configuracion por flanco de bajada25 GICR = 0xC0; // Hablita INT1 E INT026 cuenta = 0;27 PORTB = cuenta; // inicializa la salida28 sei ();29

30 while(1)31 {32 asm ("nop");33 }34 }

8.3.1. Descripción

23

Page 24: Manual de prácticas para microcontrolador ATmega8

9. Práctica 10

9.1. Objetivo

Diseñe un sistema de conteo de 0 a 99 y muestrelos en dos display 7 segmentos.Cada display representala unidad y la decena.

9.2. Diagrama eléctrico

Se presenta el diagrama eléctrico de la práctica.

Figura 13: Diagrama eléctrico de la Práctica 10.

9.3. Código

Listing 9: Código Práctica 10

1 #define F_CPU 1000000UL2 #include <avr/io.h>3 #include <avr/pgmspace.h>4 #include <util/delay.h>5

6 const char tabla [ ] PROGMEM = { 0x3F, 0x06, 0x5B, 0x4F, 0←-

x66, 0x6D,7 0x7D, 0x7F, 0x67, 0x77, 0x7C, 0x39,8 0x5E, 0x79, 0x71};9

10 int main(void)11 {12 int u=0,d=0;13 DDRB=0xFF; //CONF COMO SALIDA14 DDRD=0xFF; //CONF COMO SALIDA15 while(1)16 {17 while ( d < 9)

24

Page 25: Manual de prácticas para microcontrolador ATmega8

18 {19 PORTB = pgm_read_byte(&tabla[d]);20 _delay_ms(150);21 d++;22

23 while (u < 9)24 {25 PORTD = pgm_read_byte(&tabla[u]);26 _delay_ms(150);27 u++;28 }29

30 PORTD = 0x3f;31 u = 0;32 }33

34 d = 0;35 }36 }

9.3.1. Descripción

25

Page 26: Manual de prácticas para microcontrolador ATmega8

10. Práctica 11

10.1. Objetivo

Generar una señal PWM en modo no invertido, con el ancho de pulso determi-nado por el valor delpuerto D.

10.2. Código

Listing 10: Código Práctica 11

1 #include <avr/io.h>2 //PWM3 int main(void)4 {5 DDRB = 0xFF; // Conf como salida6 PORTD = 0xFF; // Conf como entrada7

8 TCCR2 = 0x69;9

10 while(1)11 {12 OCR2 = PIND;13 }14 }

10.2.1. Descripción

26

Page 27: Manual de prácticas para microcontrolador ATmega8

11. Práctica 12

11.1. Objetivo

Diseñe un sistema que mantenga la temperatura de una habitación en el rangode 18 y 23 °C. Si esmayor a 23 °C debe encender un ventilador, si es menor a 18 °C uncalefactor. Si se encuentra dentro de los rangos no debe activarse algo.

11.2. Diagrama eléctrico

Se presenta el diagrama eléctrico de la práctica.

Figura 14: Diagrama eléctrico de la Práctica 12.

11.3. Código

Listing 11: Código Práctica 12

1 #define inf 3682 #define sup 4713

4 #include <avr/io.h>5

6 int main(void)7 {8 unsigned int temp;9 DDRB = 0xFF;

10 PORTB = 0x00;11

27

Page 28: Manual de prácticas para microcontrolador ATmega8

12 ADMUX = 0x00; // Selecciona ADC0 y Vref sin activar13 ADCSRA = 0xC3; // Habilita ADC, inicia conversion14

15 while(1)16 {17 while (!(ADCSRA & 1 << ADIF)); // Espera fin de ←-

conversion18 ADCSRA |= 1 << ADIF; // Limpia bandera19 temp = ADCW; // Obtiene la temperatura20 if (temp < sup)21 PORTB = 0x01;22 else if (temp < inf)23 PORTB = 0x02;24 else25 PORTB = 0x00;26 ADCSRA |= 1 << ADSC; // Inicia conversion27 }28 }

11.3.1. Descripción

28

Page 29: Manual de prácticas para microcontrolador ATmega8

12. Práctica 13

12.1. Objetivo

Diseñe el control de un seguidor de linea, compuesto por dos llantas traserasmanejadas por motoresindependientes y una llanta (bola loca). El móvil debe seguiruna línea blanca en una superficie de fondonegro. Suponga que los sensores se hanacondicionado de manera que, cuando se encuentran en una zonaoscura presentanun voltaje mayor a 2.5V y en una zona clara su voltaje está por debajo de ese nivel.

12.2. Código

Listing 12: Código Práctica 13

1 #include <avr/io.h>2

3 int main(void)4 {5 unsigned char sens;6 DDRB = 0xFF;7 PORTB = 0x03;8 ADCSRA = 0x00; // acitva ADC9 SFIOR = 0x08; // Conecta multiplexor con AC

10

11 while(1)12 {13 sens = 0x00;14 ACSR = 0x80; // Desact AC15 ADMUX = 0x00; // Selecciona Canal 016 ACSR = 0x00; // Activa AC17 asm ("nop");18 if (!(ACSR & 1 << ACO)) //Si sensor 1 esta en zona ←-

oscura19 sens |= 0x01; // Enciende motor 120 ACSR = 0x80;21 ADMUX = 0x01;22 ACSR = 0x00;23 asm ("nop");24

25 if (!(ACSR & 1 << ACO))26 sens |= 0x02;27 if (sens == 0x01 || sens == 0x02)28 PORTB = sens;29 else30 PORTB = 0x03;

29

Page 30: Manual de prácticas para microcontrolador ATmega8

31 }32 }

12.2.1. Descripción

30

Page 31: Manual de prácticas para microcontrolador ATmega8

13. Práctica 14

13.1. Objetivo

Diseñe un código en RobotC for VEX utilizando tres sensores de linea para resol-ver el problema del "LineFollower".

13.2. Código

Listing 13: Código Práctica 14

13.2.1. Descripción

31

Page 32: Manual de prácticas para microcontrolador ATmega8

14. Práctica 15

14.1. Objetivo

Diseñe un código en RobotC for VEX que logre situar al móvil dentro de un circu-lo, y una vez situadodentro del circulo evitar que salga. La destreza es utilizar el sen-sor o los sensores de luz.

14.2. Código

Listing 14: Código Práctica 15

14.2.1. Descripción

32

Page 33: Manual de prácticas para microcontrolador ATmega8

15. Práctica 16

15.1. Objetivo

Diseñe un robot Móvil de ruedas o patas (articulaciones) con las siguientes ca-racterísticas.

15.2. Características

1.- El robot Móvil deberá tener Ruedas o patas. 2.- Las dimensiones del RobotMóvil no deben exceder las dimensiones de 20x20x40 cm, esto con el fín deque pue-da trasladarse y moverse dentro de un laberinto. 3.- Es libre de usar cualquier dis-positivo uC o embebido para su control. 4.- Deberá tener como mínimo un sensorultrasónico en la parte frontal del Móvil. 5.- Deberá tener al menos un par de ele-mentos ópticos (IRED y Fototransistor) que ayude al Móvil en ladetección de lineas(blancas o negras). 6.- Es necesario que el Móvil se pueda armar y desarmar de ma-nera practica, procurepegarsolo lo necesario,haga uso de tornillería. 7.- Es necesarioque los circuitos electrónicos posibles a usar esten en PCB (Print Circuit Board). 8.-El Móvil debe tener un boton de encendido. 9.- Considere la pila ya en el Móvil. 10.-Para este corte valorativo (primer Parcial), se pide solo el mecanismo pero listo paracargar códigos. 11.-Podrá, si así lo desea, tomar algunas recomendaciones vistas enclase para su contruccíon.12.- Recuerde que este practica equivale a 2.5 pts

33