Tengo un tema para el cual me esta dando vueltas la cabeza y no se como continuar. Estoy leyendo 5 entradas análogicas para lo cual requiero estabilizar las lecturas.
E visto la implementación de un filtro aquí en el foro para mi ADC (llamado promedio móvil), el cual estoy implementando, es el siguiente:
[
void filtro_promediado() // Rutina que toma 15 muestras de cada entrada analoga
{
for(int x=0; x < sizeof ADC_Channels; x++)
{
ADC_Read[x]=0;
set_adc_channel(ADC_Channels[x]); delay_ms(20);
for(int z=0; z<MUESTRAS;z++)
{
ADC_Read[x] += read_adc(); delay_ms(20);
}
}
}
Bien, pues veo PIC pierde tiempo por que esta ocupado haciendo del ADC la conversion - delay_ms - conversion - delay_ms - ........... . . .
Me gustaría saber si se puede aplicar alguna interrupcion (Quizas timer0 o timer1 ..) para que mientras este realizando la conversión, el PIC no este perdiendose de las demas tareas, es decir que se pueda aplicar algunas de las siguientes cosas:
1).- Que pierda el tiempo mínimo posible.
2).- Que se realice alguna interrupción para que el pic no este perdido de lo demás mientras realiza la lecturas entre muestras del ADC.
Alguna orientación o consejo?.