Autor Tema: Desilucion o mal funcionamiento con el DS1302  (Leído 4547 veces)

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

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Desilucion o mal funcionamiento con el DS1302
« en: 04 de Junio de 2007, 19:31:07 »
Wenas a todos.
Lo q sucede esq probando con el DS1302 usando el ejemplo de Vzsener ((Y)) sucede q al dejarlo prendido dia y medio se ha retrasado 6 segundos!! 6!!  :shock:  Vamos q tanto se habla de este integrado para q alfinal solo sea tiempo real por unas horas ?? :? Bueno espero equivocarme y q el problema este en mi codigo (xq lo modifiq) o en las conexiones o en lo q sea. Espero puedan ayudarme...

Haber por partes, primero este es el codigo q llevo echo:
Código: [Seleccionar]
#include <18F2550.h>            //pic a utilizar         
#use delay(CLOCK=12000000)         //Fosc=4Mhz
#fuses HS,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP,NOWDT,NOVREGEN//,NOMCLR   //comandos para el programador
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) //arg.1=velocidad, arg.2=trasmitir, arg.3=recibir.
#define RTC_SCLK PIN_C1            //A  definimos pin's...
#define RTC_IO   PIN_C2
#define RTC_RST  PIN_C0            //...de conexion de la rtc ds1302
#include <ds1302.c>               //libreria de rtc ds1302
#include <lcd_F2550.c>                //libreria de lcd

///VARIABLES GLOBALES
byte day,mth,year,dow,hour,min,sec;   //variabes para ds1302
byte menu=0,flag=0,var=2;         //variables para menu CONFigurar

///DEFINICION DE FUNCIONES   
void configurar(void);
void horas(void);               
void minutos(void);
void dia(void);
void mes(void);
void anio(void);
void beep(void);

///LLAMADA FUNCION INTERRUPCION
#INT_TIMER0
void interrupcion()
{output_high(pin_b5);
   if(flag>var){      //¿ya es 130ms aprox?
      var--;         //SI -> decremento var...
      if(var==0)
         var=2;      //...ajuste fino de 130ms aprox
      flag=0;         //reset flag para contar 130ms aprox
      rtc_get_date(day,mth,year,dow);      //coge dia,mes,año
         rtc_get_time(hour,min,sec );      //coge hora,minuto,segundo
      printf(lcd_putc,"\fFECHA: %02u/%02u/%02u\nHORA: %02u:%02u:%02u",day,mth,year,hour,min,sec);   //lcd
      printf("\fFECHA: %02u/%02u/%02u\nHORA: %02u:%02u:%02u",day,mth,year,hour,min,sec);   //rs232
      }
     
   set_timer0(0);      //reset TMR0
   flag++;            //incremento variable flag
}

///PROGRAMA
void main(void){
   enable_interrupts(INT_TIMER0);            //interrupcion TIMER0 activada
   setup_timer_0(RTCC_8_BIT|RTCC_INTERNAL|RTCC_DIV_256);
   //setup_counters(RTCC_INTERNAL,RTCC_DIV_256);   //CONFiguracion interrupcion TMR0
   set_timer0(0);                        //carga TMR0
   
   lcd_init();          //inicializa lcd
   rtc_init();          //inicializa rtc
   
   rtc_set_datetime(day,mth,year,dow,0,0);
   enable_interrupts(GLOBAL);               //activadas interrupciones
}

Si, lo modifiq bastante pero solo va directamente al timer0 sin ningun menu ni nada (disculpa Vzsener xP). AH! y cambie el cristal de 4mhz por uno de 12, no creo q eso sea el problema yaq el DS1302 tiene su propio cristal pero igual les informo x)

Ahora, si sirve de algo aqui les dejo una imagen d cmo tengo todo y las conexiones y eso:


Si necesitan algun tipo mas de info pueden pedirmelo. Porfavor esq esto si lo necesito urgente, pense q con el DS1302 ya se arreglaba mi problema del tiempo real pero como ven no es asi=(  Espero q alguien pueda ayudarme. Gracias d antemano  :D


salu2 8) 8)

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Desilucion o mal funcionamiento con el DS1302
« Respuesta #1 en: 04 de Junio de 2007, 19:47:32 »
Una pregunta tonta. ¿Se supone que al DS1302 le has puesto un cristal de 32.768kHz?.


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 jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Desilucion o mal funcionamiento con el DS1302
« Respuesta #2 en: 04 de Junio de 2007, 20:08:49 »
Una pregunta tonta. ¿Se supone que al DS1302 le has puesto un cristal de 32.768kHz?.
Claro claro, ahi en la imagen sale :D :D

¿Alguna hipotesis?   :(


salu2 8) 8)

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Desilucion o mal funcionamiento con el DS1302
« Respuesta #3 en: 05 de Junio de 2007, 05:24:06 »
Yo no le echaría la culpa al integrado, que lo único que hace es contar pulsos y operar con ellos. Eso no puede fallar.
Creo que el problema estará en el cristal, o bien está defectuoso, o bien necesita de condensadores, buena masa y lo que diga la datasheet para oscilar adecuadamente.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Desilucion o mal funcionamiento con el DS1302
« Respuesta #4 en: 05 de Junio de 2007, 05:53:12 »
La primera prueba que hice con el DS1307 tiré el cristal de 32.768Khz de cualquier forma sobre el PCB a mas de dos centímetros del integrado, el RTC era de todo menos un RTC. Adelantaba o atrasaba a su antojo, y si ponía el dedo sobre el cristal llegaba a detenerse ...

La segunda lo monté según las especificaciones del Datasheet, con su distancia mínima y sus planos de masa alrededor del cilindro y las patillas y de golpe se convirtió en un RTC de verdad. Pasan las semanas y ni un solo segundo de diferencia.

¿Por qué será?  :D :D :D
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Desilucion o mal funcionamiento con el DS1302
« Respuesta #5 en: 05 de Junio de 2007, 10:21:32 »
Coincido con RedPic. Si no se respetan las especificaciones de la datasheet, se pueden estar "perdiendo" pulsos de clock o oscilando "mal", por lo que contara el tiempo como la mona...:) :)

Saludos!
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Desilucion o mal funcionamiento con el DS1302
« Respuesta #6 en: 05 de Junio de 2007, 15:21:35 »
Creo q tienes razon sobre eso RedPic pero esq no se mucho de ingles (nada) y lo unico q e sacado del datasheet son las conxeciones y eso, pero sobre distancias y moderaciones pues nada no e podido leer porq no entiendo.

Nose, podrias decirme q cosa importante sabes sobre esto? algo q tenga q hacer y no haya echo por no leer el datahseet ??  :?


salu2, gracias  8) 8)

.........Leyendo n lo q pueda el datasheet.... :-)

Desconectado fastyx2

  • PIC16
  • ***
  • Mensajes: 109
Re: Desilucion o mal funcionamiento con el DS1302
« Respuesta #7 en: 05 de Junio de 2007, 15:49:06 »
no compres cristales tipo perfil bajo , busca los cilindricos alargados tienen mas o menos 4 mm de diametro yy un centimetro de largo.

como guia practica, si vas a hacer un pcb lo primero que tenes que ubicar es el integrado y a no mas de 1 o 2 cm de las pata el cristal , colocalo acostado
y hacele una cama de masa como si lo fueras a acostar . lo que yo hice fue dejar 2 conexiones en el pcb y por encima le coloque un pedazo de chapita pegada al pertinax y conectada a masa.

Como consejo : no es buena idea montar un rtc en el protoboard con los cables yendo y viniendo por todos lados.

quedate tranquilo que el ds1302 es un fierrito!

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Desilucion o mal funcionamiento con el DS1302
« Respuesta #8 en: 05 de Junio de 2007, 15:59:16 »
Exacto, es tal como te ha dicho el amigo fastyx2:

Debes hacer un cudradito de masa mas o menos del tamaño del crital, mejor el cilíndrico y acostarlo sobre él dándole una puntada de soldadura entre el chasis del cristal y tu masa. Si no quieres ponerlo por la cara de componentes puedes ponerlo por la de las pistas, acostado y con los pines soldados en paralelo sobre las pistas. Los pines del cristal ponlos lo mas cerca posible de los pines del DS1302. Y ya verás como si es exacto.  :mrgreen:

Así es como te lo recomienda el datasheet:



El LOCAL GROUND PLANE es el plano de masa, el área delimitada por la linea discontínua, que como puedes ver rodea al cristal, se mete por debajo del DS y lo conecta al GND del mismo, dejando los dos pines del oscilador del DS dentro del plano de masa, como si fuesen dos islas conectadas a las patas del cristal.

La nota te dice que si no pones el plano de masa por debajo de la carcasa del DS conectando el GND con dicho plano NO pongas ninguna señal en el área rayada para evitar interferencias en el oscilador (traducción libre).



 
« Última modificación: 05 de Junio de 2007, 16:14:45 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Desilucion o mal funcionamiento con el DS1302
« Respuesta #9 en: 05 de Junio de 2007, 18:45:12 »
Ahora entiendo como debe ir, gracias, pero no tengo una placa para hacer eso  :( y bueno con ayuda d un amigo e echo algo parecido por asi decirlo y quisiera saber si esto funcionara. Bien, 1ro le puse un socket al DS1302 y a las patas 2 y 3 de ese socket le puse el cristal de 32.768, luego a los 6 sobrantes pines de ese socket del puse otro socket, y ese va conectado al protoboar.

Una image vale mas q mil palabras:


Espero se entienda y q funcione  :mrgreen: ya lo dejare probando.


salu2 y Gracias nuevamnt  8) 8)

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Desilucion o mal funcionamiento con el DS1302
« Respuesta #10 en: 05 de Junio de 2007, 18:52:25 »
Puedes probar a soldar un cable a la carcasa metálica del cristal y masa, para aislar el cristal.

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 Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Desilucion o mal funcionamiento con el DS1302
« Respuesta #11 en: 06 de Junio de 2007, 01:40:10 »
Sí, lo ideal es lo que te decían antes; poner el cristal "acostado" sobre un plano de masa y soldarlo a la misma con un hilo que le rodee.

Si no te fuera bien con la electrónica, seguro que te podrías ganar la vida con el Paint; ¡menudo dibujo!

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Desilucion o mal funcionamiento con el DS1302
« Respuesta #12 en: 07 de Junio de 2007, 18:28:47 »
Bueno ahora estoy probando tal y cmo lo hice en el dibujo y se a retrasado 3 segundos despues de 18 horas u.u'  Creo q el mayor problema es, como bien dicen, el trabajar esto en el protoboar. Asiq me despreocupare y supongo q en un PCB todo ira de maravilla  :mrgreen:

Aun asi esperare aver q tanto puede retrasarse en estas pruebas q voy haciendo.

Gracias a todos por su ayuda!  :-/  Ya les comentare cmo me fue  :lol:


salu2 8) 8) 8) 8)

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Desilucion o mal funcionamiento con el DS1302
« Respuesta #13 en: 07 de Junio de 2007, 19:28:13 »
Felicitaciones! :)

3 segundos en 18 horas son 3 segundos en 18*60*60 segundos, o sea 3/64800 = 0.00004629.... solo un 0.004.6%.

Muy bueno!
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert


 

anything