TODOPIC
Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: donguille 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
-
puede que por error en el armado hayas colocado SDA y SCL cruzados, la batería la estás usando?
-
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 (http://www.todopic.com.ar/foros/index.php?topic=13282.0)
Reloj con DS1307, 18F452 y LCD 16x2 en assembler (http://www.todopic.com.ar/foros/index.php?topic=24756.0)
-
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
-
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.
-
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 (http://www.todopic.com.ar/foros/index.php?topic=13282.0)
Reloj con DS1307, 18F452 y LCD 16x2 en assembler (http://www.todopic.com.ar/foros/index.php?topic=24756.0)
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
-
¿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
-
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.
-
¿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.
-
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.
-
¿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.
-
¿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
-
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!!
-
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.
-
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.
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...
@ 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 (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