¿Cómo contar los ciclos utilizados por una rutina?

0

Me gustaría medir el número de ciclos que usa una rutina en un 8051. Supongo que podría encender y apagar un pin y medir el período con un alcance y multiplicarlo por el número de ciclos del 8051 Se puede hacer en un segundo. Sin embargo, no estoy seguro de si sería propenso a los retrasos en la conmutación.

¿Hay mejores alternativas? Si es una buena idea usar un contador de hardware, ¿qué temporizador podría usarse?

Gracias

    
pregunta John M.

2 respuestas

1

Simplemente use el interruptor de E / S como usted supuso. La alternancia de un pin de E / S en el código 8051 requiere un número conocido de ciclos y se puede restar de la medición de alcance que realice. Si la duración de la rutina que está midiendo es de muchas instrucciones, el tiempo adicional consumido para alternar el pin de E / S puede ser un maní en comparación y básicamente se puede ignorar. De hecho, la medición en el alcance en varios milisegundos apenas se registraría si se incluyeran unos cientos de nanosegundos adicionales en la medición.

En mi discusión anterior, estoy hablando de usar un pin de E / S que está conectado a uno de los puertos directos de la parte 8051. Si su pin de E / S de medición está alejado de la MCU, como una E / S en un expansor de puerto conectado I 2 C, entonces la velocidad de la interfaz podría ser un factor a considerar. Utilice siempre una E / S de puerto directo para una medición de tiempo de alcance.

Si realmente desea ver la sobrecarga de tiempo de la conmutación del pin de E / S simplemente coloque el conjunto y desactive el pin de E / S como escrituras secuenciales en su código y mida el pulso de alcance resultante.

    
respondido por el Michael Karas
0

Si está codificando en ensamblaje, use una referencia de conjunto de instrucciones como éste . Le indica cuántos ciclos de reloj se utilizan por instrucción.

Estoy seguro de que hay una referencia por ahí que traduce el código C a 8051 asm instrucciones, así que puedes contar el número de ciclos por referencia cruzada.

    
respondido por el Tom

Lea otras preguntas en las etiquetas