Autor Tema: No logro contar interrupciones mikroc  (Leído 1447 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado MSANTHIAGO

  • PIC10
  • *
  • Mensajes: 11
No logro contar interrupciones mikroc
« 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

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:No logro contar interrupciones mikroc
« Respuesta #1 en: 21 de Junio de 2017, 14:26:26 »
Pienso que hacer:

Código: C
  1. 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.


 

anything