Autor Tema: ¿Timer no temporiza bien o calculo mal yo?  (Leído 2530 veces)

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

Desconectado superprp

  • PIC16
  • ***
  • Mensajes: 137
¿Timer no temporiza bien o calculo mal yo?
« en: 03 de Junio de 2008, 13:40:28 »
Quiero ver el tiempo que transcurre entre el pulso de subida y el pulso de bajada de una señal de no mas de 400ms, y uso el siguiente programa:






//FUSES
_FOSC(CSW_FSCM_OFF & XT_PLL4);
_FGS(CODE_PROT_OFF);
_FWDT( WDT_OFF);
_FBORPOR(MCLR_EN & PWRT_OFF) ;

unsigned int periodoTotal = 0xffff;

void CONFIG_timers(void) {

   CloseTimer2();

   unsigned int config2 = T2_OFF & T2_IDLE_CON & T2_GATE_OFF & T2_PS_1_256 &
                     T2_32BIT_MODE_OFF & T2_SOURCE_INT;
   OpenTimer2(config2, periodoTotal);

int main (void) {

   CONFIG_puertos();
   CONFIG_timers();
   CONFIG_uart();

   T2CONbits.TON = 1;
   CloseINT2();
   ConfigINT2(EXT_INT_ENABLE & EXT_INT_PRI_6 & RISING_EDGE_INT);
   retardoMs(1000);
   LATDbits.LATD2 = 1;
   retardoMs(3);
   LATDbits.LATD2 = 0;
   retardoMs(7);
   LATDbits.LATD2 = 1;
   
   while(1){
   } return 1;

}


void __attribute__((__interrupt__)) _INT2Interrupt(void) {
unsigned int tiempo = 0;   


   if(INTCON2bits.INT1EP==0){
      LATBbits.LATB12 = 1;
      INTCON2bits.INT1EP = 1;
      T2CONbits.TON = 1;
   
   } else {
      LATBbits.LATB12 = 0;
      tiempo = ReadTimer2();   
      T2CONbits.TON = 0;
      TMR2 = 0;
      INTCON2bits.INT1EP=0;
      char buffer[20];
      buffer[0] = (char)(tiempo >> 8);
      buffer[1] = (char)(tiempo & 0x00ff);
      WriteUART2(buffer[0]);
      WriteUART2(buffer[1]);
   }
   
    IFS1bits.INT2IF = 0;    //Clear the INT2 interrupt flag or else
                                //the CPU will keep vectoring back to the ISR
//}


me genero un pulso que mido con el osciloscopio y no es el que me lee el timer, ¿que puedo estar leyendo mal? el calculo del tiempo con respecto al timer lo hago con la formula:

ValorTimer x 256 x 4 / 40.000.000 (frecuencia= 10Mhz de reloj x 4 PLL)


Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: ¿Timer no temporiza bien o calculo mal yo?
« Respuesta #1 en: 03 de Junio de 2008, 14:03:02 »
Saludos superprp!

me genero un pulso que mido con el osciloscopio y no es el que me lee el timer, ¿que puedo estar leyendo mal? el calculo del tiempo con respecto al timer lo hago con la formula:

ValorTimer x 256 x 4 / 40.000.000 (frecuencia= 10Mhz de reloj x 4 PLL)

Bueno el código no lo miré mucho porque no es el que manejo, yo uso el CCS.
Ahora bien, en esa ecuación... el 256 supongo que es la pre-escala, el 4 la fuente del timer que es Fosc /4, pero qué es el 4 "PLL" ?
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: ¿Timer no temporiza bien o calculo mal yo?
« Respuesta #2 en: 03 de Junio de 2008, 15:50:10 »
Ahora bien, en esa ecuación... el 256 supongo que es la pre-escala, el 4 la fuente del timer que es Fosc /4, pero qué es el 4 "PLL" ?

Ah pues ya veo... estas trabajando con dspic. Entonces no me meto en este avispero porque no traje protección  :D
Si es que mi experiencia con los dspic se limita a saber que existen. Aún no he jugado con ellos. Estoy medio atrasadillo  :?
Ya algún experto en dspic del foro te ayudará.
Ok nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web


 

anything