Microcontrolador ATmega48 - calculo del tiempo de ejecucion de tarea - Task execution time

53 views
Skip to first unread message

2050f...@gmail.com

unread,
Dec 17, 2014, 2:31:41 PM12/17/14
to qt-es...@googlegroups.com
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.



 

martin ribelotta

unread,
Dec 17, 2014, 3:01:29 PM12/17/14
to qt-es...@googlegroups.com
Esto es una pregunta mas para embebidos32@ que acá pero vamos a ver:

La forma tradicional es ver el código desensamblado (avr-objdump -d archivo.elf) y con datasheet del micro en mano sacar cuentas.

Hay mas opciones, por ejemplo usar un simulador y verlo paso a paso... pero nada garantiza que el simulador este bien hecho.

También tenes que preguntarte que queres medir. La frase: 

" cuanto tiempo le toma al microcontrolador ejecutar la condicion " if (a>10) ""

Tiene muchas respuestas dependiendo del nivel de optimización el target final (microarquitectura usada), clock usado y versión del compilador. Eso sin contar el entorno de ejecución (interrupciones, task switching si usas un RTOS etc, etc etc)

Algo que podes hacer es togglear un pin y verificar cuanto tarda cada parte:

sbi(PORTB, PB0);
if (a>n) {
  tbi(PORTB, PB0);
  a++;
}

Eso te daría una idea aproximada. Pero la posta es ver el código ensamblador generado, entenderlo y analizar el flujo de ejecución haciendo una traza manual de tu código con datasheet del micro en mano en la pagina donde te muestra la tabla de instrucciones y su(s) ciclos de reloj.

También tenes que tener en cuenta que una instrucción puede tardar distinto tiempo, dependiendo de si es la primera vez que se ejecuta, si es un salto, si el salto se toma, si no se toma, si la condición es verdadera, si es falsa, si la operación se realiza o si no.

Todo esto sale de datasheet. Por supuesto, varia de procesador a procesador, de arquitectura a arquitectura, de compilador a compilador, de versión de compilador a versión y de entorno de ejecución a entorno de ejecución.

Otra vez, te sugiero que te suscribas a la lista de correo embebidos32@ en google groups para este tipo de preguntas.



 

--
Has recibido este mensaje porque estás suscrito al grupo "Qt-español" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a qt-espanol+...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a qt-es...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/qt-espanol.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Falcon Blue

unread,
Jan 15, 2015, 1:22:53 PM1/15/15
to qt-es...@googlegroups.com
Estimado Martin,
Me gustaria amablemente preguntarle como podria hacer que dos leds conectados a pines diferentes de un mismo puerto en un microcontrolador 8051, puedan parpadear en fase opuesta. Osea cuando un led esta prendido, el otro esta apagado.
Muchas gracias poe sus valiosos consejos que tenga un lindo dia.

--
Has recibido este mensaje porque estás suscrito a un tema del grupo "Qt-español" de Grupos de Google.
Para anular la suscripción a este tema, visita https://groups.google.com/d/topic/qt-espanol/BF4xdbHOzdQ/unsubscribe.
Para anular la suscripción a este grupo y a todos sus temas, envía un correo electrónico a qt-espanol+...@googlegroups.com.

Juancar

unread,
Jan 16, 2015, 8:38:41 AM1/16/15
to qt-es...@googlegroups.com
Hola,
Primero debes empezar por conocer la arquitectura y como accedes a los puertos del micro.
Te paso un enlace donde viene esa información y mucho más: http://www.mikroe.com/products/view/267/architecture-and-programming-of-8051-mcu-s/

Saludos

2050f...@gmail.com

unread,
Jan 16, 2015, 12:55:27 PM1/16/15
to qt-es...@googlegroups.com

 Muchas gracias por el enlace :) estimado amigo.
Que tenga un lindo fin de semana
Reply all
Reply to author
Forward
0 new messages