Tutorial AVR Studio
Tutorial AVR Studio
Tutorial AVR Studio
Cada modelo de AVR tiene su tabla de vectores; es necesario revisar el manual del
dispositivo empleado, para conocer sus diferentes tipos de interrupciones y sus
vectores correspondientes.
La instalación del entorno no representa ninguna dificultad, sólo hay que dar doble
clic en el archivo AVRStudio4v410.exe y seguir las instrucciones del asistente de
instalación. Al ejecutar el entorno, veremos la siguiente pantalla inicial:
Presionamos el cuadro para crear un proyecto nuevo; en el cuadro de
Proyect Name: escribimos el nombre de nuestro proyecto, para este ejemplo lo
nombraremos cont_int; presionamos el cuadro de Next >>. Ahora seleccionamos la
plataforma depuradora y el dispositivo; en el cuadro izquierdo damos un clic sobre
AVR Simulator; en el lado derecho damos clic sobre el dispositivo que vamos a
programar, para nuestro ejemplo utilizaremos el AT90S2313. Presionamos el cuadro
Finish.
La directiva def sirve para asignar nuestras propias definiciones de registros (estas
definiciones tiene prioridad sobre las bibliotecas), en el ejemplo, al registro r16 lo
definimos como contador; dentro del programa, cada vez que se necesite al registro
r16 lo podemos nombrar indistintamente contador o r16. Esta directiva sólo se
utiliza para los 32 registros de trabajo, si deseamos definir algún otro tipo de registro
o localidad de memoria de datos, utilizamos la directiva equ. En el ejemplo, la
localidad $18 corresponde al registro I/O portb.
La directiva org $xxx sirve para indicarle al ensamblador a partir de que localidad
de memoria necesitamos que escriba el código que esta después de la directiva, las
tres equis representan la dirección en notación hexadecimal.
En la siguiente línea observamos una directiva org, indicando que la escritura del
código subsiguiente en la memoria de programa será a partir de la localidad $00A.
La instrucción CLR está poniendo a ceros al registro r16, el cual será el encargado
de llevar la cuenta que sacaremos por el Puerto_B.
Con la instrucción SBR estamos poniendo a uno el bit_6 del registro R17.
A continuación tenemos la carga de datos inmediatos a los registros r18, r19 y r20.
Los datos inmediatos tiene diferentes formas de sintaxis, debido a que están en
diferentes bases numéricas: a r18 se le está cargando un número decimal, a r19 se le
está cargando un número binario, a r20 se le está cargando un número hexadecimal
(los hexadecimales también se pueden escribir poniendo el símbolo $ en lugar de
0x).
Con las instrucciones OUT cargamos registros I/O con datos de registros de trabajo
para configurar:
La instrucción INC incrementa a r16 y después tenemos una instrucción JMP hacia
la etiqueta de ciclo, con lo cual refrescamos el valor del registro de datos del
Puerto_B. En este punto se forma un bucle hasta que se activa una interrupción.
El programa del ejemplo tiene una finalidad puramente didáctica, por lo cual no fue
optimizado. La intención fue dotarlo con los elementos más comunes necesarios para
elaborar una aplicación; para conocer más acerca del potencial del ensamblador,
podemos revisar los archivos de ayuda del entorno AVRStudio.
Una vez que tenemos una compilación exitosa, podemos cargar el programa en la
memoria del AVR, pero lo más recomendable es simularlo primero. Para iniciar una
simulación debemos presionar el icono Start Debugging, ubicado en la barra de
tareas.
La ventana Workspace ubicada a la
izquierda contiene todos los registros del
AVR, organizados en cuanto a su tipo.
Vamos a desplegar los registros de trabajo
16–31 dando un clic sobre el símbolo +.
Para introducir un dato inmediato, damos
doble clic sobre el registro de nuestro
interés, aparecerá una pequeña ventana en
la cual escribimos el valor del dato y
presionamos OK.
Otra forma es presionando Auto Step, ahora si es posible ver que instrucción se
está ejecutando, lo cual se indica con una fecha amarilla en la ventana de edición.
Para pausar la ejecución del simulador presionamos Break.
Con el icono Step Into se ejecuta sólo una instrucción, siendo posible observar
con detalle que sucede tras una ejecución. Para reiniciar la simulación presionamos
Reset.