16 septiembre 2009

Retardos AVR En Ensamblador






Como Hacer Retardos En
Ensamblador Para AVR






Bueno siempre tenemos la necesidad de hacer algun retardo a la hora de programar AVRs en este caso en lenguaje ensamblador y pues todos loa hacemos decrementando registros pero habeces es muy tedioso calcular cuantas instrucciones necesitamos para que el retardo se tarde por ejemplo medio segundos o milisegundos, esto tambien depende de le velocidad del reloj que estemos usando 1, 4, 8, 0 12 MHz ya que a velocidades diferentes varia el tiempo en el que se ejecuta cada instruccion.


Por ejemplo a una velocidad de 1MHz para saber que tiempo se tarda cada instruccion, tenemos una frecuencia de 1MHz el periodo seria:
1/1MHz = 1/1000000 = 0.000001 segundos

Esto quiere decir que cada instuccion se tarda 1uS (1 microsegundo) asi tendriamos que contar el nuemero de instrucciones para realizar el retardo, si requerimos un retardo de 10 ms (milisegundos) entonces tenemos:

10ms /1us = .010/.000001 = 10000

Asi que tendriamos que hacer 10000 instrucciones para generar un retardo de 10ms se debe consultar la hoja de datos del micro, ya que hay instricciones que al ejecutarse ocupan 2 ciclos de procesador, entonces el calculo se hacealgo tedioso y no muy exacto.

Como se puede resolver ?? o almenos volverlo un poco mas exacto??

Para eso tenemos el programa Avrdelay loop

El cual se puede descargar libremente:
Descarga AvrdelayLoop


Bien este programita nos ahorrara tiempo y hara nuestros retardos mas exactos, una vez descragado lo descomprimimos y ejecutamos:


Aqui tenemos el programa, con el podemos generar retardos de manera muy facil solo debemos indicar los ciclos que necesitamos.


En el ejemplo que calculamos anteriormente se necesitaban 10000 ciclos para un retardo de 10ms bueno indicando esta cantidad el programa nos generara el codigo en ensamblador que consume los 10000 ciclos.

Antes de eso solo debemos conocer alguna sobre este programa:


Funciona en, Linux por medio de wine, en XP, la verdad en vista no lo he provado encuando lo compruebe actualizo el post.

Aqui debemos seleccionar los 3 registros que se usaran en el codigo del retardo se pueden usar cualesquiera de los 32 registros.


Logicamente combiene usar registros que no estemos usando en el codigo del programa o asegurarse que al momento de llamar al retardo estos registros no se encuentren en uso para evitar resultados indeseados, como ciclos infinitos o inexactos etc.

Ahora solo damos clic en "GO" y nos genera el codigo


Y como podemos ver nos ha generado un codigo que consume 10000 ciclos de procesador, ya tenemos nuestr0 retardo de 10ms.


Ahora ya tenemos una manera rapida y facil de generar retardos gracias a

AVR delay Loop




10 comentarios:

  1. mmmm, no mames, en serio, eso lo hace un niño de kider. creo que tu post es REALMENTE malo...

    ResponderEliminar
  2. disculpa, no creo que un niño de kinder sepa siquiera que es un retardo en ensamblador AVR.


    bien por el post.

    ResponderEliminar
  3. Soy de maternal y se que es un retardo en ensamblador

    ResponderEliminar
  4. siempre debe salir algún inconforme, buen post. Sin embargo, alguien que estudia ingeniería debe saberlos calcular a partir de las características del dispositivo a usar

    ResponderEliminar
  5. Hola, muy buena solución. Ignora a los trolls, internet está plagado de ellos, gente que se les carcome la envidia porque no saben hacer la O con un canuto.

    Un saludo.

    ResponderEliminar
  6. Efectivamente esto ahorra tiempo, surge un problema cuando se trata de alumnos de ingeniería que se van por el camino fácil. En el momento que se presenta una necesidad
    específica no entienden nada del código.

    ResponderEliminar
  7. Muy buen aporte sigue así!!!!.. olvida a esa gente que solo se queja y no aporta nada

    ResponderEliminar
  8. Jajajaja yo si que soy perezoso como dicen por hay, pero cuando tengo que hacer esas rutinas de retardo me vuelvo el doble de perezoso, me gusta el asembler o ensamblador pero con las rutinas si que me lleva el chanfle, gracias hermano. Y por lo de los estudiantes ellos saben que no es pasar una prueba si no el año, y si no estudian ellos se lo pierden estas cosas sirven para que el muchacho que es aplicado empiece sus ejercicios y se desarrolle, mas el que va a la escuela para no ayudar en la casa, esto si que es la perdición jajaja, saludos y no le pares que en la viña del señor hay de todo abrazos

    ResponderEliminar