DIRECTIVAS AVR

  • Upload
    jmsaak

  • View
    261

  • Download
    3

Embed Size (px)

Citation preview

__________________________________________________________________________ITSP

Directivas y Software del AVR Studio4.1 DIRECTIVAS Y EXPRESIONES DEL ENSAMBLADOR AVR STUDIODirectivas del Ensamblador La Directivas en el Ensamblador se ajustan al cdigo del usuario. Por ejemplo, podrs cambiar la localidad del cdigo en la memoria del programa, asignando etiquetas que direccionan a la SRAM o definir los valores de las constantes. .macro es tambin una directiva en el ensamblador. Las directivas del ensamblador se pueden dividir dentro de los siguientes grupos: Directivas de la Memoria Programa .cseg "Segmento de Cdigo"; esta directiva le dice al ensamblador que el siguiente cdigo o expresiones debern colocarse en la memoria de programa. Esto es necesario cuando la directiva .dseg se usa para declarar constantes y datos. Sintaxis: .cseg .db "Byte de Datos"; con esta directiva podrs colocar valores de las constantes en la memoria de programa en una direccin conocida, por ejemplo, nmeros seriados, cadenas para un men, tablas. Ellos son tratados como bytes y debern estar dentro de un rango de 8 bits. Casi todas las expresiones utilizan la directiva .db. Cada directiva .db se colocara al inicio de una nueva palabra en la memoria de programa. As, dos directivas .db de un solo byte como argumento usaran dos palabras, mientras que una directiva .db con dos bytes como argumentos usaran solamente una palabra. Ver el ejemplo siguiente: Sintaxis: .db expresin1,expresin2,expresin3, ...

Documento traducido de la pagina AVRfreaks.net

1

__________________________________________________________________________ITSP Ejemplos:.org 0x0100 .db 128 .db low(1000) .db 128,low(1000);colocar en la memoria de programa a partir de la direccin 0x0100 ;coloca el numero 128 en el byte bajo de la direccin 0x0100 en memoria de programa ;coloca el byte bajo de 1000 en la direccin baja de 0x0101 ;coloca 128 en el byte bajo y el byte bajo de 1000 en la direccin alta de la direccin 0x0102 en la memoria de programa

Las cadenas pueden ser colocadas en la memoria de programa con solo la directiva .db: .db "Hello World!" Esto rellenar 6 palabras de datos o 12 bytes. Si deseas que a la cadena se le aada un 0 al final de la misma debers colocarla as: .db "Hello World!", 0 .dw "Palabra de Datos"; la directiva .dw trabaja como la directiva .db, pero se usar una palabra para cada valor. .org .org puede ser usada para establecer el contador de programa a un valor especfico. .org 0x01 es el Vector de Interrupcin para una interrupcin externa 0 en dispositivos con una tabla de interrupcin de una palabra. Sintaxis: .org localidad (es la direccin de la localidad donde se colocaran las tablas de instrucciones o datos). Directivas SRAM .byte Reserva un nmero de bytes en el espacio de la SRAM para una etiqueta. Esta directiva es solamente permitida en segmentos de datos. Sintaxis: .byte tamao

Documento traducido de la pagina AVRfreaks.net

2

__________________________________________________________________________ITSParray_5: .byte 5 my_word: .byte 2 ; array_5 es un segmento de 5 bytes en la SRAM ;y es seguida por my_word de dos bytes

.dseg "Segmento de Datos"; le dice al ensamblador que el siguiente texto es usado para establecer la SRAM. Para cambiarse al segmento de cdigo de nuevo, use .cseg. .org Utilice esta directiva para establecer el contador de la localidad SRAM a un valor especfico dentro de .dseg. Juntos con .byte puedes definir las localidades de la SRAM en direcciones especificas con un tamao especfico. Directivas EEPROM Las directivas EEPROM trabajan justo como las directivas para la memoria de programa y la SRAM. Los valores pueden ser descargados para almacenarlos en la EEPROM y las directivas .db y .dw se usan de igual manera. .db .dw .eseg .org Directivas de Registros y Constantes .def "Definir (registros)"; con esta directiva podrs asignar nombres a los registros para identificarlos. Sintaxis: .def nombre = registro Ejemplo: .def temp = r16 .equ Esta directiva asigna un nombre a una constante la cual no pueda cambiarse despus: .equ max_byte = 255 Documento traducido de la pagina AVRfreaks.net3

__________________________________________________________________________ITSP .set Esta directiva trabaja de forma similar a .def, pero el valor de la etiqueta puede cambiarse despues: .set contador = 1 .set contador = 2 .set contador = 1 se le sobreescribe con .set contador = 2. Directivas de Cdigo .endm / .endmacro "Fin de la Macro"; Esta le dice al ensamblador que una macro previamente comenz y finalice aqu. Solamente se usa cuando al inicio se tenga la directiva .macro. .macro Esta inicia un cdigo de macro. .include Incluye archivos (por ejemplo, la definicin de archivos para cada AVR) y tiene la posibilidad de separar cdigo dentro de varios archivos. Sintaxis: .include path Ejemplo:.include c:\Archivos de programa\Atmel\AVR Tools\AvrAssembler\Appnotes\m32def.inc" .include "\drv_routines\lcd.inc"

Directivas de Salida del Ensamblador .device Esta directiva le dice al ensamblador cual AVR se va a utilizar para el cdigo y se establecen los parmetros del Simulador AVR Studio. AT90S1200 ATmega32 ATtiny26 Sintaxis: .device codigo_del_dispositivo Documento traducido de la pagina AVRfreaks.net4

__________________________________________________________________________ITSP .exit Le dice al ensamblador cuando detenerse el archivo actual. Ejemplo: .def byte_max = 255 .def clock = 8000000 .exit El valor mximo de un byte es de 255 y algunos dispositivos trabajan a 8 MHz .list El ensamblador por default crea un archivo de lista (una combinacin de cdigo fuente, cdigo de operacin y constantes). Aunada con .nolist puedes especificar que partes del archivo se mostraran en el archivo de lista. .listmac Esta directiva creara una macro expansin del archivo lista. Por default, solamente se ve que macro es llamada y que argumentos se usan. Para poder ver que esta pasando durante la ejecucin, para propsitos de debugging. .nolist Directiva que detiene la generacin del archivo de lista.

Documento traducido de la pagina AVRfreaks.net

5

__________________________________________________________________________ITSP

4.2 INICIALIZANDO EL AVR STUDIO

Inicialice el programa del AVR Studio 4 dando un clic en:Inicio Todos los Programas ATMEL AVR Tools AVR Studio 4

Una vez que dio clic en el programa, se ver una pantalla como esta.

4.3 CREANDO UN PROYECTO NUEVOEn esta seccin se crear un programa simple que incremente el valor de uno en los registros del PUERTO, haciendo un conteo binario. Para crear un proyecto nuevo, vaya al men Project y selecciona New Project. Un cuadro de dialogo se mostrar como aparece en la siguiente figura. En este cuadro de dialogo podrs ver dos tipos de proyectos, si deseas realizar un programa en ensamblador (.asm) elige Atmel AVR Assembler, o de lo contrario si deseas realizar un programa en Lenguaje C (.c) elige AVR GCC. Se elegir un programa en ensamblador y de Project name led, pero este puede ser cualquier nombre. Despus tendrs que seleccionar el lugar donde se guardar el proyecto. Este es el lugar donde el AVR Studio almacenara todos los archivos asociados con este proyecto. Usa un directorio como el c:\CodeAVR. Si la carpeta no existe, AVR Studio automticamente la crear sin ninguna notificacin. Documento traducido de la pagina AVRfreaks.net6

__________________________________________________________________________ITSP NOTA: Si c:\CodeAVR ya existe, borrar esta carpeta y su contenido.

Despus dando un clic en Next>> te llevar a la siguiente pantalla, en donde preguntar que plataforma para el debugger y que dispositivo utilizaras. Debers elegir AVR Simulator y el Dispositivo Atmega32.

Documento traducido de la pagina AVRfreaks.net

7

__________________________________________________________________________ITSP Despus de dar un clic en Finish, el administrador de proyectos te mostrar una figura como la siguiente. En esta vista, se vern todos los archivos asociados con el proyecto, los cuales estarn vacos en este momento.

Editando el Archivo en EnsambladorEl prximo paso es llenar el archivo vaco led.asm. Abra el archivo led.asm dando doble clic en l en la ventana de proyectos. El cursor se coloca al inicio del archivo vaco y tendrs que insertar el siguiente cdigo o simplemente Copiarlo y Pegarlo directamente donde se encuentra la ventana de edicin.;************************************************************** .include "m32def.inc" ;Incluir este archivo para el ATMega32 rjmp RESET ;Saltar a la etiqueta Reset ;************************************************************** RESET: .def temp =r16 ldi out ldi out temp,low(RAMEND) SPL,temp temp,high(RAMEND) SPH,temp

;Definir al registro 16 como temp ;Cargar parte baja del fin de la RAM ;en temp, y despues al stack ;Cargar parte alta del fin de la RAM ;en temp, y despues al stack ;Inicializar el Apuntador de Pila ;Colocar a unos el registro 16 = temp ;Colocar PuertoB como salida en DDRB ;Etiqueta del lazo ;Sacar al PuertoB el dato de temp ;Incrementar temp ;Saltar a loop 8

ser temp out DDRB,temp loop: out PORTB,temp inc temp rjmp loop

Documento traducido de la pagina AVRfreaks.net

__________________________________________________________________________ITSP La ventana del editor deber mostrarse como en la siguiente figura:

Ensamblado del Cdigo FuenteEste ejemplo requiere que el archivo m32def.inc sea insertado en la carpeta c:\CodeAVR\. Este archivo contiene las definiciones necesarias para el ensamblado del microcontrolador ATmega32. Extrae y copia el archivo m32def.inc de la direccin: C:\Archivosdeprograma\Atmel\AVRTools\AvrAssembler\Appnotes en la direccin de la carpeta en c:\CodeAVR\led\. El prximo paso ahora es ensamblar el archivo. Esto se realiza seleccionando Build del men Build, o simplemente presionando .

Documento traducido de la pagina AVRfreaks.net

9

__________________________________________________________________________ITSP

La ventana de Salida ahora mostrar informacin del ensamblado. Haciendo referencia a la cantidad de bytes usados para el cdigo, datos y eeprom. De esta ventana podemos ver que solo el rea de cdigo esta siendo usada solo por 20 bytes del programa, siendo menos del 0.1% lo utilizado, adems de que el ensamblado fue completado sin errores.

Documento traducido de la pagina AVRfreaks.net

10

__________________________________________________________________________ITSP

Aadiendo un archivo ASMAhora aadiremos un archivo en ensamblador al proyecto. Esto con la finalidad de usar el mismo proyecto ya configurado para ATmega32 con otros archivos para el mismo microcontrolador. Se ilustra en las figuras de abajo como se puede realizar:

Si deseas aadir un archivo existente al proyecto, da un clic con el botn derecho en Source Files y selecciona Add File to Project. Se abrir un cuadro de dialogo, navega hacia la carpeta donde se encuentra el archivo deseado, seleccionalo y adelo dando un clic en el botn Abrir.

Documento traducido de la pagina AVRfreaks.net

11

__________________________________________________________________________ITSP

Para poder ensamblar el archivo recientemente insertado debers colocarlo como archivo de entrada. Esto se realiza dando un clic en el archivo insertado con el botn derecho y seleccionando Set As Entry File.

Documento traducido de la pagina AVRfreaks.net

12

__________________________________________________________________________ITSP El archivo nuevo automticamente se marcara como Archivo de entrada en Ensamblador. Esto indica que el ensamblador iniciara con este archivo cuando se ensamble el proyecto. El flder de los archivos a ensamblar solamente contendr un solo archivo marcado. El archivo actual de entrada se indica con una flecha roja en el icono.

Ahora haremos correr el cdigo en el simulador.

Documento traducido de la pagina AVRfreaks.net

13

__________________________________________________________________________ITSP

4.4 SIMULACIN DEL CDIGOEn este punto hemos generado un archivo para poder simular el cdigo. Si desea correr un cdigo, seleccione Build and Run del men Build o simplemente presione .

Apuntador de InstruccinAhora analizaremos el editor, veras una flecha amarilla que aparece al margen izquierdo del cdigo. Esta flecha indica la posicin del contador de programa. En otras palabras, apunta a la siguiente instruccin a ser ejecutada. Lo que debemos hacer ahora es ver las lneas de entrada salida para visualizar que esta pasando en los registros del Puerto B, durante la ejecucin del programa.

Documento traducido de la pagina AVRfreaks.net

14

__________________________________________________________________________ITSP

Estableciendo la visualizacin a IOAbra la ventana de IO seleccionando la pestaa "IO del menu "View" Toolbars. Ya que hemos seleccionado el ATmega32 durante las opciones del simulador estableciendo la visualizacin de IO se abrir automticamente. NOTA: Si ya esta marcada con una ya no es necesario el paso anterior.

La ventana de IO se utiliza para inspeccionar y modificar los contenidos de los registros de I/O en la ejecucin. La configuracin estndar te da una vista rpida del hardware con la habilidad para expandir los smbolos particulares para mayor informacin.

Documento traducido de la pagina AVRfreaks.net

15

__________________________________________________________________________ITSP

Abra el Puerto B dando dos clics en el icono del puerto. Ahora se expandir y se mostraran todos los registros asociados con el Puerto B, estos son: Registro de Datos del Puerto B (PORT B), la Direccin de Datos (DDRB) y los Pines de Entrada (PINB). Como se muestra cada bit en los registros se representan por un cuadro de chequeo. Un cero lgico (0) se representa por el cuadro de chequeo sin marca y un uno lgico (1) se representa por el cuadro de chequeo con una marca. Estos cuadros de chequeo sern actualizados durante la ejecucin del programa, y muestran el estado actual de cada bit. Tambin podrs colocar un uno o limpiar estos bits dando un clic en el cuadro de chequeo apropiado en cualquier tiempo durante la ejecucin del programa.

Documento traducido de la pagina AVRfreaks.net

16

__________________________________________________________________________ITSP

Programa paso a pasoExisten dos comandos para correr el cdigo paso a paso. Son "Step Over" y "Trace Into" . La diferencia entre estos dos comandos es que no entra dentro de las subrutinas. Ya que en nuestro ejemplo no contiene ninguna subrutina, no habr diferencia entre la operacin de estos comandos en este ejemplo. Ahora ejecutando paso a paso hasta la ultima lnea del cdigo (rjmp loop) presionando repetidamente o seleccionando "Trace Into" del men "Debug". Note como el color cambia de negro a rojo en los registros donde cambia el valor. Esto hace ms fcil identificar cuales registros cambian los valores en cada instruccin. Continua presionando y se vera como el valor binario del Puerto B se incrementa.

Documento traducido de la pagina AVRfreaks.net

17

__________________________________________________________________________ITSP

Colocando BreakpointsLos breakpoints son un mtodo para detener el flujo de la ejecucin. Aadiendo en el cdigo ensamblador, podemos correr el programa a velocidad real, y este se detendr en la lnea que contenga el breakpoint. Por ahora solo se ha comentado que presionando tres veces iras a travs del loop una vez. Aadiremos un breakpoint en la instruccin rjmp loop para mostrarte como se usa para detener el proceso de debug. Coloca el cursor en la instruccin rjmp loop del cdigo fuente y presiona (o en el men Debug selecciona "Toggle Breakpoint"). Un crculo rojo aparecer al margen izquierdo del cdigo fuente como se muestra. Presionando o "Go" del men "Debug" el programa empezara a correr y har una parada (stop) en la instruccin que contenga el breakpoint.

Documento traducido de la pagina AVRfreaks.net

18

__________________________________________________________________________ITSP

Modificando el CdigoAhora vamos a programar un conteo descendente. Para hacer este cambio editaremos el cdigo fuente. Coloca el cursor en la ventana de la fuente, y cambia la instruccin de inc a dec. Si ahora presionas (Go) el siguiente cuadro de dialogo aparecer. Este cuadro indica que uno de los archivos fuente ha sido cambiado, y el proyecto deber recompilarlo. Presione "Yes".

El proyecto ahora se recompilara, y el apuntador de instruccin apuntara al inicio de la primera lnea del cdigo. Note como el breakpoint permanece.

Abriendo la ventana WatchAbra la ventana Watch seleccionando "Watch" del menu "View".

Documento traducido de la pagina AVRfreaks.net

19

__________________________________________________________________________ITSP

Las variables que son definidas (por la directiva .def) pueden ser colocadas en la ventana Watch. La nica variable definida en este cdigo es la variable temp. De un clic con el botn derecho y la ventana "Watches" se abrir, seleccione "Add Watch". Teclee en el nombre de la variable temp y presione Enter. Como se contina con la ejecucin del programa, la variable temp constantemente se actualizara durante la ejecucin del programa.

Ajustando la informacin del ProcesadorAhora ajustaremos la informacin del Procesador. Abra esta informacin dando un clic en "Processor" dentro de la ventana de IO del men "View". Documento traducido de la pagina AVRfreaks.net20

__________________________________________________________________________ITSP

Dentro de la informacin que muestra el procesador especifica el registro de Banderas de estado y el actual valor de los diferentes apuntadores. Aqu tambin encontraras el contador de ciclos y la ventana de Stop. Estas ventanas son tiles si deseas medir la longitud de un lazo o cuanto tiempo utiliza una subrutina especifica. No utilizaremos esta informacin directamente en este ejemplo, pero provee mucha informacin durante el debugging de un proyecto.

Salvando el ProyectoEn el AVR Studio para salvar el proyecto selecciona "Save" del men "Project".

4.5 GRABANDO EL ARCHIVO EN EL MEGA32Cuando se ha finalizado la simulacin del programa, y el programa ya este funcionando sin errores de programacin, entonces se requiere que este sea descargado al mega32 usando el AVR Studio. Primeramente se necesita que el AVR Studio genere como archivo con formato de salida en HEX. Para hacer esto, se necesita generar "Intel Hex Format Output". As que en el men Project das un clic en Assembler Options.

Documento traducido de la pagina AVRfreaks.net

21

__________________________________________________________________________ITSP

Despus de dar un clic en Assembler Options se genera la siguiente ventana.

En la opcin Hex Output Format, deber asegurarse de que se encuentre la opcin Intel intellec 8/MDS (Intel hex), en la Opcin Output File se marca la casilla Entry File y en la opcin AVR Assembler, se marca la casilla Versin 2. Despus OK.

Documento traducido de la pagina AVRfreaks.net

22

__________________________________________________________________________ITSP

Configurando el Convertidor de USB a Serial.Asegrese de que el mega32 este insertado en la tarjeta programadora, as como tambin se encuentre alimentado con su adaptador de CA/CD. Inserte por el puerto serial la interfase Serial y a su puerto de su PC la interfase USB, una vez insertada la terminal, su computadora le pedir que instale los controladores USB-Serial, para esto tendr que tener a la mano su disco de instalacin. Ejectelo. Y espere la ventana de haber instalado su driver correctamente.

Ahora abra el Panel de control en Sistema, y dando un clic en la pestaa Hardware abra el Administrador de dispositivos. Revise los puertos (COM & LPT), y de un clic en la cruz (+), esta se abrir mostrando algo como la siguiente ventana.

Documento traducido de la pagina AVRfreaks.net

23

__________________________________________________________________________ITSP Dando dos clics en USB-SERIAL CH430, se abrir una ventana como la siguiente.

Dirjase a la pestaa de Configuracin de puerto, y aparecer una ventana como esta.

Documento traducido de la pagina AVRfreaks.net

24

__________________________________________________________________________ITSP De un clic en Opciones avanzadas y aparecer la siguiente ventana. En la casilla de Nmero de puerto COM: asegrese de que seleccione un puerto que se encuentre libre como COM1, COM2, COM3 o COM4. Ya que el AVR Studio solamente verifica estos 4 puertos por si est alguna tarjeta grabadora de avrs1, en un puerto USB.

De Aceptar, Aceptar, Archivo Salir y Aceptar. Y Listo tu computadora ya est configurada para conectarse con la tarjeta grabadora de AVRs. Dirjase al AVR Studio y en el men Tools seleccione AVR Prog.

Documento traducido de la pagina AVRfreaks.net

25

__________________________________________________________________________ITSP Aparecer la siguiente ventana para descargar el programa en HEX, desde el AVR Studio.

En la opcin Hex File busque el archivo en hexadecimal del programa a grabar. En la opcin Device seleccione el ATmega32 como microcontrolador a grabarse. De un clik en Program de la pestaa flash, para grabar el archivo en la memoria flash del Mega32 o en su defecto en Program de la pestaa EEPROM para grabar el archivo en la memoria EEPROM. NOTA: La tarjeta grabadora deber estar alimentada con el adaptador de CA/CD.

1

http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&p=432640 http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=36947&postdays=0&postorder=asc&start=20

Documento traducido de la pagina AVRfreaks.net

26