Autor Tema: Ayuda con reloj en tiempo real DS1302: se detiene solo.  (Leído 431 veces)

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

Desconectado selarem

  • PIC10
  • *
  • Mensajes: 4
Ayuda con reloj en tiempo real DS1302: se detiene solo.
« en: 13 de Septiembre de 2019, 20:06:38 »
Buena tarde compañeros.

Estoy haciendo un reloj con un PIC16F628A, un RTC DS1302 y muestro en display de 7 segmentos la hora (HH:MM:SS:AM/PM) cuando lo enciendo funciona correctamente. El problema es que después de un tiempo (un día o hasta una semana) se detiene y se queda marcando una hora aleatoria, lo único que he notado es que siempre es cuando está en 00 segundos.

Creo que podría descartar que sea problema del PIC puesto que sigue mandando pulsos para la comunicación con el DS1302 además de que sigue mostrando valores en los displays (los enciendo con multiplexión).

¿Saben ustedes si es problema del RTC o han tenido algún problema similar? ¿O creen que debería cambiar el integrado?

Tengo activado el bit de protección contra escritura porque pensaba que quizá en algún momento la bandera del reloj se activaba y ponía en estado de bajo consumo al RTC, pero sigue ocurriendo lo mismo.

Espero me puedan ayudar. Saludos a todos.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1092
Re:Ayuda con reloj en tiempo real DS1302: se detiene solo.
« Respuesta #1 en: 14 de Septiembre de 2019, 11:01:37 »
Que tal selarem,

Podrían estar pasando dos cosas:

1) La primera es que el cristal deje de funciona o que esté haciendo falso contacto hacia las terminales del DS1302
    No mencionas si tienes el circuito armado sobre protoboard o en PCB.

2) La segunda razón sería que el bit 7 del registro de los segundos, por alguna razón (posible bug en el código o alguna otra causa) se coloca en 1. Ese bit llamado CLOCK FLAG HALT lo que hace es detener el oscilador del DS1302 y este necesita siempre estar en 0. Si esta es la razón, lo que yo te recomiendo para detectarla y resolverla es que cada vez que lees el registro que contiene los segundos verifiques is este bit está en "0", si es así, entonces el DS1302 está operando, pero si ese bit por cualquier motivo se hace "1", entonces cambialo a "0"; de lo contrario sigues con la lectura y muestra de la hora.

Sería bueno que colocaras el código (mencionando el compilador que estás usando en caso de usar C) y el esquemático de tu circuito, mencionando si lo has armado en protoboard o si está armado en un PCB (circuito impreso).

elreypic.