Autor Tema: ayuda 1307  (Leído 17242 veces)

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

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: ayuda 1307
« Respuesta #90 en: 21 de Febrero de 2009, 21:14:50 »
Gracias por la info Cryn. Sin tus aportes hubiera tardado más en llegar a mi meta. Ahora quisiera vincular esto con alguna variable a medir y guardar en una memoria 24lc. empezaré con este  nuevo desafio. cualquier duda. creo que puedo contar con tu asesoramiento . Muchas gracias  de antemano
Otro saludo amigo.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: ayuda 1307
« Respuesta #91 en: 22 de Febrero de 2009, 12:11:55 »
claro que si ncoliv que estaré acá para algunas dudas en las que pueda ayudarte, y puedes comenzar con ello buscando en el foro, hay mucha info de manejo de memorias i2c, puedes usar a la vez un sensor de temperatura i2c y usas el mismo bus, puedes mostrar la hora y la temperatura en el LCD y guardas la info cada cierto tiempo y después analizas la variación por ejemplo.

Un saludo
.

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: ayuda 1307
« Respuesta #92 en: 22 de Febrero de 2009, 20:21:36 »
Cryn, para la temperatura quiero aprovechar un LM35 y tbien consegui una 24lc256. Estaré investigando en este foro, algo que se adecue a lo que tengo en mente que no se aparta de lo que vos escribiste.
Saludos

Desconectado camigod

  • PIC10
  • *
  • Mensajes: 40
Re: ayuda 1307
« Respuesta #93 en: 07 de Abril de 2009, 00:15:42 »
Hola a todos como estan?

Me paso por aca porque estoy iniciando con el manejo del RTC ds1307, estoy programando en PICC, utilizando la libreria ds1307.c, muy parecida a la posteada en este hilo anteriormente.

Estoy programando un PIC 18F4550 con 4Mhz, y manejando una lcd grafica para la visualizacion, este es el codigo que tengo:
Código: [Seleccionar]
#include <18F4550.h>

#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#include <HDM64GS12.c>
#include <graphics.c>
#include <ds1307.c>


#use STANDARD_IO (A)
int a=0,mes,dia,hor,min,sec;

void main()
{
   char k[8];
   setup_adc_ports(NO_ANALOGS);
   glcd_init(ON);
   ds1307_init();
   glcd_imagen(0);
   ds1307_set_date_time(6,4,9,0,11,30,0);
   delay_ms(500);
   while(1){
      ds1307_get_time(hor,min,sec);
      glcd_fillScreen(OFF);
      sprintf(k, "%d", min); // Convierte variable a cadena de texto, almacena en k
      glcd_text57(1, 1, k, 1, ON);
      sprintf(k, "%d", sec);
      glcd_text57(1, 9, k, 1, ON);
      delay_ms(1000);
   }
}

Como ven inicializo la LCD y el modulo I2C y el programa deberia mostrarme el minuto y los segundos actuales... la SIMULACION en PROTEUS funciona correctamente, pero en el montaje no... aparentemente se bloquea en la sentencia ds1307_init(), 

Los pines son:
SDA = PIN C4
SCL = PIN C5

no se que puedo estar haciendo mal, como ven despues de iniciar los modulos, llamo a una funcion glcd_imagen, que no la posteo pero lo que hace es mostrarme algo en la LCD para verificar que funciona... el problema es:

    SI comentareo la linea ds1307_init, la LCD muestra la imagen, pero si la dejo activa la LCD se queda en blanco... aparentemente el bloqueo esta en esa linea...

Alguien sabe que puede estar ocurriendo?

El ds1307 lo tengo conectado con 2 R de 4,7K como pullups, un cristal de 32Khz y la bateria de 3V, pero pues cualquier sujerencia la agradeceria.

Gracias
Un hombre no muere cuando su corazon deja de latir, un hombre muere, cuando deja de pensar

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: ayuda 1307
« Respuesta #94 en: 07 de Abril de 2009, 12:09:15 »
Mientras se atienda al bus I2C las interrupciones deben estar apagadas.

Si en la simulación va bien, creo que pueda ser quizá un error en las conexiones de los pines, quizá invertiste involuntariamente SCL y SDA o algunos otros, revisa las conexiones.

Quizá la librería tenga algún error, prueba cambiar de librería por la de acá, la de Redpic. (aunque funcionó la simulación, quizá este no sea el problema)

Por último diría que el reloj podría estar dañado, por no ser capaz de responder a las ordenes.

Por ahora es todo lo que se me ocurre que podría ser, si tengo algo más te aviso.

Prueba los cambios y verificaciones y avisas. Un saludo
.

Desconectado camigod

  • PIC10
  • *
  • Mensajes: 40
Re: ayuda 1307
« Respuesta #95 en: 07 de Abril de 2009, 15:20:33 »
Hola a todos, gracias por la respueta Cryn,

Verifique lo que me dijiste y no he encontrado el problema, reemplase el ds1307 por uno nuevo y no paso nada, verifique la conexion y esta bien...

Ahora mi pregunta es:  En el datasheet del 18f4550 aparece que el pin B0 = SDA, y el pin B1 = SCL, cuando configuro la libreria... en los #define SDA... SCL, tengo que poner esos pines?? o si utilizo otros la libreria se encarga de la configuracion??

Intentare utilizar esos pines, para lo cual modificare la libreria de la LCD, pues los maneja para el control de la Graficadora.... y luego comento que paso.

Gracias
Un hombre no muere cuando su corazon deja de latir, un hombre muere, cuando deja de pensar

Desconectado camigod

  • PIC10
  • *
  • Mensajes: 40
Re: ayuda 1307
« Respuesta #96 en: 07 de Abril de 2009, 18:29:40 »
Hola, modifique la libreria de la LCD grafica para dejar el puerto B libre, y montar el RTC en los pines B0 y B1 (sda, y scl) respectivamente.

Ahora a cosa esta mejorando, por lo menos ya se inicializan ambos modulos pero me aparece

85
85

y no se actualiza nunca... leyendo este foro encontre que ncoliv tenia el mismo problema visualizando un 45:85:85 y que no se actualizaba pero no posteo que soluciono el problema :(

Este es el codigo que estoy utilizando:
Código: [Seleccionar]
#include <18F4550.h>

#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#include <HDM64GS12.c>
#include <graphics.c>
#include "2009.c"
#include <ds1307.c>

int a=0,mes,dia,hor,min,sec;

void main()
{
   char k[8];
   setup_adc_ports(NO_ANALOGS);
   glcd_init(ON);
   ds1307_init();
   ds1307_set_date_time(6,4,9,0,11,30,0);  //Inicio la fecla y la hora como 11:30
   glcd_imagen(a);                                    // muestra una imagen que comprueba la funcionalidad de la LCD
   delay_ms(500);
   while(1){
      ds1307_get_time(hor,min,sec);           //Leo hora
      glcd_fillScreen(OFF);                          //Limpio la LCD
      sprintf(k, "%d", min);                         // Convierte variable a cadena de texto, almacena en k
      glcd_text57(1, 1, k, 1, ON);                //muestro minutos
      sprintf(k, "%d", sec);
      glcd_text57(1, 9, k, 1, ON);                //muestro segundos
      delay_ms(1000);
   }
}

Como les dije antes, la simulacion funciona correctamente y ya cambie el ds1307, y ambos me muestran los 85. el pin de la bateria lo tengo a tierra.

Gracias por su ayuda
Un hombre no muere cuando su corazon deja de latir, un hombre muere, cuando deja de pensar

Desconectado camigod

  • PIC10
  • *
  • Mensajes: 40
Re: ayuda 1307
« Respuesta #97 en: 07 de Abril de 2009, 23:21:35 »
Hola, aparentemente los 85 se debian a la bateria, pues la conecte y la lcd muestra la hora que coloco en el programa, pero ahora el problema es que no avanza... se queda hay....

no se cual es la correcta conexion del cristal, y no se si necesita condensadores... pues cuando toko el cristal con los dedos... el tiempo avanza, aunque de a 2 segundos... pero avanza, entonces no se que falta en las conexiones, gracias de antemano.
Un hombre no muere cuando su corazon deja de latir, un hombre muere, cuando deja de pensar

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: ayuda 1307
« Respuesta #98 en: 08 de Abril de 2009, 03:06:08 »
Hola.

En el datasheet del reloj hay una pauta de como hacer el mapa de tierra al cristal, es bueno hacerlo como lo indica. Saludos.
El papel lo aguanta todo

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: ayuda 1307
« Respuesta #99 en: 08 de Abril de 2009, 13:23:48 »
si puedes cambiar los pines de SDA y SCL en la librería que dejó redpic, con defines antes de la inclusión de la librería del RTC, sería así por ejemplo:

#define RTC_SDA  PIN_A5
#define RTC_SCL  PIN_A3
#define USE_INTERRUPTS 1  //esta es de la lib de redpic
#include <ds1307.c>

o si no se puede en tu librería, puedes buscar la linea:
#use i2c(master, sda=RTC_SDA, scl=RTC_SCL) // puede ser que ahí aparezcan pin_b0 y pin_b1
y cambiar por los pines que quieras usar.

El ds1307 solo necesita el cristal, no hace falta condensadores, los lleva internamente, y si hay que tener cuidado con la PCB y seguir las recomendaciones de la hoja de datos. Si lo estas haciendo en protoboard igual con un cable amarralo a tierra.

.

Desconectado camigod

  • PIC10
  • *
  • Mensajes: 40
Re: ayuda 1307
« Respuesta #100 en: 08 de Abril de 2009, 14:26:18 »
Hola, El problema de los pines ya lo solucione, pero no entiendo lo que amarrar el cristal a tierra, podrian esplicarme como hacerlo?.

Gracias
Un hombre no muere cuando su corazon deja de latir, un hombre muere, cuando deja de pensar

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: ayuda 1307
« Respuesta #101 en: 08 de Abril de 2009, 14:55:59 »
hola, ya te respondí en el privado, y una imagen sería más o menos así:
http://www.todopic.com.ar/foros/index.php?topic=13282.msg190756#msg190756

o si puedes ver en una placa base de PC que tenga un cristal así verás a que me refiero con "amarrar" jeje un término que le dí yo, un saludo
.


 

anything