Antes que nada, gracias por la ayuda.
Un dato, es que cuando utilizo el simulador, siempre obtengo el mismo valor en el tiempo mostrado en el stop watch y en la variable cycletime, la diferencia la observo cuando comparo el valor del stopwatch en el simulador y el valor cycletime enviado por el PIC a la PC. El problema de esto es no saber cual de los valores es el correcto.
El programa que me pasaste funciona excelente, agregue un printf al final del for para visualizar via terminal el puerto serie. Por lo que el valor enviado por el PIC a la PC y el valor medido con el simulador son iguales.
El problema ocurre cuando intercalo un printf antes del for. Por ejemplo:
while (1)
{
CycleTime = 0;
ContadorGlobal = 0;
set_timer0(0);
//delay_ms(30);
printf(" %f ", cycleTime); //nuevo printf para chequear el retardo introducido
for (cuenta=400000; cuenta != 0; cuenta--);
CycleTime=(float)(0.0000512*get_timer0()+0.0131072*contadorglobal);
}
El valor enviado va a ser siempre 0, pero a fines de evaluar el efecto viene bien.
Ahora midiendo, con el StopWatch, obtengo 47,2 ms (colocando el break point en la primera instrucción dentro del while)
Mientras que el valor enviado via seria, calculado por Timer0 es de 23,9 ms.
El nuevo printf, produce un incremento de 33 ms en uno de los valores y en el otro de 10ms. Siendo los valores iniciales de 13ms aproximadamente(Dentro del bucle while).
Por lo que aparentemente, la diferencia puede ser causada por el printf de la tarnsmisión serie. Estás de acuerdo?
Nuevamente, gracias!
Saludos