Auch wenn ich jetzt Gefahr laufe zu nerven. Aber da habe ich noch ein kleines Problem.
Ich möchte Bytes in eine RTC (DS1307) schreiben und auch von dieser wieder zurücklesen. Ich habe dazu zwei Unterprogramme geschrieben, die jweils den Bereich von Adresse 00 - 0A beschreibt.
Jetzt habe ich festgestellt, dass imme das letzte Byte fehlerhaft ist. Ich habe nur noch nicht herausgefunden ob es schon falsch in die RTC geschrieben wird, oder falsch ausgelesen.
Hier mal die entsprechenden Programme dazu:
Code:' **************************************** ' * DS1307 Adr $00 - $09 schreiben * ' **************************************** Sub DS1307Write() I2cstart 'I²C-Bus Startsignal ausgeben I2cwbyte DS1307W 'DS1307 in Schreibmodus setzen I2cwbyte 0 'Startadresse $0 in DS1307 einschreiben For Z = 0 To 9 'Adressen $00 - $09 in DS1307 schreiben I2cwbyte Rtc_Regs(Z + 1) 'Werte fortlaufend einschreiben Waitms 10 '10ms Pause bis zum nächsten Byte Next Z 'Nach vorletztem Byte 10ms warten. Waitms 10 'Letzte Adresse Z = Z + 1 'Daten einschreiben I2cwbyte Rtc_Regs(Z + 1) I2cstop 'I²C-Bus Stopsignal ausgeben End SubCode:' **************************************** ' * DS1307 Adr $00 - $09 auslesen * ' **************************************** Sub DS1307Read() I2cstart 'I²C-Bus Startsignal ausgeben I2cwbyte DS1307W 'DS1307 in Schreibmodus setzen I2cwbyte 0 'Startadresse $0 in DS1307 einschreiben I2cstart 'I²C-Bus Startsignal erneut ausgeben I2cwbyte DS1307R 'DS1307 in Lesemodus versetzen For Z = 0 To 9 'Adressen $00 - $09 aus DS1307 lesen. I2crbyte Rtc_Regs(Z + 1), Ack 'Nach jedem Lesen Empfang bestätigen. Next Z Z = Z + 1 'letzte zu lesende Adresse nach Empfang I2crbyte Rtc_Regs(Z + 1), Nack 'nicht mehr bestätigen. I2cstop 'I²C-Bus Stopsignal ausgeben End Sub







Zitieren

Lesezeichen