Autor Tema: Problema con DS1307 no avanza  (Leído 7764 veces)

0 Usuarios y 8 Visitantes están viendo este tema.

Desconectado donguille

  • PIC10
  • *
  • Mensajes: 6
Problema con DS1307 no avanza
« en: 11 de Mayo de 2010, 16:28:35 »
Saludos a todos los lectores de este foro, soy nuevo en el mismo, y escribo para hacer una consulta.
Estoy trabajando con un DS1307 y un pic16F628A, y muestro la hora en un LCD, la simulacion en el proteus funciona perfectamente pero el momento de pasarlo a un protoboard por alguna razon la hora se queda en el valor 02:02:02 y no avanza, igual pasa con el mes,dia y año, Febrero, Lunes,2002, todo se queda en el valor $2, ya probe cambiando todos los componentes y no cambio nada, aqui adjunto el programa en pic basic y el esquema hecho en proteus.gracias por su atencion, espero me puedan ayudar

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Problema con DS1307 no avanza
« Respuesta #1 en: 11 de Mayo de 2010, 18:01:56 »
puede que por error en el armado hayas colocado SDA y SCL cruzados, la batería la estás usando?
.

Desconectado flacoclau

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1692
    • El Micro Reactor
Re: Problema con DS1307 no avanza
« Respuesta #2 en: 11 de Mayo de 2010, 19:05:29 »
  Hola Donguille: Como dice Cryn fijate que esté todo bien conectado, si no usás batería poné el terminal 3 a masa y no te olvides de poner en cero el bit 7 (CH) del registro 00H (SECONDS) del DS1307 para habilitar el oscilador del reloj.
   Además te dejo un par de links para que los leas por si no los viste, suerte con el reloj!!

Real Time Clock o el DS1307 desatado

Reloj con DS1307, 18F452 y LCD 16x2 en assembler
Las personas con buena ortografía me atraen textualmente.

El Micro Reactor

Córdoba capital - Argentina.

Desconectado djim

  • PIC12
  • **
  • Mensajes: 75
Re: Problema con DS1307 no avanza
« Respuesta #3 en: 11 de Mayo de 2010, 19:56:10 »
Hola a todos, yo tenia el mismo problema que no funcionaba bien, lo que hice reemplazar las 2 resistencias que salen de sda (pin5) y scl (pin6) que son de 4k7 por 10k y me funciono perfectamente, es lo unico que cambie del circuito original del datasheet.

Djim

Desconectado donguille

  • PIC10
  • *
  • Mensajes: 6
Re: Problema con DS1307 no avanza
« Respuesta #4 en: 12 de Mayo de 2010, 00:30:29 »
Gracias por las respuestas,ya intente cambiar las resistencias de 10k y no funciono,en estos momentos voy a probar poniendo el pin 3 a masa, aunq si estaba usando la bateria pero no dio resultado,y no entiendo eso de cambiar el bit 7 a cero, estoy programando en pic basic, el codigo assembler es muy tedioso...gracias
No se si los archivos se estan cargando, ya los seleccion pero no veo ningun boton que diga subir o algo asi.

Desconectado donguille

  • PIC10
  • *
  • Mensajes: 6
Re: Problema con DS1307 no avanza
« Respuesta #5 en: 12 de Mayo de 2010, 00:58:22 »
Hola a todos, yo tenia el mismo problema que no funcionaba bien, lo que hice reemplazar las 2 resistencias que salen de sda (pin5) y scl (pin6) que son de 4k7 por 10k y me funciono perfectamente, es lo unico que cambie del circuito original del datasheet.

Djim
Bueno vuelto a comprobar el poner resistencias de 10k o 4k7 no genera ningun cambio

puede que por error en el armado hayas colocado SDA y SCL cruzados, la batería la estás usando?
ya probe tambien cambiando los cables entre el pin 5 y 6 y nada.

 Hola Donguille: Como dice Cryn fijate que esté todo bien conectado, si no usás batería poné el terminal 3 a masa y no te olvides de poner en cero el bit 7 (CH) del registro 00H (SECONDS) del DS1307 para habilitar el oscilador del reloj.
   Además te dejo un par de links para que los leas por si no los viste, suerte con el reloj!!

Real Time Clock o el DS1307 desatado

Reloj con DS1307, 18F452 y LCD 16x2 en assembler

Ya puse a masa el pin 3 y tampoco hubo cambio, ya entendi lo de poner el bit 7 a cero, ya lo hice y ahora lo que tengo con las resistencias de 10k, y cambiando el bit es que ahora me sale todos los datos 1, adjunto las modificiaciones del programa
« Última modificación: 12 de Mayo de 2010, 01:54:00 por donguille »

Desconectado barral

  • PIC10
  • *
  • Mensajes: 37
Re: Problema con DS1307 no avanza
« Respuesta #6 en: 12 de Mayo de 2010, 03:34:40 »
¿Pones resistencias normales? Creo que da problemas... yo uso el componente pullup, prueba a ver qué pasa. A mi en algún caso esto me dio problemas.

Saludos

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Problema con DS1307 no avanza
« Respuesta #7 en: 12 de Mayo de 2010, 09:55:35 »
raro... colocaste capacitores de desacoplo en la alimentación de cada integrado? 100nf entre Vcc y tierra cerca de cada integrado.

Si tuvieras a la mano otro RTC sería bueno probar con otro, puede que este dañado.

O quizá el software... no manejo basic, pero si en la simulación está funcionando bien, en hard no debería haber mucho problema.
.

Desconectado donguille

  • PIC10
  • *
  • Mensajes: 6
Re: Problema con DS1307 no avanza
« Respuesta #8 en: 12 de Mayo de 2010, 10:03:09 »
¿Pones resistencias normales? Creo que da problemas... yo uso el componente pullup, prueba a ver qué pasa. A mi en algún caso esto me dio problemas.

Saludos
Las resistencias de pull up son resistencias de polarizacion, no son de ningun componente especial, son normales. gracias

raro... colocaste capacitores de desacoplo en la alimentación de cada integrado? 100nf entre Vcc y tierra cerca de cada integrado.

Si tuvieras a la mano otro RTC sería bueno probar con otro, puede que este dañado.

O quizá el software... no manejo basic, pero si en la simulación está funcionando bien, en hard no debería haber mucho problema.
No estoy usando capacitores de desacoplo, nunca he usado por lo general funciona bien, si probe con otro RTC, pero pasa lo mismo.
Eso es lo que me tiene en duda que la simulacion funciona perfecto.
Otro detalle es que al quitar el cable desde el pin 5 del RTC los datos empiezan a cambiar en el LCD pero se muestran en valor hexadecimal sin ningun orden en especial.

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 664
Re: Problema con DS1307 no avanza
« Respuesta #9 en: 12 de Mayo de 2010, 10:06:57 »
humm es raro tu caso que no te funcione te recomiendo que has algo basico primero como leer loa hora nada mas lo los minutos y asi mas aumentando el codigo hasta ver en que se tranca.

Saludos y los comentas tu resultados.

Atten.
Alexander Santana.
Barcelona-Venezuela.
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado barral

  • PIC10
  • *
  • Mensajes: 37
Re: Problema con DS1307 no avanza
« Respuesta #10 en: 13 de Mayo de 2010, 03:44:24 »
¿Pones resistencias normales? Creo que da problemas... yo uso el componente pullup, prueba a ver qué pasa. A mi en algún caso esto me dio problemas.

Saludos
Las resistencias de pull up son resistencias de polarizacion, no son de ningun componente especial, son normales. gracias

raro... colocaste capacitores de desacoplo en la alimentación de cada integrado? 100nf entre Vcc y tierra cerca de cada integrado.

Si tuvieras a la mano otro RTC sería bueno probar con otro, puede que este dañado.

O quizá el software... no manejo basic, pero si en la simulación está funcionando bien, en hard no debería haber mucho problema.
No estoy usando capacitores de desacoplo, nunca he usado por lo general funciona bien, si probe con otro RTC, pero pasa lo mismo.
Eso es lo que me tiene en duda que la simulacion funciona perfecto.
Otro detalle es que al quitar el cable desde el pin 5 del RTC los datos empiezan a cambiar en el LCD pero se muestran en valor hexadecimal sin ningun orden en especial.

Te recomiendo que cambies las resistencias de pullup por el componente pullup de proteus. Prueba y me lo cuentas, yo tuve algún problema con eso.

Desconectado donguille

  • PIC10
  • *
  • Mensajes: 6
Re: Problema con DS1307 no avanza
« Respuesta #11 en: 13 de Mayo de 2010, 09:28:29 »
¿Pones resistencias normales? Creo que da problemas... yo uso el componente pullup, prueba a ver qué pasa. A mi en algún caso esto me dio problemas.

Saludos
Las resistencias de pull up son resistencias de polarizacion, no son de ningun componente especial, son normales. gracias

raro... colocaste capacitores de desacoplo en la alimentación de cada integrado? 100nf entre Vcc y tierra cerca de cada integrado.

Si tuvieras a la mano otro RTC sería bueno probar con otro, puede que este dañado.

O quizá el software... no manejo basic, pero si en la simulación está funcionando bien, en hard no debería haber mucho problema.
No estoy usando capacitores de desacoplo, nunca he usado por lo general funciona bien, si probe con otro RTC, pero pasa lo mismo.
Eso es lo que me tiene en duda que la simulacion funciona perfecto.
Otro detalle es que al quitar el cable desde el pin 5 del RTC los datos empiezan a cambiar en el LCD pero se muestran en valor hexadecimal sin ningun orden en especial.

Te recomiendo que cambies las resistencias de pullup por el componente pullup de proteus. Prueba y me lo cuentas, yo tuve algún problema con eso.

Amigo eso no creo que sea el problema ya que en la simulacion funciona perfecto, el problema esta en el momento de armar el circuito en el protoboard, y por lo visto creo que el problema esta en el programa ya que he hecho todas la recomendaciones que me han indicado pero no aparece la solucion, y tambien parece que nadie maneja lo que es pic basic asi que voy a intentarlo en otro lenguaje.gracias

Desconectado flacoclau

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1692
    • El Micro Reactor
Re: Problema con DS1307 no avanza
« Respuesta #12 en: 13 de Mayo de 2010, 15:45:06 »
  Hola don Guille: ¿Leíste los hilos que te propuse? Quizás ya lo hayas hecho, pero me sorprendió que no supieras lo del bit a cero, no quiero ser un latoso pero me parece que debes conocer al dedillo cada integrado que vas a utilizar, en el 1º link el amigo REDPIC explica con lujo de detalles el funcionamiento del 1307.
  Me gustaría ayudarte con el PICBASIC pero no manejo el mismo; Tal como dices a mí tambien me parece que el tema viene por la programación.
  Te comento que en el circuito que implementé he utilizado la señal del pin SOUT (seteado a 1Hz) para generar una interrupción y dentro de esta leer los datos guardados en la memoria del reloj. ¿Como lo haces tu? ¿el 628 tiene I2C o lo realiza por soft?
Saludos!!
Las personas con buena ortografía me atraen textualmente.

El Micro Reactor

Córdoba capital - Argentina.

Desconectado barral

  • PIC10
  • *
  • Mensajes: 37
Re: Problema con DS1307 no avanza
« Respuesta #13 en: 14 de Mayo de 2010, 03:53:50 »
Citar
Amigo eso no creo que sea el problema ya que en la simulacion funciona perfecto, el problema esta en el momento de armar el circuito en el protoboard, y por lo visto creo que el problema esta en el programa ya que he hecho todas la recomendaciones que me han indicado pero no aparece la solucion, y tambien parece que nadie maneja lo que es pic basic asi que voy a intentarlo en otro lenguaje.gracias

Ops... lo siento. No sé por qué motivo pensaba que lo que no funcionaba era la simulación. Ahora que lo he releído me doy cuenta de mi error. Lo siento.

Por lo demás no te puedo ayudar demasiado, ya que no he usado este RTC. El que si que he usado es el 1302, y una vez si que se me quedó parado, pero fue porque le puse 5V accidentalmente en el pin que lleva para trickle charge (donde pongo un supercap para que me aguante la hora).

Saludos y suerte.

Desconectado donguille

  • PIC10
  • *
  • Mensajes: 6
Re: Problema con DS1307 no avanza
« Respuesta #14 en: 14 de Mayo de 2010, 13:00:12 »
  Hola don Guille: ¿Leíste los hilos que te propuse? Quizás ya lo hayas hecho, pero me sorprendió que no supieras lo del bit a cero, no quiero ser un latoso pero me parece que debes conocer al dedillo cada integrado que vas a utilizar, en el 1º link el amigo REDPIC explica con lujo de detalles el funcionamiento del 1307.
  Me gustaría ayudarte con el PICBASIC pero no manejo el mismo; Tal como dices a mí tambien me parece que el tema viene por la programación.
  Te comento que en el circuito que implementé he utilizado la señal del pin SOUT (seteado a 1Hz) para generar una interrupción y dentro de esta leer los datos guardados en la memoria del reloj. ¿Como lo haces tu? ¿el 628 tiene I2C o lo realiza por soft?
Saludos!!
Que tal flacoclau
si lei los links que me indicaste, pero por ahora c no es lo mio, entonces no entendi muy bien, y bueno si fue mi error no leer sobre el ds1307, lo que pasa es que estaba siguiendo el esquema del libro de pic basic de Carlos Reyes, pero de la forma que yo estaba programando inclusive en el mismo datasheet dice que use el %10110000 que deja siempre el bit 7 en alto, de seguro esa era otra falla, pero si cambie y almenos asi no funciona,pero en el link de redpic hay una persona que ha hecho el codigo de una manera diferente y haciendo comparaciones encontre algunas diferencias que las adapte a mi codigo, el cual lo cuelgo aqui para dar este tema como solucionado.

Citar
Amigo eso no creo que sea el problema ya que en la simulacion funciona perfecto, el problema esta en el momento de armar el circuito en el protoboard, y por lo visto creo que el problema esta en el programa ya que he hecho todas la recomendaciones que me han indicado pero no aparece la solucion, y tambien parece que nadie maneja lo que es pic basic asi que voy a intentarlo en otro lenguaje.gracias

Ops... lo siento. No sé por qué motivo pensaba que lo que no funcionaba era la simulación. Ahora que lo he releído me doy cuenta de mi error. Lo siento.

Por lo demás no te puedo ayudar demasiado, ya que no he usado este RTC. El que si que he usado es el 1302, y una vez si que se me quedó parado, pero fue porque le puse 5V accidentalmente en el pin que lleva para trickle charge (donde pongo un supercap para que me aguante la hora).

Saludos y suerte.

No hay problema todos tienen la intencion de ayudar, muchas gracias, ahora si el codigo jeje...

Código: [Seleccionar]
@ DEVICE INTRC_OSC_NOCLKOUT ;Reloj interno solo
@ DEVICE WDT_OFF ; Watchdog Timer desconectado
@ DEVICE PWRT_OFF ; Power-On Timer desconectado
@ DEVICE BOD_OFF ; Brown-Out Detect desconectado
@ DEVICE MCLR_OFF ; Master Clear Externo desconectado
@ DEVICE LVP_OFF ; Low-Voltage Programming desconectado
@ DEVICE CPD_OFF ; Data Memory Code Protect desconectado

define LCD_DREG     PORTB           ;DEFINE PINES DLE LCD B4 A B7
DEFINE LCD_DBIT     4               ;EMPEZANDAO DESDE EL PUERTO B4 HASTA EL B7
DEFINE LCD_RSREG    PORTB           ;DEFINE EL PUERTO B PARA CONECTAR EL BIT RS
Define LCD_RSBIT    3
Define LCD_EREG     PORTB
Define LCD_EBIT     2

'CPIN = Portb.0                   ;pin señal de reloj I2C
'DPIN = Portb.1                    ;pin de datos I2C

segu var byte
minu var byte
hora var byte
diaS var byte
diaF var byte
mes var byte
anio var byte
num var byte

actualizado var bit

eeprom 0,[0]                        ;memoria 0 con el valor inicia 0 sirve para indicar que nunca ha corrido este programa

read 0,actualizado                  ;carga el valor de la memoria eeprom direccion 0

if actualizado=0 then grabarRTC     ;si es la 1ra vez que corre ir a grabar RTC caso contrario solo leer el RTC

INICIO:
lcdout $fe,1,hex2 hora,":",hex2 minu,":",hex2 segu      ;mostrar la hora,min y segs en 2 digitos(HEX2)
lcdout $fe,$c0     
[color=yellow]I2Cread PORTB.1,PORTB.0,$D0, $00,[segu,minu,hora,dias,diaf,mes,anio][/color]
if dias=$1 then lcdout "Dom."
if dias=$2 then lcdout "Lun."
if dias=$3 then lcdout "Mar."
if dias=$4 then lcdout "Mie."
if dias=$5 then lcdout "Jue."
if dias=$6 then lcdout "Vie."
if dias=$7 then lcdout "Sab."
                                                 
lcdout $fe,$c5,hex2 diaf,"/"            ;mostrar el dia del mes
lcdout $fe,$cB,"/20",hex2 anio          ;mostrar año /20+10
                                                 
lcdout $fe,$c8                          ;pasar a la casilla 8
if mes=$1 then lcdout "Ene"             ;mostrar el mes
if mes=$2 then lcdout "Feb"
if mes=$3 then lcdout "Mar"
if mes=$4 then lcdout "Abr"
if mes=$5 then lcdout "May"
if mes=$6 then lcdout "Jun"
if mes=$7 then lcdout "Jul"
if mes=$8 then lcdout "Ago"
if mes=$9 then lcdout "Sep"
if mes=$10 then lcdout "Oct"
if mes=$11 then lcdout "Nov"
if mes=$12 then lcdout "Dic"

pause 500
goto INICIO

grabarRTC:
[color=yellow]segu=$00
minu=$44
hora=$10
dias=$6
diaf=$14
mes=$5
anio=$10
I2Cwrite PORTB.1,PORTB.0,$D0, $00,[segu,minu,hora,dias,diaf,mes,anio] [/color]
write 0,1
goto INICIO

todo gracias a el post de Drop
http://www.todopic.com.ar/foros/index.php?topic=13282.100

aunq bueno con lo que el hizo y lo que tenia el reloj se actualiza de forma automatica el rato que se quita la alimentacion de 5V, gracias a la bateria de 3V, pero el rato que retiras la bateria de 3V tienen que volver a grabar el pic, porque sino la bandera no permite que registren los datos que ese era otro error en mi programa, nunca mandaba los datos iniciales del reloj, la hora tiene que ser ajustada en la primera grabada del pic.

Señores Gracias


 

anything