jueves, 4 de febrero de 2021

Microcontroladores AVR (Microchip) – Programando en ASM (PART002)

Hola nuevamente a Artes Electrónicas Pachani, acá iré explicando mis experiencias con el microcontrolador Atmega32A  en el entorno AVR Studio 4, el objetivo sera aprender a programar en lenguaje ensamblador.






Técnica de la burbuja para manejo de tiempos ATmega32A

 Cuando se trata de aplicaciones con manejo de tiempos es necesario recurrir a un código llamado “Técnica de la burbuja ” debido a que analizando dicho código notamos una particularidad que maneja

una resta en una unidad desde adentro hacia afuera como si se tratara de una burbuja de ahí su nombre.

 La finalidad de aprender el manejo de tiempos es muy útil para hacer experimentos con tiempos como el análisis de instrucciones que podemos utilizar en nuestro microcontrolador para poder comprender el estudio de cada subsistema. Para ello vamos a recurrir a la pagina Web 



 
Debemos de poner atención en los siguientes datos: la frecuencia de nuestro Xtal con nuestro microcontrolador luego el tiempo que queremos usar para realizar el retardo (delay) para cada operación dentro de nuestro microcontrolador.

 Problema 02.- Realizar un programa que controle leds por el puerto B mostrando el hexadecimal 0x3A con un tiempo de 0,5seg de encendido y apagado entre cada led .

Solución:



 Como en el anterior tutorial aprendimos a manejar los bits del puerto B ahora nos toca trabajar en la nueva condición que vendría ser un tiempo de retardo de 0,5 seg el cual nosotros programaremos :


Ahora nos toca conocer el concepto de puntero de PILA:


 Como aprenderemos el puntero de pila es el orden como colocas las hojas antes de iniciar una nueva tarea es decir es la posición donde dejas una instrucción o una tarea dentro el microcontrolador para que pueda continuar con el resto de las instrucciones luego de concluido la tarea adicional que se inicio.

 La utilidad de la misma es de gran importancia debido a que podremos hacer subrutinas como el retardo de modo que una vez concluya el Retardo_Delay el microcontrolador retornara a la ultima instrucción y cumpla con las instrucciones del programa principal.


 La nueva instrucción que aprenderemos sera RCALL , una instrucción que llama a una subrutina llamada Retardo_Delay, programa el cual hace un conteo de tiempo equivalente a 500ms = 0,5s . Se habrán dado cuenta que dentro de la subrutina Retardo_Delay hay dos nuevas instrucciones como son “DEC instrucción de decremento en una unidad” y “BRNE instrucción de salto condicionado donde salta una linea de instrucción si una anterior operación como decremento DEC da como resultado que la bandera Z=0, es decir hay contenido de ahí que se habilita dicha instrucción”

Simulando en Proteus

Ahora vamos a probar el anterior programa en proteus y veremos que el anterior programa funciona tanto  en AvrStudio como Proteus en ambos IDE de desarrollo notaremos que no existe diferencia:


Ahora iniciamos el editor de código para poder desarrollar nuestro programa:


Una vez iniciamos nuestro editor configuramos nuestra plantilla de modo que podamos identificar las partes de nuestro programa y poder utilizar el codigo de AvrStudio4 en Proteus.


Ahora probaremos el código y compilemos:


Aqui veremos que lo importante de un programa es la informacion que proporcionamos al momento de desarrollar nuestro programa los datos del autor que seria mi persona , lo siguiente la informacion concercniente al programa y su version de desarroollo con ello indicamos cuando y como  hemos trabajado.


Aquí notemos que viene la parte de configuración de puertos de modo que se nos haga mecánico los pasos y luego tenemos la configuración del puntero de pila el cual nos servirá de apoyo al momento de realizar uso de subrutinas especiales que podemos desarrollar como los son los Retardos y Funciones especiales que veremos mas halla a medida que trabajemos en este mini curso.



En cuanto a la subrutina retardo notemos que trabaja de manera bastante simple hacemos uso de un contador R18 que va decrementando, ya que el R18 que cargamos previamente con el valor hexadecimal 0xFF, con este valor nosotros definimos cuantos conteos puede hacer para un tiempo determinado el cual es proporcional al tiempo del cristal oscilador el cual ejecuta las instrucciones del microcontrolador en un tiempo determinado y gracias a ese tiempo podemos desarrollar los tiempos de retardo.
El programa anterior no estaria completo sin la instruccion BRNE bucle , este salto condicionado es de gran utilidad pues nos ayuda a entender que de la anterior operacion aritmetica de decremento existe una condicion de contenido en la bandera Z , la cual nos ayuda formar el bucle el cual seguira hasta que el valor de decremeto del R18 sea igual a CERO, cuando ello sucede la instruccion BRNE testea el cambio de la bandera Z ya que en este punto el valor sube a Z=1, dando lugar al continuar la siguiente instruccion que seria RET retornando al programa principal.


Al mometo de la simulacion notaremos que el cambio de estado de cada uno de los bit cambia de manera muy rapido y con eso sabemos que podemos generar programas de gran utilidad como osciladores , un semaforo y otras aplicaciones donde el tiempo seran de gran utilidad.

Grabando con OpenProg

Por ultimo tenemos el programa completo el cual lo ejecutaremos en nuestra placa de entrenamiento o bien protoboard. En nuestro caso lo realizaremos con la ayuda de las herramientas que hemos ido construyendo en mi caso ire programando con el programador OpenProg si no recuerdas como hacerlo dejo acceso directo para ver el tutorial.


 
 Como observamos en las imágenes vemos como se ve el restardo entre los leds en la placa de entrenamiento para verificar nuestro programa.



 Algunas observaciones

Tenemos que tener en mente lo siguientes: 

  1.- En esta entrega hemos trabajado básicamente a como configurar paso a paso dentro del IDE AvrStudio 4 y luego su programacion con nuestro programador OpenProg a medida que vayamos practicando veremos que hacer programas en AVR es tan sencillo como programar un Arduino ya que ensamblador es mas sencillo pero es moroso nada y luego con mayor experiencia con esta herramienta simple y compacta iremos realizando programas mas elaborados.

 2.- Como un objetivo adicional es demostrar que con herramientas libres tanto en Linux y Windows podemos trabajar con programdores placa de entrenamiento que sirve para ambos lados ya que cada una de las herramientas en este blog se encuentran en ambos sistemas.

Al final

 Todo el material que aquí se encuentra es de mi autoría, ademas de una recopilación de información de Internet de recursos que se pueden descargar como libros en pdf los cuales son usados como referencia para los ejercicios y los ejemplos los cuales se encuentran a disposición en Internet. Cualquier consulta la puedes realizar en la parte de comentarios.

Bibliografia

1.- AVR Microcontroller and Embedded Systems using assembly ; Publicado el año 2011;[Fecha de consulta 1 de enero de 2021], pagina de donde puedes descargar (https://docs.google.com/file/d/0B5_mAdKvdKTlQlBPS2pwbE9ONFE/edit).


Software utilizados:

1.- AvrStudio4 descargado de la pagina oficial de Microchip. Ahi puedes descargar (https://www.microchip.com/mplab/avr-support/avr-and-sam-downloads-archive)

2.- Proteus v 8.2 , simulado en linuxMint 19,4 por medio del programa WinePero en versiones soporta todas las versiones Guindows.

3.- Editor de texto libre, se puede descargar de Internet, es un editor GNU Linux.

4.- OpenProg, programador de microcontroladores PIC-AVR. Ahi puedes econtrar el instaldor disponible tanto para Linux y Windos (https://sourceforge.net/projects/openprogrammer/)


Hardware utilizados:

1.- Placa de Programación basado en los esquemas de OpenProg.

2.- Placa entrenadora desarrollado en base al microcontrolador Pic 18F4550.

3.- Placas modulo de leds , botoneras e interruptores.





No hay comentarios.:

Publicar un comentario

Hola, con tu comentario puedes aportar para mejorar la calidad de mi trabajo

Microcontroladores PIC – Curso de Programación en MikroC (Parte 6 )

Microcontroladores PIC – Curso de Programación en MikroC Bienvenido nuevamente a los tutoriales de Artes Electrónicas Pachani , con...