Cómo calcular el retraso del bucle en arquitecturas basadas en avr

2

Estoy tratando de hacer un trabajo de precisión de tiempo alto (bueno, no tan alto, pero más de lo normal) y necesitaría calcular el tiempo de retardo generado por un pequeño bucle. Alguien me puede ayudar con eso? Estas son solo instrucciones genéricas como estas

for(i=0;i<=100;i++)
{
if(i<x)

    PORTA |= (1<<0);
else
    PORTA &= ~(1<<0);
if(i<y)
    PORTA |= (1<<1);
else
    PORTA &= ~(1<<1);
if(i<z)
        PORTA |= (1<<2);
else
    PORTA &= ~(1<<2);

}

Esto es solo un ejemplo.

El controlador es un ATmega32 que funciona en el oscilador RC de 8MHz interno.

    
pregunta Rick_2047

3 respuestas

1

Puede hacer que su bucle alterne una línea IO y mida la frecuencia de la señal resultante, ya sea con un osciloscopio o un multímetro con una configuración de frecuencia.

    
respondido por el John Lopez
4

El simulador de AVR Studio le dirá cuántos ciclos de reloj toma ese bucle para las distintas condiciones, si los configura correctamente.

    
respondido por el Leon Heller
2

Puede comparar los tiempos usando uno de los temporizadores de 16 bits como timer1 o timer3. ¡No te olvides de cronometrar el arnés de tiempo y corregirlo!

    
respondido por el drxzcl

Lea otras preguntas en las etiquetas