Autor Tema: Configuracion del timer  (Leído 2601 veces)

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

Desconectado PabloFiscella

  • PIC16
  • ***
  • Mensajes: 154
Configuracion del timer
« en: 26 de Noviembre de 2003, 10:58:00 »
Hola a todos, soy nuevo en este foro. Y novato en la electronica.

Estoy tratando de prender una lampara durante un segundo y apagarla otro segundo. Pero queda prendida durante unos seis segundos.
Supongo que se trata de alguna configuración de el timer.

Estoy usando un PIC16f84A un un cristal de 4MHz

les paso en codigo para ver si detectan en que fallo.
El codigo lo saque de una ayuda y lo adapte a mi necesidad.
No tengo la mas minima idea de que es RTCC y sus configuraciones.
Espero no molestar mucho y poder aprender de Uds.

#fuses XT,NOWDT
#use delay (clock=20000000)
#define INTS_PER_SECOND 76     // (20000000/(4*256*256))

byte seconds;      // A running seconds counter
byte int_count;    // Number of interrupts left before a second has elapsed
int numero;

#int_rtcc                          // This function is called every time
clock_isr() {                      // the RTCC (timer0) overflows (255->0).
    if(--int_count==0) {           // per second.
      ++seconds;
      if (numero == 0) {
         numero = 1;
      } else {
         numero = 0;
      }
      int_count=INTS_PER_SECOND;
    }

}

void main(void) {
   int_count=INTS_PER_SECOND;
   set_timer0(0);
   setup_counters( RTCC_INTERNAL, RTCC_DIV_256);
   enable_interrupts(INT_RTCC);
   enable_interrupts(GLOBAL);

   set_tris_a(0x0);
   numero = 0;
   for(; {
      if(numero==0) {
         output_bit(PIN_A0,1);
      } else {
         output_bit(PIN_A0,0);
      }
   }
}


Saludos a todos. Gracias.
Pablo

Desconectado pacalaconcurso

  • PIC24F
  • *****
  • Mensajes: 718
RE: Configuracion del timer
« Respuesta #1 en: 26 de Noviembre de 2003, 11:59:00 »
lo tienes facil:

#fuses XT,NOWDT
#use delay (clock=4000000)
#define INTS_PER_SECOND 76 // (4000000/(4*256*256))

debes definir el delay y las interrupciones por segundo en funcion del cristal que usar.


saludos

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: Configuracion del timer
« Respuesta #2 en: 26 de Noviembre de 2003, 12:44:00 »
Cierto, pero ahora ya no son 76 repeticiones. Ahora tendrás que recalcular ese dato. 76/5=15.2 para lo que tu tienes calculado.
Ese 0.2 tendrás que despreciarlo, osea meter 15, lo que te quita aun más precisión.


Saludos!
Saludos desde Huelva (ESPAÑA)

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Configuracion del timer
« Respuesta #3 en: 26 de Noviembre de 2003, 12:58:00 »
El RTCC es el TMR0, que es el único temporizador (sin contar el gua-guau) del que dispone el 16F84.

;set_timer0(0);   //Carga el TMR0 con 0, cuando llegue a 255 se desbordará y como está habilitada su interrupción irá a atender a la función de atención a la interrupción

 setup_counters( RTCC_INTERNAL, RTCC_DIV_256);   //Se va a usar temporizador interno (el TMR0) con un predivisor (preescaler) de 256

enable_interrupts(INT_RTCC);   //Activa la interrupción por desbordamiento del TMR0

enable_interrupts(GLOBAL);   //Activación global de interrupciones

Bueno ya he puesto mi pequeño grano de arena.

Un saludo

Desconectado PabloFiscella

  • PIC16
  • ***
  • Mensajes: 154
RE: Configuracion del timer
« Respuesta #4 en: 27 de Noviembre de 2003, 05:24:00 »
Escrito originalmente por cucaracha
Cierto, pero ahora ya no son 76 repeticiones. Ahora tendrás que recalcular ese dato. 76/5=15.2 para lo que tu tienes calculado.
Ese 0.2 tendrás que despreciarlo, osea meter 15, lo que te quita aun más precisión.


Saludos!



Gracias a todos por las respuestas.
Me quedo una duda. Para que sea totalmente preciso, que es lo que hay que hacer. Cambiar el cristal?

Saludos.
Pablo