Forum: Mikrocontroller und Digitale Elektronik Probleme mit DS1307 und dessen Zeitausgabe


von Mediafox F. (mediafox_f)


Angehängte Dateien:

Lesenswert?

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.

von Thomas Z. (usbman)


Lesenswert?

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
von Mediafox F. (mediafox_f)


Lesenswert?

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

von Thomas Z. (usbman)


Lesenswert?

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
von Mediafox F. (mediafox_f)


Angehängte Dateien:

Lesenswert?

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.

von Rainer W. (rawi)


Lesenswert?

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
von Mediafox F. (mediafox_f)


Lesenswert?

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.

von Thomas Z. (usbman)


Lesenswert?

Die Lese Sequenz ist doch falsch oder? Versuchs mal repeated start 
nachdem du die Register Addresse geschrieben hast.

von Nemopuk (nemopuk)


Lesenswert?

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
Noch kein Account? Hier anmelden.