Forum: Mikrocontroller und Digitale Elektronik Problem mit DS1337 über TWI


von Florian M. (skywalker79)


Angehängte Dateien:

Lesenswert?

Hallo,

ich versuche seit einiger Zeit erfolglos meine RTC DS1337 von MAXIM über
den TWI-Bus vom ATmega128 anzusprechen. Als Fehler vermute ich, dass das
Ack-Signal nicht korrekt gesendet, bzw. empfangen wird.

Beim Versuch, die RTC auszulesen kommen nur komische Werte zustande und
nach dem letzten Datenpaket wird der Pegel nicht mehr auf High gezogen.

Das senden der Startzeit für die RTC scheint ok zu sein.

Hat einer von euch eine Idee, was ich falsch mache, bzw. was ich
verbessern kann?

mit freundlichen Grüßen

Florian

von Florian M. (skywalker79)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich habe hier im Anhang nochmal den Signalverlauf zwischen Atmega128 und 
der RTC eingefügt.
Die Initialisierung mit der Startzeit scheint wie schon geschrieben ok 
zu sein. Beim Abrufen der RTC werden vorher initialisierte Werte wieder 
zurückgegeben. Diese Werte stehen jedoch nicht in der richtigen 
Reihenfolge.
Am Ende der Datenübertragung wird der Bus nicht mehr auf einen 
High-Pegel gezogen, was zu einem Absturzt des Programmes führt.
Kann mir einer bei dem Problem helfen?

mit freundlichen Grüßen

Florian

von Florian M. (skywalker79)


Lesenswert?

Hallo,

ich bin leider immer noch nicht weiter gekommen, was mein Problem 
angeht.
Hat denn inzwischen jemand von euch mit der RTC Erfahrungen gesammelt, 
bzw. könnte mir so irgendwelche Hinweise geben die mir bei der 
Problemlösung helfen könnten?

mit freundlichen Grüßen

Florian

von Michael Nagler (Gast)


Lesenswert?

Hallo Florian,
ich habe jetzt das Programm nicht besonders analysiert. Nur einen 
Verdacht habe ich, wenn ich das Diagramm ansehe: Beim Schreiben vom 
Master auf den Slave quittiert der Slave jedes Byte mit einem 
Acknowledge-Bit.

Wenn Du Daten vom Slave lesen willst, muss der Master jedes empfangene 
Byte mit "Ack" bestätigen - bis auf das letzte. Beim Lesen des letzten 
vom Slave erwarteten Bytes darf der Master KEIN Ack senden, damit der 
Slave weiß, dass er mit dem Senden aufhören muss. Um die Übertragung 
abzuschließen, sendet der Master "Stop" (oder "repeated Start").

Ich hoffe der Hinweis hilft Dir.

Gruß
Michael

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.