TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado 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
-
que tal jrbaquero por que no pruebas con el timer 1 ya que es mas exacto el 16f877 lo tiene saludos
-
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!!
-
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.
-
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











-
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
-
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
-
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?
-
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
-
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!!
-
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
-
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!!
-
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
-
Ponlo aquí si lo deseas: http://miarroba.com/foros/ver.php?id=256746
-
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.
-
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??
-
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
-
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