Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: MSANTHIAGO en 21 de Junio de 2017, 10:18:38
Título: No logro contar interrupciones mikroc
Publicado por: MSANTHIAGO en 21 de Junio de 2017, 10:18:38
Hola a todos, estoy haciendo un contador de pulsos por minuto. logre hacerlo usando interrupcion por rb0, de manera que pueda obtener el periodo de la senal cuadrada y hacer los calculos. Para eso use el siguente codigo
void calc_ppm(unsigned short index) { /* if (flag[index] == 0) // Detecta inicio del ciclo { mseg[index] = 0; // Borro tiempo almacenado flag[index] = 1; // marco proxima int como fin del ciclo } else { ppm[index] = 60/(mseg[index]*0.001); // Calculo ppm1 flag[index] = 0; // Marco Proxima Int como inicio del ciclo } */ }
void interrupt(){
/* Para Int0 en Portb_0*/
if (INT0IF_bit) // Detecta interrupcion en Portb_0 (flanco bajo) { calc_ppm(0); // funcion que calcula ppm INT0IF_BIT = 0; // Borro bandera de int0 }
Uso arreglos para almacenar los ppm porque son varios, hasta el momento llevo tres, el problema surge cuando intento contar la cantidad de pulsos acumulados, se me ocurre agregar "cnt++;" en calc_ppm pero no hace nada. Tienen alguna idea de como solucionar esto? estoy usando mikroc
Título: Re:No logro contar interrupciones mikroc
Publicado por: KILLERJC en 21 de Junio de 2017, 14:26:26
Pienso que hacer:
Código: C
ppm[index]=60/(mseg[index]*0.001);// Calculo ppm1
En una interrupcion ya es malo de por si. Por el tiempo que ocupa hacerlo.
No logro entender como es que queres medir el tiempo de pulso.