Autor Tema: Config timer 1 y cristal 32768  (Leído 1995 veces)

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

Desconectado sebaalejo

  • PIC10
  • *
  • Mensajes: 1
Config timer 1 y cristal 32768
« en: 20 de Febrero de 2012, 14:45:11 »
Hola gente, antes que nada me presento, mi nombre es Sebastian y soy nuevo en el foro, como asi tambien en la proframacion de PIC!

Estaba realizando un reloj alarma con el 16f877A pero tengo problemas con la configuracion del timer 1, ya que lo quiero usar con un cristal externo de 32768 para poder hacer una interrupcion precisa de 1 seg.

Ahora bien, en el proteus jamas pude hacerlo funcionar..lei en otros temas que es un problema del proteus que no simula cristales y que se solucionaba con un generador de funciones en la pata 16 (T1OSI) pero a mi esto tampoco me funciono.

Al pasarlo al protoboard si realiza la instruccion pero la temporizacion esta mal echa...mas rapido que un segundo...queria saber si alguien me podria ayudar porque ya estoy perdido.... aca les dejo parte del codigo:

#include <16F877A.h>
#fuses XT,NOPROTECT,NOPUT,NOBROWNOUT,NOLVP,NOWDT
#device adc = 10 // seteo del conversor en 8 bits
#use delay(clock=4000000)
#include "flex_lcd.c"
#include "pic16f8xx.h"


void muestra_lcd(void);
void scan_teclado(void);
void setup_tmr1(void);
float temperatura(long val);

signed char hora=0, minuto=0, segundo=0, menu=1;
signed char horaal=0, minutoal=0, segundoal=0;

const long escala = 1024;//factor de escala
const float v_max = 5;// rabgo máximo de la tensión de la escala

float temp;

#INT_TIMER1
void isr_timer1(void)
{
 
    set_timer1(57344);
   segundo++;
   if(segundo==60)
   {
      segundo=0;
      minuto++;
   
   }
   if(minuto==60)
      {
         minuto=0;
         hora++;
      }
   if(hora==24)
      {
         hora=0;
      }      
}

void main(void)
{
    long valor;
    setup_adc(adc_clock_div_32); //Enciende conversor
    setup_adc_ports(AN0); //Selecciona terminales
    setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1|T1_CLK_OUT);
    set_timer1(57344);
    setup_timer_0(RTCC_INTERNAL | RTCC_DIV_8);
   set_timer0(168);
    enable_interrupts(INT_TIMER0);
   enable_interrupts(INT_TIMER1);
   enable_interrupts(GLOBAL);
   lcd_init();   
   while(1)
   {
        set_adc_channel(0); // Selecciona canal
        valor=read_adc(); // Conversión AD
        temp=temperatura(valor);
      muestra_lcd();
      scan_teclado();
      delay_ms(10);
   }
   
}



ven algo raro???


Bueno desde ya, muchas gracias

Desconectado Joel.Espinoza

  • PIC10
  • *
  • Mensajes: 7
Re:Config timer 1 y cristal 32768
« Respuesta #1 en: 20 de Abril de 2024, 00:07:01 »
Que raro son estos foros, no dan seguimiento al cierre de los issues.


 

anything