Autor Tema: Problemas con Reloj  (Leído 1866 veces)

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

Desconectado Tempus

  • PIC10
  • *
  • Mensajes: 37
Problemas con Reloj
« en: 16 de Febrero de 2009, 10:50:44 »
hola estoy intentando hacer  un reloj  y un termometro para que aparezcan en una lcd el termometro ya lo tengo echo pero a la hora de hacer el reloj no e va y creo k la interrupcion la tengo bien echa y no encuentro el fallo.

Gracias de antemano

Pd: Adjunto libreria lcd, esquematico en proteus y codigo c en ccs c

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Problemas con Reloj
« Respuesta #1 en: 16 de Febrero de 2009, 19:39:32 »
Hola Tempus, veo que tienes algunos errores, te lso estoy corrigiendo, algunos son solo para que veas mejor el código, yo creo que verás las diferencias con tu código

lo más importante:
*después de seleccionar el canal no menos de 20us de retardo, eso dice la hoja de datos, en realidad es 19,... para tu micro, directamente 20us.
*las definición de algunas variables en la interrupción no me parece la mejor idea, mejor como globales
*algunas instrucciones del lcd pueden ir dentro del printf, la instrucción \f lleva a la posición 1,1 del lcd, al inicio
*cual es el calculo que hiciste para tu timer0?

y bueno con eso ahorita te cuelgo el código que corregí, un saludo
.

Desconectado Tempus

  • PIC10
  • *
  • Mensajes: 37
Re: Problemas con Reloj
« Respuesta #2 en: 16 de Febrero de 2009, 20:33:41 »
ya estuve haciendo las modificaciones que me as comentado y el calculo mañana cuando regrese a las clases te lo subo xk no tengo aki las cuentas.
aver si veo tu programa para ver como funciona y aprender un poco mas que este año y con vosotros estoy aprendiendo mas que en todos los años de carrera.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Problemas con Reloj
« Respuesta #3 en: 16 de Febrero de 2009, 20:35:06 »
Hola tempus, acá te dejo algunas correcciones que hice a tu código:

Código: [Seleccionar]
#include <16F876.h>
#device adc=8
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz
#FUSES PUT                      //Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES BROWNOUT                 //Reset when brownout detected
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection

#use delay(clock=4000000)
#define use_portb_lcd TRUE
#include <lcd.c>
int segundos,minutos,horas,temperatura;
int seg=0;
  
       //INTERRUPCION//
#int_rtcc //Habilita interrupción timer0
void interrupt_timer(void){
   seg++;
   if(seg==125){  //Condición de cambio
      segundos++; // cuenta 1 segundo
      seg=0;  // qeu no se te olvide reiniciar cuenta
   }
   set_timer0(131);  //Inicializa Timer0
}

void main(void){
   setup_adc_ports(RA0_ANALOG);// configura RA0 como entrada analogica
   set_tris_a(0xff);
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_64);  //Configura timer0 y prescaler
   set_timer0(131);                          //Inicializa timer0
   enable_interrupts(INT_RTCC);        //Habilita interrupción timer0
   enable_interrupts(GLOBAL);          //Habilita Interrupciones
   lcd_init();// inicializa el LCD
   set_adc_channel(0);
   delay_us(20);
   while(true){  
      temperatura=read_adc();//lee valor analogico
      if(segundos>59){
         segundos=0;
         minutos++;
         if(minutos>59){
            minutos=0;
            horas++;
            if(horas>24)
               horas=0;
         }
      }
      printf (lcd_putc,"\f%02u:%02u  Temp:%d C" ,minutos,segundos,temperatura*2);  // ya no hace falta el gotoxy ni el \f fuera del printf
      delay_ms(100);
   }
}

Hay un ligero retraso en la cuenta, para lo que te recomiendo ver un poco más en el foro, para que intentes minimizar el retraso, pues hay muchas opciones, como la de utilizar un IC RTC, como el DS1307 u otro parecido, o un cristal de 32.768KHz en el T1CKI y T1CKO

Espero pueda servirte por ahora, cualquier cosa paso por acá, un saludo. No te olvides buscar en el foro y tener orden al crear temas
.

Desconectado Tempus

  • PIC10
  • *
  • Mensajes: 37
Re: Problemas con Reloj
« Respuesta #4 en: 16 de Febrero de 2009, 20:48:30 »
Gracias nuevamente si no te preokupes k ahora k me explicaste hare todo con mas orden y metiendo todo en este hilo asi sera mas facil para todo  entre hoy y mañana lo  que hare sera con dos botones uno de horas y otro de minutos poder modificar la hora .

Gracias nuevamente y cuando kieras estas invitado por estos parajes  aunke no son tan lindos como la laguna, el cristo....

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Problemas con Reloj
« Respuesta #5 en: 16 de Febrero de 2009, 21:02:07 »
ok amigo, cuídate y no creo que pueda ir por allá :D me gusta ir al cristo y a la laguna :mrgreen:

un saludo
.


 

anything