Autor Tema: Maldito DS1307  (Leído 3139 veces)

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

Desconectado juanelete

  • PIC12
  • **
  • Mensajes: 74
Maldito DS1307
« 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

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).  Giño

Saludos y muchas cervezas.  Sonrisa Gigante

Desconectado EARC

  • Colaborador
  • PIC10
  • *****
  • Mensajes: 35
RE: Maldito DS1307
« Respuesta #1 en: 04 de Marzo de 2006, 10:03:00 »
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();
}

Desconectado juanelete

  • PIC12
  • **
  • Mensajes: 74
RE: Maldito DS1307
« Respuesta #2 en: 04 de Marzo de 2006, 10:33:00 »
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 Sonrisa Gigante

Desconectado juanelete

  • PIC12
  • **
  • Mensajes: 74
RE: Maldito DS1307
« Respuesta #3 en: 04 de Marzo de 2006, 15:25:00 »
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.  loco

Hay alguien que sepa como poner esto en marcha... ?

Saludos Sonrisa Gigante

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Maldito DS1307
« Respuesta #4 en: 04 de Marzo de 2006, 16:02:00 »
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!

Desconectado juanelete

  • PIC12
  • **
  • Mensajes: 74
RE: Maldito DS1307
« Respuesta #5 en: 04 de Marzo de 2006, 18:36:00 »
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

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Maldito DS1307
« Respuesta #6 en: 04 de Marzo de 2006, 19:19:00 »
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.

Desconectado juanelete

  • PIC12
  • **
  • Mensajes: 74
RE: Maldito DS1307
« Respuesta #7 en: 05 de Marzo de 2006, 05:54:00 »
Hola

Esta mañana leo mi anterior post y tu contestacion y pienso...

Como es posible que yo anoche escribiera ese disparate,...  Flash Payaso

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

Pues tienes razon 1000 KHz = 1 MHz  Por lo tanto mi cristal es de 3.276,8 KHz. y no vale.  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 ?   loco


Saludos  Sonrisa Gigante

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
RE: Maldito DS1307
« Respuesta #8 en: 05 de Marzo de 2006, 07:24:00 »
Si, es correcto, los americanos utilizan el punto para separar los decimales, y la coma para separar los miles.

Un saludo.
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado lovando

  • PIC16
  • ***
  • Mensajes: 193
RE: Maldito DS1307
« Respuesta #9 en: 05 de Marzo de 2006, 12:13:00 »
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???

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Maldito DS1307
« Respuesta #10 en: 05 de Marzo de 2006, 19:24:00 »
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