Ja,das mit dem Repeated start ist korrekt sonst gibt es jede 2-3. Runde Müll.
Aber wofür bei der Abfrage am Ende nochmal den Pointer auf null setzen ?
Diese Zeilen am Ende hier kannst du weglassen.
Code:
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cstop
Und bei der Zeile "I2crbyte _year , Ack" änderst du das "Ack" in "Nack" (No Ack wie gefordert) dann klappts besser.
Im Ganzen sieht die Unterroutine dann so aus........
Code:
Getdatetime:
I2cstart
I2cwbyte Rtcw
I2cwbyte 0
I2cstart
I2cwbyte Rtcr
I2crbyte _sec , Ack
I2crbyte _min , Ack
I2crbyte _hour , Ack
I2crbyte Weekday , Ack
I2crbyte _day , Ack
I2crbyte _month , Ack
I2crbyte _year , Nack
I2cstop
_sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
_day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
Return
Diese Routine findet man so fast überall im Web.
Lesezeichen