Mis hermanos de este tan apreciado foro, les saludo y a la vez les pido de su ayuda en este desarrollo con Pic ccs c.
Me explico...
Tengo un tren de pulsos de un sensor, este tren varia de
1 a 8 pulsos. Dependiendo de la ocasión que se presente (indeterminada).
cada pulso tiene un tiempo de 20ms en alto y 20ms en bajo, es decir, en el caso de que se presenten los 8 pulsos serian 160ms en total del tiempo transcurrido.
Bueno, pues quiero saber cuantos de esos pulsos se presentan en 200ms, los
200ms son por que como comente antes, en el caso de que se presenten lo máximo de 8 pulsos son 160ms.
Para contar los pulsos estoy utilizando el CCP1 del Pic18F de esta manera:
#int_ccp1
void trata_pulsos(void)
{
pulsos++;
}
Y para contar los 200ms estoy incrementando el timer0 cada
1 ms asi:
#int_TIMER0
void tiempo_200ms(void)
{
aux++; // incrementa cada 1 ms
if(aux==200){ // Si pasaron los 200ms actúo.
}
set_timer0 (65223); // para 1 ms
}
Este es el código que tengo hasta ahora...
int16 pulsos;
int16 aux;
#int_ccp1
void trata_pulsos(void)
{
pulsos++;
}
#int_TIMER0
void tiempo_200ms(void)
{
aux++;
output_toggle(pin_c0);
if(aux==200){disable_interrupts(INT_TIMER0); disable_interrupts(INT_CCP1); }
set_timer0 (65223);
}
void main()
{
porta=0x00; set_tris_a(0b00000001); portb=0x00; set_tris_b(0b11111111); portc=0x00; set_tris_c(0b10000000); portd=0x00; set_tris_d(0b00000100); porte=0x00; set_tris_e(0b00001000);
lcd_init();
setup_ccp1(CCP_CAPTURE_RE);
enable_interrupts(INT_CCP1);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_16);
disable_interrupts(INT_TIMER0);
set_timer0 (65223);
enable_interrupts(global);
while(true)
{
lcd_gotoxy(1,2); printf(lcd_putc,"pulsos = %lu %lu",pulsos,aux);
}
}
Lo que no se, es como hacer lo comentado... Que a partir de que el
ccp1 encuentre un o unos de los pulsos el
timer0 empiece a contar el tiempo y a partir de que se concluyan los 200ms deje de contar y me diga cuantos pulsos entraron en ese tiempo.
Espero haberme dado a entender y con ello me puedan ayudar, quizás alguien tenga otra idea para resolver esto.
Coloco una imagen para darme a entender mejor. Saludos a todos mis hermanos.