Iniciar/parar cronometro con dos pines distintos

Hola a todos, tengo el siguiente código de un cronometro el cual mide la duración de un pulso,
yo lo quiero modificar para que inicie la cuenta con un pulso en una entrada y la para con otra.
Como nunca trabajé con los módulos CCP que utiliza, no sé si esto es posible.
¿Quizás tenga que cambiar de PIC por uno con dos CCP?
Saludos y gracias a todos.
Código:
#include <16F88.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#include <lcd.c>
#byte PIR1=0x0C
#fuses CCPB3
float AP=0.0;         //Valor final del ancho de pulso
int1 nuevopulso=0;
int1 band=0;

//long rise,fall;
int16 TFB=0,TFS=0,TF=0;
int1 cambio=0;
//lcd_init();
#int_ccp1
void ccp1_int(){

   
   
   
   if(cambio==0){
       TFS=CCP_1 ;
       setup_ccp1(CCP_capture_fe);
       cambio=1;
      } else{
      TFB=CCP_1;
      setup_ccp1(CCP_CAPTURE_RE);
      cambio=0;
      
      if(nuevopulso==0){
      nuevopulso=1;
     
}
}
}
void main()
{
 lcd_init();
   
   
   setup_timer_1(T1_INTERNAL);    // Start timer 1
   setup_ccp1(CCP_CAPTURE_RE);
   cambio = 0;
   enable_interrupts(INT_CCP1);   // Setup interrupt on falling edge
   enable_interrupts(global);
 
    do {
    if(nuevopulso==1){     //¿Pulso nuevo?
       TF=(TFB-TFS);   //Ancho de pulso.
       AP = TF*1.0;      //Ancho de pulso en microsegundos (a 4MHz:1us)
      printf(lcd_putc,"\nBIP =%4.0fuS ", AP);
     nuevopulso=0;             //Pulso ya medido, espera nuevo
   }
  } while (TRUE);
}
 
Última edición por un moderador:
Si tienes un cronómetro necesitas un timer, con una combinación de circunstancias se pone en marcha y con otra se para. En este caso particular la misma circunstancia lo arranca y lo para, basta con cambiar un poco el código.
El C no es lo mio pero si miras un poco seguro que lo puedes cambiar, mira en que instrucción se arranca y en cual se para. En las anteriores está la condición de pulsar o detectar el cambio del pin.
 
Atrás
Arriba