Elektronik2000.de Forum
» E2000 - Software (Altes System)
» E2000-Logik
Uhrenbaustein DC1307 wird nicht erkannt
Thema: Uhrenbaustein DC1307 wird nicht erkannt
 
Autor Beitrag
 
Tropby
Administator
Hallo,

wir betreiben die Bausteine alle im 7-Bit Modus. Ich reche immer bei der Adresse sofort das achte Bit mit ein also ist z.B. 0x40 dann: 0100 0000 zum lesen und 0100 0001 zum schreiben was 0x41 ist. Intern behandeln wir also immer einen 8-Bit Wert, da es unsinn ist, eine weitere Speicherzelle für das R/W-Bit zu verschwenden.

Das heißt: Wir senden einen 8-Bit Wert also 0xD0 zur RTC. Mit der Adresse 0x68 und dem R/W-Bit = 0. Auf dem selben Bus laufen jedoch noch weitere Daten I2C-Display und EEPROM. Diese werden auch immer angesprochen.

Die I2C Spezifikationen sind uns sehr wohl gut bekannt.

Zitat:
Dass das ACK-Bit nicht ausgewertet wird versteh ich nicht. Man kann ohne die Auswertung nicht erkennen ob ein Baustein die für ihn gesendeten Werte erhalten hat und hieraus resultierend ob ein Baustein am BUS angeschlossen ist, oder ob er überhaupt funktioniert.


Dazu kann ich sagen: Doch ist es sehr wohl. Z.B. bei dem Uhrenbaustein gibt es eine ziemlich einfach Sache:
Wenn die Uhr gesetzt wird, dann wird auch immer mit gesendet, dass der Uhrenbaustein auch aktiv sein soll. Also laufen soll. Das macht er im Auslieferungszustand zum Beispiel nicht. Aber es antwortet sehr wohl über I2C mit einen ACK. Daher weiß ich aber immer noch nicht ob er läuft. Und nur wenn er läuft wird er auch Grün angezeigt. Deswegen wird über einen gewissen Zeitraum immer mal wieder ein Wert aus der Uhr ausgelesen und kontrolliert ob diese auch läuft. Dann kann ich sicher sein, dass der DS1307 auch wirklich läuft.

Ich weiß jetzt nicht welchen Uhrenbaustein du verwendest. Aber mit der E2000-Software funktioniert nur der DS1307.

Wir benutzten eine I2C-Library von Mikroe. Diese untersützt beim Write auf dem I2C-Bus nur ein Collision-Error und gibt kein ACK zurück. Die Komplette I2C-Schnittstelle ist in Software gelöst, da die Hardware-Pinne auf dem NET-IO schon belegt waren. Die aktuelle Lösung ist nicht schön, jedoch macht es dem I2C-Bus nichts wenn zu viele Daten geschickt werden. Wenn kein ACK kommt.... Dann war die Kommunikation gestört. Wenn danach noch 2 Byte gesendet werden, dann macht das dem Bus rein garnichts.

gruß
Tropby

Die Komplette ansteueren mit dem I2C-Bus wird mit E2000-Plus komplett überarbeitet.
_________________________
Elektronik2000.de | Software-Entwickler
Tropby ist offline