Practica1 1 AVR

31
UNIVERSIDAD POLITECNICA SALESIANA PRACTICA #1 DE AVR SISTEMAS MICROPROCESADOS I

Transcript of Practica1 1 AVR

Page 1: Practica1 1 AVR

UNIVERSIDAD POLITECNICA SALESIANA

PRACTICA #1 DE AVR

SISTEMAS MICROPROCESADOS I

Page 2: Practica1 1 AVR

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

TEMA CONTROL DE PUERTOS EN EL AVR

OBJETIVO

Programas un microcontrolador AVR con un lenguaje de realizado en el software Bascom AVR.

Asimilar un nuevo lenguaje de programación para los atmega. verificar el funcionamiento en cada uno de sus ejercicios tanto de lectura como

de escritura en cada uno de sus pines.

MARCO TEORICO

BASCOM-AVR©

Es un COMPILADOR BASIC en Windows para la familia de microcontroladores AVR. Está diseñado para trabajar en W95/W98/NT/XP

La carga de programas se puede realizar desde un PC a través del bus SPI con el AVR-ISP in system programing de Atmel por el puerto serie, con la mochila AVR-ISP de puerto paralelo - serie ó utilizando el boot ó programa cargador incorporado en la parte alta de la flash rom a través de los pins serie 1 de la CPU.

CARACTERISTICAS:

BASIC estructurado con etiquetas. Programación estructurada con sentencias IF-THEN-ELSE-END IF, DO-LOOP,

WHILE-WEND, SELECT- CASE. Generación de código máquina nativo en lugar de código interpretado. Bit, Byte, Entero, Word, Largo, y variables tipo String . (Solo con la Prof. Edición) Los programas compilados trabajan con todos los microprocesadores (no-

MEGA) de AVR que tienen memoria interior. La Prof.-edición apoyará la serie de MEGA también. Puesto que los 1200 no tienen SRAM, no funcionará con los 1200.

Las instrucciones y comandos de este BASIC son bastante similares a las del Visual Basic y QuickBASIC de Microsoft.

Comandos específicos para el manejo de displays LCD, integrados I2C e integrados 1WIRE Chips, teclado de PC, teclado de matriz, recepción RC5, software UART. SPI, LCD Gráficos, envió de IR RC5 o código Sony.

Soporta variables locales, uso de funciones, y librerías Emulador terminal integrado con opción de download. Simulador integrado por probar..

Page 3: Practica1 1 AVR

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

Programador de ISP integrado (aplicación nota AVR910.ASM). se agregarán Otros programadores por pedido.

Integrado el soporte del programador STK200 y STK300. También soporta el Electronics programme de bajo costo. ¡Puede construirse en 10 minutos!

Editor con subrayador de sentencias. Ayuda ON LINE en el editor.

Soporta Las siguientes declaraciones (hay muchas más revise el archivo HELP):

COMANDOS E INSTRUCCIONES:

De estructura y condicionalesIF, THEN, ELSE, ELSEIF, END IF, DO, LOOP, WHILE, WEND, UNTIL, EXIT DO, EXIT WHILE, FOR, NEXT, TO, DOWNTO, STEP, EXIT FOR, ON .. GOTO/GOSUB, SELECT, CASE.

De entrada/salidaPRINT, INPUT, INKEY, PRINT, INPUTHEX, LCD, UPPERLINE, LOWERLINE,DISPLAY ON/OFF, CURSOR ON/OFF/BLINK/NOBLINK, HOME, LOCATE, SHIFTLCD LEFT/RIGHT, SHIFTCURSOR LEFT/RIGHT, CLS, DEFLCDCHAR, WAITKEY, INPUTBIN, PRINTBIN, OPEN, CLOSE, DEBOUNCE, SHIFTIN, SHIFTOUT, GETATKBD, SPC

Funciones numéricasAND, OR, XOR, INC, DEC, MOD, NOT, ABS, BCD, LOG, EXP, SQR, SIN,COS,TAN,ATN, ATN2, ASIN, ACOS, FIX, ROUND, MOD, SGN, POWER, RAD2DEG, DEG2RAD, LOG10, TANH, SINH, COSH.

12CI2CSTART, I2CSTOP, I2CWBYTE, I2CRBYTE, I2CSEND and I2CRECEIVE.

1WIRE1WWRITE, 1WREAD, 1WRESET, 1WIRECOUNT, 1WSEARCHFIRST, 1WSEARCHNEXT

SPISPIINIT, SPIIN, SPIOUT, SPIMOVE

Gestión de interrupcionesON INT0/INT1/TIMER0/TIMER1/SERIAL, RETURN, ENABLE, DISABLE, COUNTERx, CAPTUREx, INTERRUPTS, CONFIG, START, LOAD.

Manipulación de bitsSET, RESET, ROTATE, SHIFT, BITWAIT, TOGGLE.

VariablesDIM, BIT , BYTE , INTEGER , WORD, LONG, SINGLE, STRING , DEFBIT, DEFBYTE, DEFINT, DEFWORD.

Page 4: Practica1 1 AVR

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

VariosREM, ' , SWAP, END, STOP, CONST, DELAY, WAIT, WAITMS, GOTO, GOSUB, POWERDOWN, IDLE, DECLARE, CALL, SUB, END SUB, MAKEDEC, MAKEBCD, INP,OUT, ALIAS, DIM , ERASE, DATA, READ, RESTORE, INCR, DECR, PEEK, POKE, CPEEK, FUNCTION, READMAGCARD, BIN2GREY, GREY2BIN, CRC8, CRC16, CHECKSUM.

Directivas$INCLUDE, $BAUD and $CRYSTAL, $SERIALINPUT, $SERIALOUTPUT, $RAMSIZE, $RAMSTART, $DEFAULT XRAM, $ASM-$END ASM, $LCD, $EXTERNAL, $LIB.

CadenasSTRING, SPACE, LEFT, RIGHT, MID, VAL, HEXVAL, LEN, STR, HEX, LTRIM, RTRIM, TRIM, LCASE, UCASE, FORMAT, FUSING, INSTR.

Y muchas otras funciones, declaraciones y directivas.

Para hacer un programa sólo debe seguir 4 pasos:

Escriba el programa en BASIC. Compile a código máquina binario (ejecución rápida). Testee el resultado con el simulador integrado (con hardware adicional puedes

simular todo el hardware). Programa el chip con uno de los programadores integrados .

(el hardware se adquiere por separado) El programa puede escribirse en un editor MDI de código en color

cómodamente.

Además de las características habituales el editor soporta Undo, Redo, Bookmarks y bloques.

Page 5: Practica1 1 AVR

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

1. Escribir el valor 55 hexagesimal en el puerto D

ALGORITMO

Entradas Número 55h

Salidas Código binario del número 55h en el PortD del AVR

Procesos configurar el puerto iniciar un lazo infinito escribir en el puerto el valor de 10101010 fin del lazo fin del programa

DIAGRAMA DE FLUJO

CODIGO:

$regfile "m164Pdef.dat" 'librería de trabajo del ATMEGA164P

$crystal = 8000000 'cristal a utilizar 8000000 MHz

Page 6: Practica1 1 AVR

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

Ddrd = 255 'se especifica el puerto D como salida

Config Portd = Output 'se inicializa el puerto D como salida

Do 'inicio de un lazo infinito

Portd = &B1010_1010 'se escribe en el puerto el valor de 55h

Loop 'fin de lazo

End 'fin de programa

SIMULACION

2.- este programa escribe en un pin del puerto D

ALGORITMO

Entradas Numero 55 hexagesimal

Page 7: Practica1 1 AVR

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

Salidas escribir en el puerto el valor de 55 en hexagesimal.

Procesos configurar el puerto iniciar un lazo infinito escribir en el puerto el valor de 55 hexagesimal fin del lazo

DIAGRAMA DE FLUJO

CODIGO

'Este programa escribe en un pin del puerto D

$regfile "m164Pdef.dat" 'librería de trabajo del ATMEGA 164p

$crystal = 8000000 'cristal a utilizar 8000000 MHz

Ddrd = 255 'se especifica el puerto D como salida

Config Portd = Output 'se inicializa el puerto D como salida

Portd = 0

Page 8: Practica1 1 AVR

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

Do

Portd.1 = 1 'se escribe en el puerto el valor de 55h

Loop 'fin del lazo

End 'fin de programa

SIMULACION

3.- En el programa numero 1 cambiar el valor de 55 hex por el valor decimal 240

ALGORITMO

Entradas Numero binario 1111 0000

Salidas escribir en el puerto el valor de F0 en hexagesimal.

Procesos o configurar el puerto

Page 9: Practica1 1 AVR

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

iniciar un lazo infinito escribir en el puerto el valor de F0 hexagesimal fin del lazo fin del programa

DIAGRAMA DE FLUJO

CODIGO

'Este programa escribe el valor 55h en el puerto D.

$regfile "m164pdef.dat" 'librería de trabajo del ATMEGA164p

$crystal = 8000000 'cristal a utilizar 8000000 MHz

Ddrd = 255 'se especifica el puerto D como salida

Config Portd = Output 'se inicializa el puerto D como salida

Do 'inicio de un lazo infinito

Portd = &B1111_0000 'se escribe en el puerto el valor de 240

Loop 'fin de lazo

Page 10: Practica1 1 AVR

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

SIMULACION

4.- Lectura y escritura en puertos

Para leer en un puerto de un microcontrolador AVR se utiliza el comando PIN .además se va ha introducir al uso de variables.

ALGORITMO

Entradas Defino la variable A Salidas Codigo binario escrito en el puerto D Procesos

Defino una Variable Guardar el valor Configuro el puerto D como salida Configuro el puerto B como entrada

Page 11: Practica1 1 AVR

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

Inicio de lazo infinito Lee en la variable A los datos escritos en el puerto B Se escribe en el puerto D los datos en el puerto B fin del lazo fin del programa

DIAGRAMA DE FLUJO

CODIGO

$regfile "m164pdef.dat"$crystal = 8000000Ddrb = 0 ‘SE ESPECIFICA PUERTO B COMO ENTRADASDdrd = 255 ‘SE ESPECIFICA PUERTO D COMO SALIDASConfig Portd = OutputConfig Portb = InputDim A As ByteDoA = Pinb ‘SE LEE EN LA VARIABLE A LOS DATOS ESCRITOS EN EL PUERTO BPortd = A ‘SE ESCRIBE EN EL PUERTO D LOS DATOS LEIDOS EN EL PUERTO B

Page 12: Practica1 1 AVR

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

LoopEnd

SIMULACION

5.- Utilizando el esquema del tema o ejercicio 4 se comprobara el uso de las funciones Lógicas and, or, xor y not.

ALGORITMO

Entradas Defino la variable A,B,C,D Salidas Código binario escrito en el puerto D Procesos

Definir las Variables A,B,C,D Guardar el valor de las Variables

Page 13: Practica1 1 AVR

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

configurar el puerto Se inicializa el puerto D como salida Se inicializa el puerto B como entrada Inicio de lazo infinito Realización de Operaciones con funciones lógicas and or Xor not Imprimir resultados en puertos A,B,C,D Fin del lazo Fin del Programa.

DIAGRAMA DE FLUJO

CODIGO

$regfile "m16def.dat"$crystal = 8000000Ddrb = 0Ddrd = 255Config Portd = Output

Page 14: Practica1 1 AVR

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

Config Portb = InputDim A As Bit , B As Bit , C As Bit , D As BitDoA = Pinb.0 And Pinb.1Portd.0 = AB = Pinb.2 Or Pinb.3Portd.1 = BC = Pinb.4 Xor Pinb.5Portd.2 = CD = Not Pinb.6Portd.3 = DLoopEnd

Page 15: Practica1 1 AVR

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

SIMULACION

6.- Ejercicio Propuesto: Crear la tabla de la siguiente función booleana: (A and B)OR (Not C).

Tabla de Verdad

ABC (AB)+/C0 0 0 10 0 1 00 1 0 10 1 1 01 0 0 11 0 1 01 1 0 11 1 1 1

ALGORITMO

Entrada Defino la variable A,B,C Salidas Código binario escrito en el puerto D Procesos

Definir las Variables A,B,C Guardar el valor de las Variables configurar el puerto Se inicializa el puerto D como salida Se inicializa el puerto B como entrada Inicio de lazo infinito Realización de Operaciones con funciones lógicas AND OR Muestro resultados en puertos A,B,C Fin del lazo

Page 16: Practica1 1 AVR

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

Fin del Programa.

DIAGRAMA DE FLUJO

CODIGO

'TABLAS DE VERDAD$regfile "m164Pdef.dat"$crystal = 8000000Ddrb = 0 'se especifica el puerto B como entradaDdrd = 255 'se especifica el puerto D como salidaConfig Portd = Output 'se inicializa el puerto D como salidaConfig Portb = Input 'se inicializa el puerto B como entradaDim A As Bit , B As Bit , C As Bit , D As Bit 'se define las variables A, B, C, D tipo bitDoA = Pinb.0 And Pinb.1B = Not Pinb.2C = A Or BPortd.0 = CLoopEnd

Page 17: Practica1 1 AVR

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

SIMULACION

Page 18: Practica1 1 AVR

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

CONCLUSIONES

La programación en BASCOM-AVR maneja un lenguaje sencillo de entender lo cual permite realizar diversas aplicaciones.

Los puertos del AVR pueden ser utilizados como entradas o como salidas dependiendo el uso que se le quiera dar.

La forma de carga el programa hecho en BASCOM se lo hace con el archivo .hex.

Para realizar la programación en el BASCOM no funciona para todos los AVR para algunos AVR hay que tener otra versión del BASCOM para poder cargar el programa.

RECOMENDACIONES

Leer el manual del AVR a ocupar para saber cuáles son los pines de Vdd y Vss ya que si no conectamos esos pines el ATMEGA no funcionara.

Tener la programadora adecuada para los AVR verificando si el ATMEGA que vamos a utilizar si se lo puede cargar sin ningún inconveniente.

BIBLIOGRAFIA

Hoja de prácticas de microcontroladores AVRManual de microcontrolador AVR ATMEGA 164P

Page 19: Practica1 1 AVR

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

Page 20: Practica1 1 AVR

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

Page 21: Practica1 1 AVR

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

Page 22: Practica1 1 AVR

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

Page 23: Practica1 1 AVR

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

Page 24: Practica1 1 AVR

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I