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
 
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
 
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.
 
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.
 
Atrás
Arriba