PIC24H cálculo del tiempo delta

0

Hola, estoy haciendo un proyecto para mi clase de software integrado de introducción y necesito hacer uso de un temporizador en un programa. Si no me equivoco, este código debería estar en bucle durante al menos 500 milisegundos, pero no está funcionando y ¡nunca lo he hecho antes en un PIC! Puede haber un problema con los tipos de datos en el cálculo para la conversión de ms.

¡La ayuda sería increíble!

#define CLOCKS_PER_SEC 8000000  //Clock set to 8MHz
#include <time.h>
#include <stdlib.h>
int main (void)
{
    //Used to keep track of timer
    unsigned long delta_time, init_time, final_time;

    init_time=clock();  //Take initial clock reading
    delta_t=0;
    while(delta_t < 500)
    {

        //do tasks


        final_time=clock();    // returns total number of clocks
        delta_t= final - initial;  //Calculates total clocks between final and initial

        // converts to ms
        delta_t = (unsigned long)((delta_t/(CLOCKS_PER_SEC*1.0))*1000;  
    }
}
    
pregunta Matt

1 respuesta

1

No veo dónde estás declarando delta_t en ninguna parte. Esto también es cierto para final y initial ( delta_t= final - initial; ). Me imagino que final es realmente final_time , y initial es realmente init_time , pero ¿por qué hace una pregunta sobre el código que no proviene de su proyecto real?

Por favor, publica el código que realmente compila.

En delta_t = (unsigned long)((delta_t/(CLOCKS_PER_SEC*1.0))*1000;

¿Por qué estás convirtiendo a un flotador y luego de vuelta? Usted no necesita En su lugar, divide CLOCKS_PER_SEC hacia abajo para que sea CLOCKS_PER_MILLISEC . Entonces puedes hacer todo con ints:
delta_ms = (delta_clocks/(CLOCKS_PER_SEC/1000));

Esto no necesita conversión de tipo y será MUCHO más rápido.

Nota: he cambiado el nombre de algunas de sus variables para una mejor comprensión.

    
respondido por el Connor Wolf

Lea otras preguntas en las etiquetas