TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: juanelete en 04 de Marzo de 2006, 07:49:00
-
Hola a tod@s:
Estoy intentando hacer funcionar un RTC, concretamente el DS1307 de Dallas Semiconductor. He seguido las instrucciones del Data Sheet y algunos ejemplos y consejos que he visto por aqui en los foros, pero.... ![Llorica Llorica]()
He conseguido grabar y leer la fecha y la hora correctamente, pero parece que no marcha, aunque realmente lo que sucede es que va muy lento, tarda mas de 40 seg. en pasar de un segundo a otro.
He configurado el pin sqw/out para que genere una onda cuadrada de 1Hz, pero la he conectado a un led, y este permanece siempre encendido.
Alguien podria hecharme una mano... (o las dos). 
Saludos y muchas cervezas. 
-
tRANQUILO NO PASA NADA, LO MAS IMPORTANTE ES QUE TENGAS EL CIRCUITO BIEN CONECTADO, ESEGURATE DE TENER LAS PULL-UP EN LAS LINEAS scL Y sda,
Estas funciones las he creado yo porque la que trae el compilador CCS no funciona.
tienes que declarar las variables seg,min,hor,dia_s,date,mes,ano,control
void escribe_ds1307 (seg,min,hor,dia_s,date,mes,ano,control)
{
i2c_start();
i2c_write(0xd0);
i2c_write(0);
i2c_write(seg);
i2c_write(min);
i2c_write(hor);
i2c_write(dia_s);
i2c_write(date);
i2c_write(mes);
i2c_write(ano);
i2c_write(control);
i2c_stop();
}
void lee_ds1307(){
i2c_start();
i2c_write(0xd0);
i2c_write(0);
i2c_stop();
i2c_start();
i2c_write(0xd1);
seg=i2c_read();
min=i2c_read();
hor=i2c_read();
dia_s=i2c_read();
date=i2c_read();
mes=i2c_read();
ano=i2c_read();
control=i2c_read(0);
i2c_stop();
}
-
Hola EARC
El tema I2C me funciona bien, consigo grabar una fecha y hora determinada y luego la puedo leer y mostrarla en en LCD.
El problema es que el reloj va muy lento, tarda casi 40 segundos en contar un solo segundo.
He puesto un led (ya me funciona) en la salida de la onda cuadrada ajustada a 1Hz (1 ciclo por segundo) y efectivamente parpadea cada 40 segundos.
Como curiosidad deciros que cuando toco el cristal y lo apreto un poco, va mas rapido mientras lo mantengo apretado, volviendo al ritmo lento en cuanto lo suelto.
He probado con varios cristales, con dos DS1307 y he montado varias placas, y todas las veces hace lo mismo.
Saludos
-
Hola de nuevo:
Segun el DataSheet tengo que ponerle al DS1307 un cristal se 32.768 Hz.
En los cristales que estoy utilizando pone 3.2768 Mhz, ... Creo que es lo mismo ¿o no...?.
Perdonar por lo simple de la cuestion, pero es que estoy paranoico con el dichoso relojito. 
Hay alguien que sepa como poner esto en marcha... ?
Saludos
-
Nooo...
el que te pide es de 32.768kHz... (32.768 Hz en español de España)
Tú le estás poniendo uno de MegaHertz!
-
Hola
Ya pero... si
1000 Hz = 1 KHz
10 KHz = 1 MHz
entonces mi cristal que pone 3.2768 Mhz sera igual a 32.768 KHz (entendiendo el "." como separador de decimales).
Por lo tanto si es la frecuencia correcta. eso creo...
Otra cosa:
He vuelto a leer el DtaSheet y he visto el siguiente parrafo:
"X1,X2 - Connections for a standard 32.768 KHz quartz crystal. The internal oscillator circuitry is designed for operation with a crystal having a specified load capacitance (CL) of 12.5 pF."
Mi ingles no es muy bueno pero dice algo asi como que el cristal tiene que tener una capacitancia de 12.5 pF.
Que significa esto realmente?
Saludos
-
Yo siempre supe y basé todos mis conocimientos en que 1000kHz = 1MHz.
¿Porqué dices que 10kHz son 1MHz? ¿Es alguna nomenclatura de marcado para el número de serie de cristales o algo así?
Y estás en lo correcto sobre la capacitancia del cristal, aunque dudo que ese sea el problema de tu aplicación.
-
Hola
Esta mañana leo mi anterior post y tu contestacion y pienso...
Como es posible que yo anoche escribiera ese disparate,...

Tiene que ser la falta de dormir, los nervios, la paranoia, la desesperacion, la estupidez... que se yo... un poco de todo.

Pues tienes razon 1000 KHz = 1 MHz Por lo tanto mi cristal es de 3.276,8 KHz. y no vale. ![Llorica Llorica]()
Pero ahora me asalta otra duda:
En el DataSheet pone 32.768 KHz y en otra documentacion, y en el libro "Microcontrolador PIC16F84" pone 32.768 Hz.
Yo entiendo que en el DataSheet se refieren a 32,768 KHz (notese la "," ).
Osea que el cristal tiene que ser de 32.768 Hz (Treinta y dos mil setecientos sesenta y ocho Hz).
Es esto correcto ? 
Saludos
-
Si, es correcto, los americanos utilizan el punto para separar los decimales, y la coma para separar los miles.
Un saludo.
-
Escrito originalmente por jfh900
Si, es correcto, los americanos utilizan el punto para separar los decimales, y la coma para separar los miles.
Un saludo.
Disculpa, a qué americanos te refieres???
-
Jaja los americanos.
Y sí, estás en lo correcto. Treinta y dos mil setecientos sesenta y ocho Hertz.
Sí, en América usamos esa notación.
América
una décima - 0.1
una centésima - 0.01
una milésima - 0.001
mil - 1,000
un millón - 1,000,000
un billón - México: 1,000,000,000,000 EUA: 1,000,000,000
mil quinientos pesos con 15 centavos - $1,500.15
Europa
una décima - 0,1
una centésima - 0,01
una milésima - 0,001
mil - 1.000
un millón - 1.000.000
un billón - ???
mil quinientos pesos con 15 centavos - $1.500,15