Autor Tema: Reloj con DS1629  (Leído 1816 veces)

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

Desconectado Kamus

  • PIC10
  • *
  • Mensajes: 1
Reloj con DS1629
« en: 21 de Junio de 2007, 20:19:14 »
Hola a todos, tengo un problema con un reloj de tiempo real utilizando el DS1629, es la primera vez que utilizo I2C y quiza el codigo tenga problemas, segun yo todo esta bien, pero quiza este haciendo algo mal al escribir y leer el DS1629. Como es la primera vez que hago esto escribo valores arbitrarios y despues los leo para comprobar que estoy escribiendo, pero recibo ceros en todas las variables, aqui les voy a dejar el codigo completo. Espero me puedan ayudar, cualquier duda aqui estoy para platicar, gracias  (y).

DEFINE OSC 8
DEFINE NO_CLRWDT 1
DEFINE HSER_BAUD 9600
DEFINE I2C_SCLOUT   1   

' NotA: USAR RESISTENCIAS DE 10K DE pull-up  EN LAS LINEAS SDA Y SCL

RTCSec      VAR BYTE   ' Segundos
RTCMin      VAR BYTE    ' Minutos
RTCHour     VAR BYTE   ' Horas
RTCWDay     VAR BYTE   ' Dia de la semana
RTCDay      VAR BYTE   ' Dia correspondiente del mes
RTCMonth    VAR BYTE   ' mes
RTCYear     VAR BYTE   ' año
SDA         VAR PORTC.4 ' pin #23 para protocolo I2C en el PIC16F877
SCL         VAR PORTC.3 ' pin #18 para reloj del protocolo I2C en el PIC16F877

TRISC   =   0
PAUSE 1000 ' //ESPERAMOS A ESTABILIZAR TODO!!

Inicio:
    ' CARGAMOS EL DSXXXX CON ESTOS VALORES DE INICIO:MARTES 15:30:00 27 DE DIC DE 2004
    I2CWRITE SDA,SCL,$9E,$C0,$00,[$01,$03,$05,$07,$09,$02,$04]
                            '     Seg Min Hor DSe DMe Mes Año
    PAUSE 10    ' En la hoja de datos recomiendan poner un pause de 10 ms
Read_1629:

                        ' LEEMOS SEGUNDOS,MINUTOS,HORAS,DSEMANA,DMES,    MES   ,AÑO
    I2CREAD SDA,SCL,$9F,$C0,$00,[RTCSec,RTCMin,RTCHour,RTCWDay,RTCDay,RTCMonth,RTCYear] 
'Envio los datos leidos a la hiperterminal pero recibo puro 0
    HSEROUT ["Año",#RTCYear,10,13,"Mes",#RTCMonth,10,13,"Dia",#RTCDay,10,13,"Dia de la semana",#RTCWday,10,13]
    HSEROUT [#RTCHour,":"]
    HSEROUT [#RTCMin,":"]
    HSEROUT [#RTCSec,10,13]
    PAUSE 2000  ' Un retardo para ver los datos en la hiperterminal
    GOTO Read_1629   


 

anything