TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: jrbaquero en 19 de Enero de 2004, 18:58:00

Título: Problemas con diseño de Reloj con PIC16f877 (hora - min)
Publicado por: jrbaquero en 19 de Enero de 2004, 18:58:00
Gracias a todos, por las respuestas dadas, algo que no les he comentado es que me apresure a hacer la placa, y tengo todo los pines ocupados, ya que este reloj me sirve para hacer un sistema automatico de riego, todo es perfecto a excepción de, este problema, de manera que tengo que solucionarlo solamente con los timers, si tienen un ejemplo en la inicialización correcto del TMR1 sería de gran ayuda, ya que hasta ahora no puedo lograr que éste funcione.
Gracias

Hola, tengo un problema a realizar un reloj el cual me marca la hora, min en un pantalla lcd, éste se me retarda 1min mas o menos en un diá el cual no es conveniete, estoy ulitlizando el TMR0 con la siguiente inicializacion

//configuraci¢n de la Temporizacion 1 segundo
   T0CS=0; //Pulsos de reloj interno Fosc/4 (Temporizador)
   T0IE=1; //Incremento de TMR0 cada flanco ascendente
   PSA=0;  //El divisor de frecuencias se le asigna a TMR0
   PS2=1;  //Divisor de frecuencia 1:256 con PS2:PS1
   PS1=1;
   PS0=1;
   
   GIE=1;  //Permiso global de interrupci¢n activado
   Timer=16; //inicializo el tiempo con valor de 16(Dec)
y en la interrupcion hago lo siguiente

if(T0IF)
{   // activacion de bandera de int.
TMR0 = 12;          // cargo el tiempo 12
T0IF = 0;         // Encero la badera de int.
if(Timer != 0)      // si el tiempo es diferente de cero
Timer--;      // Decremento timer
if(Timer == 0)      // si el tiempo es 1s
{
   Timer=16;   //Cargo el valor de 16 Timer
  Seg=Seg+1;     //acumulo los segundos (sb)
  if(Seg==60)   
{
   if(Menu==1)
   {
      VistaHora=1; //Actualiza hora cada Minuto
   }
   Seg=0;   //encero acumulacion de segundo
   Min=Min+1; //incremento minutos
   if(Min==60)
   {
   Min=0;
   Hora=Hora+1;
   if(Hora==24)
   {
      Hora=0;
      Dia=Dia+1;
                   DiaSemana=DiaSemana+1;
......................................
}
}

NO se cual es el problea de este retrasom, espero que me puedan ayudar con este problema gracias.
Att
Fdo
                     
Título: RE: Problemas con diseño de Reloj con PIC16f877 (hora - min)
Publicado por: solid84 en 20 de Enero de 2004, 00:06:00
que tal jrbaquero por que no pruebas con el timer 1 ya que es mas exacto el 16f877 lo tiene saludos
Título: RE: Problemas con diseño de Reloj con PIC16f877 (hora - min)
Publicado por: CARLCOX en 20 de Enero de 2004, 10:02:00
HOLA!!

HAZ TRABAJADO O HAZ ESCUCHADO DEL DS1307, ESTE ES UN RELOJ DE TIEMPO REAL, TE DA EL AÑO, EL MES, DIA DE LA SEMANA, HORA EN FORMATO AM O PM O 24H MINUTOS Y SEGUNDOS, TRABAJA CON PROTOCOLO I2C Y ES FACIL DE USAR, SI NECESITAS EL DATASHEET SOLO DILO!!

ESPERO TE SIRVA!!! SUERTE!!
Título: RE: Problemas con diseño de Reloj con PIC16f877 (hora - min)
Publicado por: Sispic en 20 de Enero de 2004, 10:14:00
A alguien se le ha ocurrido en usar, o a usado la frecuencia de 50hz. de la red para calcular el reloj entrando los pulsos por rb0 / Interrr.

Creo que podria ser una solución y ahorrase tanto lio de cuarzos y tmr para que se adapte.
Título: RE: Problemas con diseño de Reloj con PIC16f877 (hora - min)
Publicado por: bagmel en 22 de Enero de 2004, 22:25:00
Hola jrbaquero, yo tuve problemas con los relog y el 877 pero utilizando el timer1 y otro cristal adicional solucione todo el problema es super preciso si quieres enviame tu email y te envio el plano y la rutina que utilize con el relog y el lcd funciona cool, estamos para ayudar cualquier cosa pega un grito y te ayudo
Título: RE: Problemas con diseño de Reloj con PIC16f877 (hora - min)
Publicado por: davecool_2003 en 02 de Febrero de 2004, 18:49:00
Hola. Me llamo David. VEo que has usado el ds1307. Mira tengo un problema. No puedo hacer que funciona para nada no abodece a ningun comando. Aparentemente si recupera la información pero no la graba ni me deja iniciar el conteo con la instruccion 0x90. Tengo conectado al bus I2C una memoria 24LC64 y no tengo problemas  pero el reloj me esta matando. Piedes ayudarme? Yo trabajo con PIC-C de CCS corp.  y el 16F877
Título: RE: Problemas con diseño de Reloj con PIC16f877 (hora - min)
Publicado por: todopic en 02 de Febrero de 2004, 20:58:00
Hola, con respecto a el dato de sispic, yo tengo un reloj que funciona con la red de 50hz, y realmente anda muy bien... solo que hay que ponerlo en hora luego de un corte de energia!...


Norberto
Título: RE: Problemas con diseño de Reloj con PIC16f877 (hora - min)
Publicado por: davecool_2003 en 03 de Febrero de 2004, 18:22:00
Hola. estoy trabajando con el DS1307 ya puedo leer y reprogramar la hora en sus registros pero tengo un problema. se adelanta o almenos eso es lo que parece. Al recuperar los registros de minutos y segundos y presentarlos en pantalla se ve que esta adelantado respecto del reloj de pulsera que utilice para sincronizarlo. tienes alguna idea de lo que me esta sucediendo?
Título: RE: Problemas con diseño de Reloj con PIC16f877 (hora - min)
Publicado por: davecool_2003 en 03 de Febrero de 2004, 18:26:00
Hola bagmel soy davecool quisiera pedirte ayuda con lo del reloj. actualmente uso el ds1307 pero no consigo que mantenga la hora exacta. anteriormente genere  un reloj con instrucciones pero tampoco funcionó ( se atrasaba o se adelantaba) puedes ayudarme ? mi correo es davecool_2003@hotmail.com
Título: RE: Problemas con diseño de Reloj con PIC16f877 (hora - min)
Publicado por: cucaracha en 04 de Febrero de 2004, 09:41:00
Para que  no atrase o atrase lo mínimo posible debes de hacer en el pcb lo que te indican para el cristal. Y este debe tener un capacidad de 12,5pF (si mal no recuerdo). Todo viene en el data.
Y prueba con un par de relojes para asegurarte. No te quiero ni contar lo que me ocurrió por comparar con el reloj del PC.

Saludos!!
Título: RE: Problemas con diseño de Reloj con PIC16f877 (hora - min)
Publicado por: davecool_2003 en 04 de Febrero de 2004, 21:22:00
Muchas Gracias. Voy a tomar en cuenta esos detalles.
Mira hay una cosa rara en este asunto del reloj, cada vez que lo igualo se mantiene bian + o- un minuto, recupero bien los registros de hora minuto segundos bien pero luego comienza a recuperar datos que al menos para mi no corresponden a la realiadad me saca an el valos de minutoy y segundo valores como 89,
91, 123. cosa que es imposible supuestamente los datos regresan en formato BCD. Inclusive hago una especie de filtrado de los datos para impedir que me llegue basura en cada registro. pero no puedo impedirlo... no te ha pasado nada de eso.. Ya mismo pierdo esperanzas y vulevo a las instrucciones del PIC pero implementando algun algoritmo de corrección de tienpos...no se que hacer.. ayudame
Título: RE: Problemas con diseño de Reloj con PIC16f877 (hora - min)
Publicado por: cucaracha en 05 de Febrero de 2004, 09:21:00
Vamos a ir probando. A lo de 89 en los minutos lo puedo incluso entender, pero el resto...
Mira, tu lees en BCD y muestras tal cual el dato. Bien, imagina que tu lectura es 59 minutos en bcd, 59BCD. Sin hacer conversión de ningún tipo 59BCD=01011001BIN=89DEC
Por tanto, convierte el dato a binario después de leerle del DS.
Otra cosa, fíjate que en los días de la semana van del 1 al 7, osea que el cero en ese registro no existe. Vamos, que no escribas un cero en ese registro.

Recuerdo que hace un par de días me pasó una vez esto que tu comentas, lo de aparecer 89 en minutos y segundos. Y la verdad no recuerdo que tocaramos nada por eso ¿¿?? (Estamos en desarrollo, osea unos 15000 cambios en el código al día, o más). Así que quizás pueda ser también por lo segundo que te comento, por lo del día de semana =0. No se.

Prueba.

Saludos!!
Título: RE: Problemas con diseño de Reloj con PIC16f877 (hora - min)
Publicado por: bagmel en 06 de Febrero de 2004, 16:18:00
Hola amigos disculpen que no los ayudara antes, adjunto a esto les subo al foro las rutinas del proyecto que realize con un 877, el timer1 y una pantalla lcd para tener un relog de tiempo real, si tienen dudas envieme un correo a bagmel@cantv.net


amigos envienme un correo pq el foro no me deja subir archivos
Título: RE: Problemas con diseño de Reloj con PIC16f877 (hora - min)
Publicado por: pocher en 07 de Febrero de 2004, 03:22:00
Ponlo aquí si lo deseas: http://miarroba.com/foros/ver.php?id=256746
Título: RE: Problemas con diseño de Reloj con PIC16f877 (hora - min)
Publicado por: adolfoadc en 07 de Febrero de 2004, 06:10:00
Lo principal a tener en cuenta cuando se realizan relojes es tener una señal de clock muy estable en el tiempo, es decir utilizar cristales de cuarzo de alta estabilidad con la temperatura. De lo contario las derivas en el tiempo seran considerables.
Hay otra forma que es conseguir un pulso de 1Hz en la entrada de contador, si coges un oscilador de 1Mhz y vas dividiendo la frecuencia por 10 hasta que consigues un pulso por segundo el error que pueda tener el cristal queda divido por 1000000 y por tanto es menor que para cristales de 32KHz. El problema es que ocupa mucho espacio. Los relojes de I2C van muy bien pero se deben utilizar buenos cristales de cuarzo.
Título: RE: Problemas con diseño de Reloj con PIC16f877 (hora - min)
Publicado por: davecool_2003 en 13 de Febrero de 2004, 12:59:00
Muchas gracias. he cooregido ese problema.
Lastimosamente salgo de una y caigo en otra..... mira ya puedo igualar el reloj y recibir los datos mas o menos.
  A veces me recupera bien la hora y otra veces recupera datos incorrectos, lo de los datos en BCD ya esta solucionado, sin embargo digamos que me recupera 15:30:42 este dato es correcto, pero despues de unos MINUTOS de recuperar  me sale 18:45:00 segun el reloj habrian pasado 3 horas y solo pasaron algunos minutos. luego recupera otra hora como 15:38:25  que si es la hora aproximada tomando en cuenta el tiempo en que ha funcionado el reloj.
Piensas que debo cambiar y probar comprando otro DS1307 ???  Esas fallas no tienen sentido a demás estoy recuperando cada registo individualmente en una variable, segun el PDF del reloj DS1307 envia los datos uno tras otro, pero a mi no me ha funcionado, asi que los hago manualmente para cada registro.
Lo de los retrazos que sufre el DS1307 es porque el cristal esta afectado por interferencias, espero que con el anillo aterrizado que sugiere el PDF se solucione.
Que opinas soble la recuparación errónea de datos??
Título: RE: Problemas con diseño de Reloj con PIC16f877 (hora - min)
Publicado por: xootraoox en 14 de Febrero de 2004, 19:34:00
hola amigo,, mmmmm..... solo como una sugerencia.......   no se ha pensado en utilizar como referencia de segundos un reloj de esos que venden en cualquier lado al mas vajo precio que son unos relojes chinos y podria llegar a apostar que alguna vez haz encontrado en la calle votado miren en mi pais chile hay unas importadoras chinas que los venden y su precio no va mas alla de 1000 pesos lo que vendria siendo como 1,50 dolares lo que es un precio minimo y una referencia del segundo casi exacta y sin tanta complicacion solo nos da la tarea de sensar un pulso que es el segundoy listo tambien venden unos relojes que van colocados en los relojes de muro los cuales alimentan una bobina para asi mover el palito del secundero bueno y si desarmamos eso es apenas una plaquita diminuta que la sacamos, desconectamos la bobina y listo ademas el condumo de los mismos es el minimo si tomamos en cuenta que ese reloj funciona hasta con una pila de 1.5 volts que ya no trabaja en un control remoto cualquiera........ bueno ya no lateo mas y les dejo esa idea que es la que yo he utilizado siempre cuando se me presenta el problema de la presicion del segundo para que uds la ocupen en lo que les sea de utilidad

aps se me olvidava , el sistema de los relojes murales es aun mas barato, por aca se encuentran hasta por 600 pesos chilenos lo cual en dolares no son mas que 0.93 lo cual es ideal cuando hablamos de de costos

buena suerte a todos
Título: RE: Problemas con diseño de Reloj con PIC16f877 (hora - min)
Publicado por: todopic en 15 de Febrero de 2004, 10:59:00
Hola, creo que el problema del error en la hora, puede ser en realidad con la presentacion en el LCD, es decir, cuando envias la informacion al display... coloca alguna pequeña demora, o incrementa un poco en el retardo de comunicacion...

(me refiero a esta nueva falla ok?, la anterior me parecio muy bien explicada por Cuca )

Un abrazo

Norberto