Calcular tiempo de ejecución de un bucle, sin utilizar la depuración de un programa.

Hola, me encuentro que estoy cursando en la universidad una asignatura de Informática y estamos trabajando con un PIC integrado en un placa de desarrollo (concretamente el Explorer 16, de Microchip) utilizando un compilador/simulador.

A la hora de medir los tiempos de ejecución de determinados bucles, o partes del codigo, lo puedo hacer fácilmente con una herramienta del compilador, la cual utilizo sin problemas.

El problema me ha surgido con un apartado de las practicas que realizo, particularmente me pide que le de una alternativa para medir estos tiempos de ejecución, en el caso de estar ejecutando el programa, teniendo acceso únicamente a los instrumentos estándar de un laboratorio de electrónica (osciloscopios, sondas, fuentes de alimentación, etc.) sin posibilidad de depurar ni utilizar el compilador.

Eh intentado razonarlo, pero como realmente domino poco de analógica y demás instrumentos, no a llegado a encontrar cual podría ser dicha alternativa.

Si alguno puede comentarme cual seria esta alternativa se lo agradecería mucho.

Un saludo.
 
Es muy simple... al inicio de la rutina que quieres medir mandas un pulso por algun puerto... por ejemplo pones a 1 el pin 0 del puerto B, y al final lo apagas... y repites indefinidamente... esa salida la aplicas a un osciloscopio y puedes medir la forma de onda

Otra forma es hacer la suma de las instrucciones cuando estas programando en ensamblador, cada instruccion se ejecuta en un ciclo de reloj y los saltos en 2 ciclos.. asi que es simple calcular el tiempo de ejecucion normal, pero se vuelve compleja cuando tienes muchas decisiones y saltos

Finalmente tambien puedes usar el timer interno... inicializas el timer antes de entrar a la rutina que quieres medir y guardas el valor inicial en una localidad de RAM, despues al finalizar obtienes el tiempo final y los restas, esa informacion la puedes mandar a un LCD, o a un puerto para ver el tiempo en binario con leds...
 
Ante todo te agradezco muchisimo, realmente la primera solución que me das es la que buscaba, y es sencilla :D. La opción del timer creo que tambien puedo aplicarla, aunque no estoy seguro de que tenga un visor LCD (hoy lo comprobare), si tiene un panel con 8 LEDs, pero todas las practicas funcionan entorno a estos, creando secuencias de parpadeo entre ellos.

Aunque programamos en C, el compilador tiene una opción que nos refleja el codigo traducido a ensamblador, y entonces ahí si que podia mirar la cantidad de ciclos, y así calcular los tiempos.


Muchas gracias por la respuesta, me ha sido de gran ayuda!

Un saludo.
 
Atrás
Arriba