Autor Tema: Problema con el DS1307 simulado en Proteus 7.2  (Leído 4861 veces)

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

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Problema con el DS1307 simulado en Proteus 7.2
« en: 10 de Enero de 2008, 20:29:27 »
Hola a todos, soy nuevo en este programa y seguro ess es la causa de mi problema  :D

Resulta q tengo un simple codigo echo en CCS con el PIC18F2550 para conectar, via I2C, con el RTC DS1307 y pues en el proteus todo funciona.. segundos, hora y eso. Pero mi problema esq yo le digo (por codgio) q active su pin SQW a 1Mhz y no me vota nada  :?

Les dejo aqui todo en el adjuntado.
Espero puedan ayudarme.

Gracias.
salu2 8)

PD: En la vida real si funciona perfectamente x)
« Última modificación: 10 de Enero de 2008, 20:55:30 por jeremylf »

Desconectado Rulo

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 168
Re: Problema con el DS1307 simulado en Proteus 7.2
« Respuesta #1 en: 10 de Enero de 2008, 20:54:34 »


             en el diagrama debes conectar a SQW a Vcc con una resistencia Pullup igual que SDA y SCL.


                       y la salida solo podra ser a 1Hz, 4Khz, 8Khz o 32Khz.


     saludos  :-)

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Problema con el DS1307 simulado en Proteus 7.2
« Respuesta #2 en: 10 de Enero de 2008, 20:59:00 »
Hola Rulo.

Esta conectado por medio de un led. Tambien lo probe como simplemente es:

Pero tampoco funciona.


Lo q configurado a 1 Mhz esa salida desde mi programa en c.


Aun asi no funciona, no hay cambio cada 1 segundo en esa salida SQW del DS1307 :?

Gracias.
« Última modificación: 10 de Enero de 2008, 21:05:25 por jeremylf »

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Problema con el DS1307 simulado en Proteus 7.2
« Respuesta #3 en: 11 de Enero de 2008, 01:57:03 »
Ya se q fue!!

Donde inicializo el DS1307, exactamente aqui:
Código: [Seleccionar]
   //DS1307//
   //Habilito el enable del oscilador.
   i2c_start();
   i2c_write(0b11010000);  //Direcion del DS1307, e indico q voy a escribir (ultimo bit [0]).
   i2c_write(0);           //Direcion 0 de la NVRAM para configurar el bit 7 (CH) para habilitar el oscilador.
   i2c_write(0);           //Habilito con un 0 la entrada del oscilador.
   
   //Habilito su SQW/OUT.
   i2c_start();
   i2c_write(0b11010000);  //Direcion del DS1307, e indico q voy a escribir (ultimo bit [0]).
   i2c_write(7);           //Direcion 7 de la NVRAM para configurar el Registro de control y activar el SQW/OUT.
   i2c_write(0b00010000);  //Lo configuro para que bote en su salida SQW una frecuencia de 1 Hz.
   i2c_stop();
   /////////
Donde pongo el enable del oscilador a 0 para q todo funcione, no pongo despues el i2c_stop, almenos poniendo esto ahora si funciona en el proteus. PERO! esto no deberia influir yaq poner un i2c_start (como lo pongo arriba) enves de un i2c_stop es algo comun en los dispositivos i2c, sirve para seguir con otro procedimiento, tal y como yo lo hago (en el mismo datasheet q tienn los de proteus sobre el DS1307 se demuestra bien claro, exactamente en la pagina 7 en la figura: DATA TRANSFER ON 2-WIRE SERIAL BUS Figure 5).

Asiq el error fue de proteus y no mio cmo lo estoy demostrado  :-) yaq, como dije al principio de mi post, todo funciona perfectamente en la vida real  :mrgreen:
Bien, espero q pueda servirle a alguien esto q me a pasado a mi.

Finalmente el codigo en C quedaria asi (solo la parte de incio del DS1307):
Código: [Seleccionar]
   //DS1307//
   //Habilito el enable del oscilador.
   i2c_start();
   i2c_write(0b11010000);  //Direcion del DS1307, e indico q voy a escribir (ultimo bit [0]).
   i2c_write(0);           //Direcion 0 de la NVRAM para configurar el bit 7 (CH) para habilitar el oscilador.
   i2c_write(0);           //Habilito con un 0 la entrada del oscilador.
   
i2c_stop();          //Por no poner esto en el proteus no funcionaba!!! u.u'
   
   //Habilito su SQW/OUT.
   i2c_start();
   i2c_write(0b11010000);  //Direcion del DS1307, e indico q voy a escribir (ultimo bit [0]).
   i2c_write(7);           //Direcion 7 de la NVRAM para configurar el Registro de control y activar el SQW/OUT.
   i2c_write(0b00010000);  //Lo configuro para que bote en su salida SQW una frecuencia de 1 Hz.
   i2c_stop();
   /////////

Gracias igualmente Rulo por la atencion   :)
salu2 8)


 

anything