martes, 19 de agosto de 2008

Tiempo. PIC

La temática de este post es el tiempo. Es de vital importancia en ciertos programas saber en cuanto tiempo se ejecutan.

Incluso para la realización de driver para la comunicación con otros dispositivos, el tiempo es un factor importantísimo. Es por ello, que en esta entrada se explicará de forma breve como calcular el tiempo que emplea nuestro código o parte del mismo en ejecutarse.

Los ciclos de instrucciones o de reloj de los microcontroladores de Microchip se muestran en la siguiente figura.


Quiere decir que un ciclo de máquina son cuatro ciclos de reloj ( Q1-Q4), por lo tanto, la expresión matemática que describe el tiempo que tarda en ejecutar una tarea es la siguiente:

Tiempo = 4·( 1/f )· CM


Donde:

· Tiempo: Es el tiempo total que tarda en ejecutarse una instrucción determinada.

· f: Es la frecuencia del oscilador principal del sistema.

· CM: Corresponde a los ciclos de máquina que consume la instrucción correspondiente, normalmente todas las instrucciones consumen sólo un ciclo de máquina excepto las de salto que consumen dos.

De esta forma podemos medir de forma exacta el tiempo que tarda en ejecutarse una instrucción.



Por ejemplo, si el reloj principal es de 4 MHz y queremos saber cuanto tiempo emplea en procesarse la instrucción nop, la cual sólo emplea un ciclo de máquina, se emplearía la expresión matemática anterior:


Tiempo = 4·( 1/f )· CM = 4·( 1/( 4·10^6 ) )·1 = 1·10^6 s = 1μs


Otro ejemplo sería calcular el tiempo que emplea una instrucción que consume dos ciclos de máquina, tal cómo las instrucciones de salto. Para este caso, por ejemplo el reloj principal sería de 20 MHz y al ser una instrucción de salto, consume 2 CM. El tiempo será:


Tiempo = 4·( 1/f )· CM = 4·( 1/( 4·20^6 ) )·2 = 4·10^7 s = 0.4μs


Por lo tanto, de esta forma tan simple se podrá calcular de forma exacta el tiempo que emplea en procesarse cada instrucción de nuestro código, esto es de gran utilidad para saber cuanto tiempo emplea nuestro programa o un trozo del mismo, en ejecutarse.



Un aliado bastante potente y fácil de usar a la hora de calcular el tiempo procesado, es la herramienta StopWatch, con dicha herramienta, podemos obtener el tiempo tanto d euna instrucción como del programa entero o parte de él.

3 comentarios:

Unknown dijo...

Disculpa las imagenes no se pueden ver D:

Unknown dijo...

Buenas Sceene Wonka:

Tienes razón, hace tiempo tuvimos un gran problema con el servidor que almacenaba las imágenes del blog.

Ya está subsanado el error.

Un saludo y muchas gracias por avisarme.

nicolita dijo...

muy buena explicación muchas gracias