TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: Noelillo en 25 de Enero de 2015, 20:42:00
-
Estoy con un proyecto que utilizo el DS1307, a los pocos minutos (5min o 1minu) todos los dígitos minutos,seg,horas , pasan a valer 48 (48:48:48). Comienza poco a poco... Me explico: cuando esta contando por ejemplo 1:20:45 pasa, en una decimas de segundo a 48:48:48 y en otras decimas de segundo a 1:20:50... hasta que al final se queda en 48:48:48.
He utilizado el ds1307 en otros proyectos y siempre me pasa algo. en un riego automatico que lo utilice, al pasar los días veía que todos los valores eran FF:FF:FF. y dejaba de funcionar...
Esto le pasa a alguien más ???
-
No lo he tenido que usar en aplicación práctica, pero en pruebas lo he estado controlando varios días e iba bien, incluso al ponerlo en marcha después de varias semanas me ha funcionado correctamente.
-
Utilizas interrupciones?
Estoy dándole vueltas y a ver si otro circuito conectado a i2c me provoca este problema...
Cada vez q tengo una idea con un reloj, me tiritan las piernas.
-
Siempre utilizo interrupciones.
-
Noelillo,
Podrías subir tu codigo y tu esquemático para echarles un vistazo?
Saludos,
Elreypic.
-
Hola buenas..
Perdonar quizas no sea el hilo donde deberia de preguntar esto pero puede decirme alguien como pasar el codigo bcd que saca el ds1307 ,,ds3231 etc a decimal??? uso proton y no tengo ni idea como separar el bcd de 8 bits en decimal..Graciasss
-
Hola buenas..
Perdonar quizas no sea el hilo donde deberia de preguntar esto pero puede decirme alguien como pasar el codigo bcd que saca el ds1307 ,,ds3231 etc a decimal??? uso proton y no tengo ni idea como separar el bcd de 8 bits en decimal..Graciasss
No entiendo por que deseas pasar BCD a decimal ya que te lo esta claramente dando en decimal!
Utiliza un BCD packed ( es decir 2 numeros BCD en un byte)
el nibble alto (b7:b4) seria tu decenas y tu nibble bajo (b3:b0) tus unidades
Ejemplo:
Si te devuelve en la parte de segundos algo asi:
0x45 o en binario : 0100 0101
Serian 4 decenas y 5 unidades, lo cual es 45 en decimal
Tenes una conversion directa, lo cual lo hace mucho mas facil para mostrarlo en un LCD, sin necesidad de pasarlo a BCD o utilizar otro artilugio.
-
DOGFLU66:
Yo en Proton no he sido capaz de hacer funcionar una INTERRUPCION.
Los programillas que hago utilizo siempre o casi siempre algo asi:
Inicio:
Gosub Teclado
GosuB Pantalla
Gosub Reloj
Goto inicio
Meto un interrupción y cuando se produce se bloquea.
Puedes poner un ejemplo con interrupión con el ds1307?
ElReyPic:
He cambiado el DS1307 por otro nuevo, lo estoy probando en estos momento y va bien...
Kvizpin:
Quieres hacer un reloj en 7segmentos?
-
No creo que sirva de mucho un ejemplo para el uso de interrupciones porque no uso el mismo lenguaje.
La precaución que hay que tener cuando se utilizan las interrupciones son dos: si se utiliza I2C por software hay que deshabilitar las interrupciones al principo de la subrutina o función de control del I2C y activar al salir, y si se usa I2C por hard (modulo I2C) no seria necesario.
Y a nivel de hard (diseño) cuando se usa I2C y uno de los dispositivos o todos tienen los pin programables, se insertan resistencias limitadoras en el bus del dispositivo en los pin multifunción, esto evita que durante las pruebas o incluso durante el arranque se produzcan lucha de niveles y termine el dispositivo más débil estropeándose.
Normalmente no se le da importancia en los foros al diseño del hardware, pero el hardware es la piedra angular de los proyectos y no es nada fácil, hay que distinguir la diferencia del hardware de libro y del real.
-
Yo lo tengo puesto con dos resistencias de 4k7 a +5vcc el los dos pines SCL y SDA.
Están conectados, el DS1307, tres memorias 24lc256 y un pcf8574p.
-
Usas la configuración de libro.
-
Hay otra manera de hacerlo???
-
.
.
.
Y a nivel de hard (diseño) cuando se usa I2C y uno de los dispositivos o todos tienen los pin programables, se insertan resistencias limitadoras en el bus del dispositivo en los pin multifunción, esto evita que durante las pruebas o incluso durante el arranque se produzcan lucha de niveles y termine el dispositivo más débil estropeándose.
.
.
.
-
Muy bien... 4k7 son adecuadas para q no se rompan los circuitillos..
-
Las resistencias de 4K7 que indicas son resistencias de polarización del bus a positivo, porque los modulos que se conectan al bus I2C en teoria no pueden suministrar positivo, solo suministran negativo (estado bajo) y si algo no da positivo al bus este no puede funcionar. Los pin de los dispositivos I2C solo pueden trabajar generando estado bajo y el otro en espera como entrada (alta impedancia).
Las resistencia de las que hago mención son resistencias limitadora (nada que ver con resistencias de polarización), estas resistencias son de bajo valor y van en serie con el bus.
Te recomiendo que revises el funcionamiento del I2C, los pin I2C de estos dispositivos son tipo colector abierto, por lo que no pueden generar positivo, solo estado bajo o masa.
Recomiendo que leas sobre:
Resistencias de polarización (Pull-Up, Pull-Down).
Resistencias limitadoras.
Bus tipo colector abierto.
Bus I2C (hardware).
-
A mi pasaba algo similar pero yo tenia el DS1307 en un modulo que fabriqué y lo insertaba en mi protoboard, soy descuidado y a veces lo extraje con la alimentacion encendida, igual me pasó cuando lo transportaba, supongo que la vibracion movia la bateria que tenia incluida, pasaba exactamente igual, solo mostraba 48:48:48, otro problema que me dio fué que se quedaba en una hora fija y no pasaba de ahi..
-
Hola a todos por aquí! Siniestro, Quería saber si pudiste solucionar el tema de que se detiene en una hs fija el reloj? Ami me pasa lo mismo con un reloj con temperatura y fecha que hice con un DS1307. Si bien lo tengo funcionando, algunas veces se queda bloqueado en una hs y no se mueve hasta que actualizo la hs nuevamente.
Alguien sabe que podría ser? Ya revise la batería, cristal, masa. Y esta todo bien!
Saludos!
-
Hola a todos por aquí! Siniestro, Quería saber si pudiste solucionar el tema de que se detiene en una hs fija el reloj? Ami me pasa lo mismo con un reloj con temperatura y fecha que hice con un DS1307. Si bien lo tengo funcionando, algunas veces se queda bloqueado en una hs y no se mueve hasta que actualizo la hs nuevamente.
Alguien sabe que podría ser? Ya revise la batería, cristal, masa. Y esta todo bien!
Saludos!
Definitivamente el un error de programacion
-
Hice otro reloj y esté lo deje conectado y funciono de puta madre 2 años y ahora a que no sabéis que número pone?
48:48:48 tanto en las horas como fecha... Es cojonudo el DS. Tienes un reloj cada 2 años por 3€. No está mal, no?
-
Pues ya no falló, llegué a pensar que era problemas con la alimentación, como en el protoboard, usando pilas, los cablecitos se movian mucho y quizá eso alteraba algo. .