Autor Tema: módulo "input capture"  (Leído 1465 veces)

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

Desconectado ochi

  • PIC10
  • *
  • Mensajes: 48
módulo "input capture"
« en: 02 de Mayo de 2008, 05:19:36 »
Hola, estoy teniendo problemillas con el módulo input capture, lo que intento es medir el tiempo que está alta la señal de entrada, para eso, interrumpo cada dos veces (la primera vez se me pone a uno y la segunda a cero) y luego mido alli.
esta es la parte de mi código qeu falla:


const unsigned int periodoTotal = 0xffff;

void CONFIGinterrups(void) {

   ConfigIntCapture2(IC_INT_ON & IC_INT_PRIOR_5);   
}


void CONFIGtimers(void) {

   CloseTimer3();

   unsigned int config3 = T3_OFF & T3_IDLE_CON & T3_GATE_OFF & T3_PS_1_256 &
                     T3_SOURCE_INT;

   OpenTimer3(config3, periodoTotal);
}


void CONFIGcaptures (void) {

   CloseCapture2();

   unsigned int configura2 = IC_IDLE_STOP & IC_TIMER3_SRC
                       & IC_INT_2CAPTURE & IC_EVERY_EDGE
   OpenCapture2(configura2);
      
}


int main (void){

   CONFIGtimers();
   CONFIGcaptures();

        TRISDbits.TRISD9 = 1;

   CONFIGinterrups();
   T3CONbits.TON = 1;



   while(1){

   }
   return 1;

}


void __attribute__((__interrupt__)) _IC2Interrupt(void){

   unsigned int t1,t2, periodo;
//   ReadCapture2(&lectura_inf);
//   t1 = lectura_inf;

   t1 = IC2BUF;
 
   //ReadCapture2(&lectura_inf);

   t2 = IC2BUF;

        periodo = t2-t1;

   IFS0bits.IC2IF = 0;
}

Estoy ejecutando mi programa paso a paso, con "stimulus" estoy generando la interrupción. Pero IC2BUF siempre está a cero. ¿No debería tener el valor de la primera interrupción y el de la segunda? ¿Qué estoy haciendo mal? muchas gracias a todos.

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
Re: módulo "input capture"
« Respuesta #1 en: 02 de Mayo de 2008, 05:33:13 »
Has mirado si el MPLAB SIM soporta input capture?


Desconectado ochi

  • PIC10
  • *
  • Mensajes: 48
Re: módulo "input capture"
« Respuesta #2 en: 02 de Mayo de 2008, 06:08:45 »
no, ¿como miro eso? desde luego la interrupción la tengo uqe generar poniendo IFS0bits.IC2IF = 1, vamos, cambiando el flag de interrupción directamente, si le pongo la señal IC2 no hace ni caso... asi uqe igual llevas razón. Muchas gracias!


 

anything