Autor Tema: DS1302 ¿no sabía yo que las 22:73 existian?  (Leído 2359 veces)

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

Desconectado Sepumail

  • PIC10
  • *
  • Mensajes: 2
DS1302 ¿no sabía yo que las 22:73 existian?
« en: 08 de Mayo de 2005, 06:50:00 »
SonrisaTengo un ds1302 y un pic16f876, estoy usando la libreria que trae el compilador CCS y un oscilador para el reloj de 32.768 khz y otro para el pic de 4 Mhz.
mi configuracion es:

#define RTC_SCLK PIN_C5
#define RTC_IO   PIN_C7
#define RTC_RST  PIN_C2

Mi problema es que lo pongo a correr el pic y me ocurre esta secuencia en los seg y min.

Secuencia SEGUNDOS:

[0,9]         //0 y 9 entran en el intervalo
[16,25]
[32,41]
[48,57]
[64,73]
[80,89]
.........................................
main {
byte day, mth, year, dow,hour, min, sec ;

while(1) {
delay(250);

       rtc_get_date( day, mth, year, dow);
       rtc_get_time( hour, min, sec );

       lcd_gotoxy(1,2);
       printf(lcd_putc, "%02u:", hour);
       lcd_gotoxy(13,2);
       printf(lcd_putc, "%02u:", min);
       lcd_gotoxy(9,2);
       printf(lcd_putc, "%02u", sec);
             }
}
_________________________________
Gracias...!!!

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: DS1302 ¿no sabía yo que las 22:73 existian?
« Respuesta #1 en: 08 de Mayo de 2005, 08:01:00 »
Buenas.

No he trabajado nunca con este circuito pero supongo que su funcionamiento es similar al PCF8583.

Estos relojes suelen tener uno o varios registros de test que deben tener un valor específico para poder funcionar. A éstos se accede por el bus I2C como un registro normal y los debes cargar antes de nada por que sino el circuito se comportará de forma extraña. Son utilizados en fábrica para probar su funcionalidad antes de ser empaquetados y vendidos.

Otra cosa que debes tener en cuenta es que cuando programes la hora, lo debes hacer con una hora/fecha correcta, es decir, si cargas el valor de la fecha como 30 / febrero, el circuito no funcionará correctamente, ya que no hace comprobación de la fecha que le estas introduciendo.

Te sugiero que hagas una rutina de configuración inicial que carge los valores correctamente en los registros de control / test / etc.. y luego carge una hora / fecha válida como por ejemplo 1 / enero / 2005 / 0:00

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
RE: DS1302 ¿no sabía yo que las 22:73 existian?
« Respuesta #2 en: 08 de Mayo de 2005, 08:53:00 »
tienes un problema de conversion de tipos, los datos te los estan mandando en bcd, y tu los procesas como binario normal...

es decir, y sino me equivoco... para leer debes obtener el dato, pasarlo de bcd a binario, y entonces sacarlo por pantalla.

eso mismo me pasaba a mi con el ds1307.

saludos!

Desconectado pikman

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 682
RE: DS1302 ¿no sabía yo que las 22:73 existian?
« Respuesta #3 en: 08 de Mayo de 2005, 18:55:00 »
Esta bien, el dato viene expresado en BCD, casi todos los RTC lo hacen asi, aunque algunos antiguos permitian seleccionarlo.


lcd_gotoxy(1,2);
printf(lcd_putc, "%02x:", hour);
lcd_gotoxy(13,2);
printf(lcd_putc, "%02x:", min);
lcd_gotoxy(9,2);
printf(lcd_putc, "%02x", sec);

Fijate que en vez de u pones x para que envie al LCD en Hexadecimal, y listo , ahora si vas a usar la hora para otra aplicacion, deberas convertirla en binario antes, y a BCD en caso de querer programar el reloj.

espero que te sirva.

saludos

ARIEL
saludos
PikMan


 

anything