TODOPIC

Simuladores, editores de PCB, etc => Simuladores de circuitos => Proteus ISIS => Mensaje iniciado por: jeremylf en 10 de Enero de 2008, 20:29:27

Título: Problema con el DS1307 simulado en Proteus 7.2
Publicado por: jeremylf 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)
Título: Re: Problema con el DS1307 simulado en Proteus 7.2
Publicado por: Rulo 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  :-)
Título: Re: Problema con el DS1307 simulado en Proteus 7.2
Publicado por: jeremylf en 10 de Enero de 2008, 20:59:00
Hola Rulo.

Esta conectado por medio de un led. Tambien lo probe como simplemente es:
(http://img132.imageshack.us/img132/6210/dibujocr8.th.jpg)
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.
Título: Re: Problema con el DS1307 simulado en Proteus 7.2
Publicado por: jeremylf 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)