Autor Tema: ayuda Reloj DS1307  (Leído 8753 veces)

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

Desconectado rghugo

  • PIC10
  • *
  • Mensajes: 48
ayuda Reloj DS1307
« en: 04 de Octubre de 2020, 17:45:25 »
Hola Amigos, en esta oportunidad necesito hacerles una consulta tecnica..

hice un circuito donde utilizo un reloj calendario DS1307,  el circuito con DS1307, lo hice yo (no compre modulo armado) no le puse memoria eprom, como tiene el modulo comprado.

el circuito funciona perfecta, el controlador lee perfectamente dias, horas, min, etc. el problema que tengo es que cada vez saco la energia del circuito el sistema vuelva a la hora de escritura..

hice toda clase de pruebas, inicializar, luego escribir hora, lectura, luego con MPlab, modifique la parte donde escrbe la fecha y hora, pero nada me funciono, digamos que tiene la pila sin sentido, pues la rutina inicializar, incluye escribir fecha y hora y si no arrancamos con Inicializar y pasamos a lectura, el controlador no lee las variables...

pueden ayudarme, a resolver esto?, pido disculpa si es un tema que ya se hablo.

gracias de antemano.

saludos
Hugo
« Última modificación: 06 de Octubre de 2020, 17:31:45 por Fer_TACA »

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:ayuda Reloj DS1307
« Respuesta #1 en: 05 de Octubre de 2020, 14:55:23 »
Puedes adjuntar el esquema de las conexiones realizadas para el módulo DS1307.
Da la impresión, como dices que la pila no hace efecto y no guarda los valores.
de todas formas pienso que una vez retirada la alimentación, al volver a poner tu programa se debería de inicializar desde el inicio y por tanto leer las variables.

F.
Todos los días se aprende algo nuevo.

Desconectado rghugo

  • PIC10
  • *
  • Mensajes: 48
Re:ayuda Reloj DS1307
« Respuesta #2 en: 05 de Octubre de 2020, 15:47:22 »
gracias amigo por su comentario...

no lo tengo con variables, lo tengo con dato fijo, por eso al inicializar vuelve a programar la fecha y la hora...

No pude usar las variables, pues al reloj no le puse eeprom y estoy usando 12f675, que entiendo no tiene eprom interna, de todas formas,  no me doy cuenta como hacer la rutina si le agrego una eprom 24c02 al el puerto SDA y SCL...

pude ayudarme con la rutina usando una variable? pies debo inicializar primero lectura de erpom y luego inicializar el reloj?

en que momento el reloj guarda la info en el registro de la eprom?

Gracias

Desconectado lucegiar2005

  • PIC24F
  • *****
  • Mensajes: 504
Re:ayuda Reloj DS1307
« Respuesta #3 en: 05 de Octubre de 2020, 18:17:49 »
Hola, buenas tardes. Según recuerdo el 675 tiene 128 bytes de eeprom, ¿me equivoco?
- Santiago -

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Re:ayuda Reloj DS1307
« Respuesta #4 en: 05 de Octubre de 2020, 18:23:33 »
Yo de nipple cero. Pero al trabajar con el ds1307 en c (es indiferente) lo que hago es utilizar tres posiciónes ram del propio ds1307 para grabar un valor clave cualquiera en cada uno. Luego el programa cuando arranca lo primero que hace con el ds1307 es leer estos tres valores y compararlos con tres constantes. Si coinciden la memoria ram es válida, por lo tanto los datos de calendario y reloj son válidos, se leen y se cargan las variables desde el rtc.

 Si no coinciden se entiende que los datos se han perdido o dañado por que la pila no está o está descargada o se ha retirado momentáneamente, etc y entonces el programa principal pide poner fecha y hora de nuevo al usuario.

 En tu caso parece que el programa cada vez que arranca ajusta siempre la fecha y hora y por eso el rtc siempre te arranca en lo preajustado.

 Saludos.

Desconectado rghugo

  • PIC10
  • *
  • Mensajes: 48
Re:ayuda Reloj DS1307
« Respuesta #5 en: 05 de Octubre de 2020, 21:01:47 »
Gracias, seguramnete se puede hacer desde Niple, pero no le encuentro la vuelta, yo con C, poco y nada...

Gracias

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:ayuda Reloj DS1307
« Respuesta #6 en: 06 de Octubre de 2020, 12:17:10 »
Yo lo que tengo entendido es que tienes los valores a programar dentro de la memoria del pic y al dar tensión al equipo, lo que se realiza es que se reinicializa el reloj, mandando los valores que tienes fijados, al reloj para que los tome como valores de configuración.

Lo normal es que esos valores quedaran grabados en la eeprom del DS1307.

Lo que indicas es que aunque tengas puestas la pila, si quitas la alimentación, en un nuevo regreso de la alimentación ha perdido los valores iniciales. Según lo que has explicado, tienes nada mas dar tension un bloque que reinicia los valores reajustados, de esa forma aunque no tuviera pila el DS1307 siempre lo primero que haría el pic es volver a mandarle los datos, aunque me imagino que los días, horas, etc. no se actualizarían al valor actual en ese momento.

Gracias, seguramnete se puede hacer desde Niple, pero no le encuentro la vuelta, yo con C, poco y nada...

Gracias

Claro que lo hace.

De todas formas para ayudarte mejor deberías adjuntar el fichero NPL creado hasta el momento para revisarlo.
También el esquema eléctrico usado.

f.
« Última modificación: 06 de Octubre de 2020, 12:23:07 por Fer_TACA »
Todos los días se aprende algo nuevo.

Desconectado rghugo

  • PIC10
  • *
  • Mensajes: 48
Re:ayuda Reloj DS1307
« Respuesta #7 en: 06 de Octubre de 2020, 12:28:01 »
estimado, usted esta en lo correcto, eso es lo que sucede...

comparto el fichero... ahi podra entender mejor..


Muchas gracias por la ayuda...


Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:ayuda Reloj DS1307
« Respuesta #8 en: 06 de Octubre de 2020, 17:31:29 »
Gracias por el adjunto, lo voy a revisar.
Lo primero que he visto es una cosa ¿Para que inicializas el watchdog a o, si no lo tienes habilitado dentro de la configuración de la CPU?

Otra cosa como mejora: Ya que has creado etiquetas, yo utilizaría el "salto a etiqueta" de esa forma tienes menos flechas de unión entre bloques pasando por medio de otros bloque, además el diagrama seria mas fácil de seguir. De momento lo estoy acomodando un poco para poder seguirlo. 

Pero para un estudio mas afondo de lo realizado. ¿Puedes adjuntar el esquema eléctrico de las uniones del pic con el reloj, pila, etc.?
Todos los días se aprende algo nuevo.

Desconectado rghugo

  • PIC10
  • *
  • Mensajes: 48
Re:ayuda Reloj DS1307
« Respuesta #9 en: 06 de Octubre de 2020, 19:20:01 »
gracias por los consejos...

adjunto el circuito en proteus...

nuevamente gracias....

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:ayuda Reloj DS1307
« Respuesta #10 en: 07 de Octubre de 2020, 12:47:56 »
Amigo,
en el fichero del esquema que has adjuntado no aparece el reloj DS1307 por ningún sitio.

F.
Todos los días se aprende algo nuevo.

Desconectado rghugo

  • PIC10
  • *
  • Mensajes: 48
Re:ayuda Reloj DS1307
« Respuesta #11 en: 07 de Octubre de 2020, 14:21:01 »
disculpe, se refiere al circuito de proteus?

Desconectado rghugo

  • PIC10
  • *
  • Mensajes: 48
Re:ayuda Reloj DS1307
« Respuesta #12 en: 07 de Octubre de 2020, 14:25:01 »
perdón, me equivoque de archivo, adjunto el correcto..

gracias

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:ayuda Reloj DS1307
« Respuesta #13 en: 07 de Octubre de 2020, 17:15:07 »
Hola,

Referente al circuito, solo una cosa, deberías de bajar las resistencias de pull-up de las líneas SDA y SCL a unos 4k7.
Por otra parte por lo que indicas en tus post, veo que el circuito lo inicializas al comienzo del programa. Niple, a través del bus I2C escribe los datos configurados en el reloj. Cuando desconectas la alimentación el reloj debe de seguir funcionando y creo que lo hará.
El problema creo que radica es que cuando regresa la alimentación, tu programa vuelve a comenzar desde el inicio y por tanto vuelve a inicializar el reloj, pero con los valores pre-ajustados en el primer bloque de inicializar el reloj al comienzo del programa.

Lo que creo que deberías de realizar es lo siguiente:
1º La primera vez que inicialices el reloj pongas un determinado valor en un registro y lo guardas en la memoria eeprom del pic.
2º Cada cierto tiempo leer los valores del reloj y guardarlos o bien en una eeprom externa o en en la memoria EEprom  del pic.
3º Modificar tu programa principal de forma que lo primero que realices es comprobar el valor del registro del punto 1º (por tanto leer la memoria EEprom). Con esto compruebas si esta inicializado el reloj y si lo está entonces lees los datos del reloj que habías almacenado en la eeprom.
4º Comprobar si los datos leídos de la eeprom se corresponden con los del reloj y si son distintos, entonces escribes los valores (los guardados en la eeprom) en el reloj.

Espero que me hayas entendido.

F.
Todos los días se aprende algo nuevo.

Desconectado rghugo

  • PIC10
  • *
  • Mensajes: 48
Re:ayuda Reloj DS1307
« Respuesta #14 en: 07 de Octubre de 2020, 17:41:44 »
Muchas gracias por sus comentarios y su tiempo...

entiendo lo que usted comenta, pero interpreto un error, salvo que el ds1307, escriba en los registros de eprom cuando corto la energia, y esto no se si lo hace realmente....


 

anything