Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

18/12/2014 #1


ATmega48 - Tiempo de ejecucion de tarea - Task Execution Time
Buenas tardes a todos,
Me gustaria amablemente preguntarles como podria saber cuanto tiempo toma en realizarse una condicion " if ", en un microcontrolador Atmega 48.
El problema es el siguiente, deseo saber cuanto tiempo le tomaria al microcontrolador analizar la condicion " if " : el pedacito de codigo que tengo es el siguiente :

int a=10;

if (a>10)
{
a++;
}


Esto es todo. Me gustaria saber cuanto tiempo le toma al microcontrolador ejecutar la condicion " if (a>10) " y cuanto tiempo le toma en ejecutar la linea "a++" , como podria hacer ese analisis, que tengo que estudiar?, que necesito buscar? ........ que en esto estoy mas que perdido, muchisimas gracias por su ayuda y valiosos consejos.
Cordiales saludos
18/12/2014 #2

Avatar de chclau

Tres maneras:

1) Encender y apagar puertos antes y despues de la ejecucion de cada instruccion cuya duracion queres medir. Medir con osciloscopio. Medir la velocidad sin las instrucciones (solo prender y apagar puertos) y luego CON las instrucciones a medir intercaladas entre las activaciones y desactivaciones de puertos.

2) Obtener el listado ensamblador luego de la compilacion, identificar las instrucciones usadas y mirar en el manual cuanto tiempo tarda en ejecutarse cada instruccion

3) Hacer lazos de cien, mil, diez mil ejecuciones de cada instruccion y medir con temporizadores del micro cuanto tardaron en ejecutarse, dividir por la cantidad de ejecuciones.

Suerte
18/12/2014 #3


Estimado chclau,
Muchas gracias por tu valiosa respuesta. De las tres opciones que me propones, me gustaria intentar la segunda, por la claridad como la has propuesto. Compilando una pequena funcion y analizando el archivo .asm que se genera pues he podido reconocer en la primera linea un nemonico segun la hoja de datos del ATmega48, estoy hablando del nemonico MOV, y en la casilla donde dice #Clocks me imagino que se refiere a los ciclos de reloj, bueno, en dicha casilla esta escrito el numero 1 . Ahora, como tengo que interpretar este dato? , osea un ciclo, pero esto como lo podria interpretar en mili o micro segundos???.
Muchas gracias por su paciencia, y de paso me disculpo si las preguntas son muy obvias, pero el problema es que soy nuevo en este tema :(
Por otro lado, una pequena segunda pregunta es : por que en el doumento .asm estan escritas dos lineas que no tengo ni idea de lo que puedan ser, me refiero a "genIFx" y a "genIfxJump" he buscado en el datasheet y no son nemonicos por lo que veo.
Muchas gracias por sus valiosas respuestas. Que tenga un lindo dia.
18/12/2014 #4

Avatar de chclau

Los ciclos de reloj los sabes tu segun la tarjeta que estas utilizando con el micro, tiene que tener algun generador de reloj. Si fuera de, digamos, 1MHz y no hay cosas raras (*) en el medio, cada ciclo sera de 1us.

(*) A veces hay dispositivos que usan PLL, etc. que cambian la frecuencia del reloj externo.

Lo otro que preguntas no tengo ni idea, deben ser macros del ensamblador o algo asi, busca en Google o en el manual de macros del ensamblador.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.