Autor Tema: Duda sobre RTCC  (Leído 1604 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado championz

  • PIC16
  • ***
  • Mensajes: 127
Duda sobre RTCC
« en: 20 de Mayo de 2006, 03:33:26 »
Buenas! comoa andan todos? les hago una pregunta... es acerca de las interrupciones por RTCC... cuando ocurre una interrupcion por desordamiento del timer... en la rutina de interrupcion el contador sigue incrementandose luego de pasar a cero, o se pone en cero y compienza a incrementarse cuando sale de la rutina?

Desconectado ORE

  • PIC10
  • *
  • Mensajes: 43
Re: Duda sobre RTCC
« Respuesta #1 en: 20 de Mayo de 2006, 13:43:07 »
Hola championz,

Usa el siguiente código:

byte const NInts=11;                    // Numero de interrupciones para 300 ms

// VARIABLES GLOBALES

char C_Ints=0;                         // Contador de Interrupciones ocurridas
char Flag=0;                           // Flag que cambia cada NInts interrupciones
char K=0;                              // Estado anterior del Flag


#int_RTCC                              // Interrupción por desbordamiento
RTCC_isr() {                           // del TIMER0 RTCC

  if(C_Ints > NInts){                  // Si las ints ocurridas > ints para 0.30 seg.

    if(Flag==0){
      Flag=1;
    }
    else{
      Flag=0;
    }
    C_Ints=0;                          // Reinicializo Contador de Ints
  }
  ++C_Ints;                            // Incremento el número de interrupciones
}                                      // Ocurridas


void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(FALSE);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_32);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   enable_interrupts(INT_RTCC);                // Habilito Interrupción RTCC
   enable_interrupts(global);                  // Habilito Interrupciones
   output_low(PIN_B7);                         // Empiezo apagando el Led


   do{ // Bucle infinito

      if(Flag!=K)
                  {                                         // si ha cambiado Flag ...
                  if(Flag==0){ output_low(PIN_B7); }      // Si es 0 Apago el Led
                  if(Flag==1){ output_high(PIN_B7); }     // si es 1 Enciendo el Led
                  k=Flag;                                 // Guardo estado anterior de Flag
                  }

     }
  While(TRUE);
}

Un saludo,

Desconectado championz

  • PIC16
  • ***
  • Mensajes: 127
Re: Duda sobre RTCC
« Respuesta #2 en: 20 de Mayo de 2006, 17:20:20 »
gracias Ore por la respuesta, pero no entendiste mi pregunta...

Mi duda es si el timer sigue incrementandose mientras se esta ejecutando la rutina de interrupcion o se detiene el timer hasta que finalice la rutina.

Desconectado Manofwar

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 156
Re: Duda sobre RTCC
« Respuesta #3 en: 20 de Mayo de 2006, 18:40:49 »
Hola championz, el tiempo para el timer, y desgraciadamente para nosotros también, no se detiene por lo que sigue contando.
Saludos desde Almería, España