Hallo, ich habe irgentwie Probleme den DS1307 zu verstehen. Dieser Sollte ja seine Sekunden, Minuten und Stunden in 2BCD ausgeben. Wie in meinem ASM-Listing ersichtlich lese ich den auch dementsprechend aus. Nur das mir dieser nicht die richtigen Daten liefert. Ist der Fehler in meinem Programm oder liegt der Fehler am DS1307. Hab derzeit nur diesen Einen DS1307 da, auf einem Fertigmodul von Amazon. Kenne sonst nur den PCF8583, allerdings ist dieser nicht bei mir vorrätig. Programmplatzanzeige und Frequenzanzeige funktionieren ohne Probleme. Im Anhang sind alle relevanten Dateien zu diesem Projekt. Danke im voraus.
Schau mal nach ob am Pin7 des RTCs ein 1Hz Signal anliegt. Ev muss da noch ein Pullup dran falls keiner auf dem Modul bestückt ist. Wenn nein geht deine I2C Kommunikation nicht, oder der Quarz schwingt nicht.
:
Bearbeitet durch User
Thomas Z. schrieb: > Schau mal nach ob am Pin7 des RTCs ein 1Hz Signal anliegt. Ev muss da > noch ein Pullup dran falls keiner auf dem Modul bestückt ist. > Wenn nein geht deine I2C Kommunikation nicht, oder der Quarz schwingt > nicht. Die 1Hz sind da, ohne +5V sehe ich die 1Hz auch nur mit Batterie. Scheint OK zu sein
Mediafox F. schrieb: > ohne +5V sehe ich die 1Hz auch nur mit Batterie. Dann hängt der Pullup von Pin7 wohl an Vbat. Ich würde probehalber den Clock mal ausschalten. Nicht das die 0x10 der default sind. Nur so kannst du sicher sein, dass du den RTC beschreiben kannst
:
Bearbeitet durch User
Thomas Z. schrieb: > Mediafox F. schrieb: >> ohne +5V sehe ich die 1Hz auch nur mit Batterie. > > Dann hängt der Pullup von Pin7 wohl an Vbat. Ich würde probehalber den > Clock mal ausschalten. Nicht das die 0x10 der default sind. Nur so > kannst du sicher sein, dass du den RTC beschreiben kannst Man kann den SQWE abschalten. Der DS1307 wird also angesteuert. Im Anhang man was ich meine. Das schaut gar nicht nach 2BCD aus.
Mediafox F. schrieb: > Nur das mir dieser nicht die richtigen Daten liefert. Was liefert er und was wäre deiner Meinung nach richtig? > Ist der Fehler in meinem Programm oder liegt der Fehler am DS1307. Welche Daten laufen über den Airbus, d.h.was dekodiert der Logikanalysator? Nur wenn vom DS1307 die richtigen Daten über den Bus kommen, hat dein Programm eine Chance.
:
Bearbeitet durch User
Rainer W. schrieb: > Mediafox F. schrieb: >> Nur das mir dieser nicht die richtigen Daten liefert. >> Ist der Fehler in meinem Programm oder liegt der Fehler am DS1307. > > Was liefert er und was wäre deiner Meinung nach richtig? > Welche Daten laufen über den I2C-Bus? > Was dekodiert der Logikanalysator auf dem I2C. Nur wenn vom DS1307 die > richtigen Daten über den Bus kommen, hat dein Programm eine Chance. Anscheinend läuft der RTC über, also anstatt von 9 aus zu springen, zählt der weiter. Also statt 59 geht's auf 60. Dann liest mein Programm nicht mehr 0x59 oder 0x00, sondern 0x5A, was nicht BCD entspricht. Bei den Sekunden hab ich das Problem nicht, da zählt der schön von 0 bis 59.
Die Lese Sequenz ist doch falsch oder? Versuchs mal repeated start nachdem du die Register Addresse geschrieben hast.
Falls das Verhalten des Chips nicht klar ist: Unter Linux gibt es Kommandozeilen-Tools zum Debuggen von I2C. Wenn dein Computer keine I2C Schnittstelle hat, kannst du einen Digispark (ATtiny85) als Adapter benutzen. Der wird vom Linux Kernel unterstützt. Siehe - https://github.com/harbaum/I2C-Tiny-USB - https://wiki.st.com/stm32mpu/wiki/I2C_i2c-tools - https://www.abelectronics.co.uk/kb/article/1092/i2c-part-3-i2c-tools-in-linux
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.