Hallo!! Ich experimentiere gerade ein wenig mit dem TWI Interface (Hardware TWI als Master, USI in diversen Slaves). Und ja, es funktioniert eigentlich alles :-). Trotzdem mal ein paar grundsätzliche Überlegungen zum "Protokoll" und der Verwendung. Kann man so sagen, dass I2C eigentlich nur die OSI Schicht 1 und wenn man so will von Layer 2 nur Media Access Control definiert? Diverse (fertige) I2C Hardware (ich hab' mir bisher nur ein paar EEProms angeguckt) scheinen weitere Vereinbarungen vorauszusetzen, wie z.B. dass bei einer kontinuierlichen Byteübertragung das letzte Byte mit NACK "bestätigt" wird. Das ist natürlich eine Möglichkeit eine vorher in der Länge nicht bekannte Datenmenge zu übertragen. Gefällt mir eigentlich nicht so, weil man keine Bestätigung hat ob das letzte Byte wirklich empfangen wurde. In meinem Fall ist die Menge der Daten immer im Voraus bekannt. Es dürfte eigentlich keine Standards verletzen die Verwendung des ACK Bits entsprechend anders zu implementieren? Aber es stellt sich sowieso die Frage, in wie weit man davon ausgehen kann, dass auf einem I2C Bus der Empfänger das empfängt, was der Sender gesendet hat. Es braucht ja nur EMI bedingt mal ein Bit kippen und das würde nie bemerkt. Das könnte u.U. ja auch in der Adresse passieren. Das wäre in meiner Anwendung schon relativ unangenehm. Ich habe mir damit beholfen jede Nachricht mit einer CRC Prüfsumme zu versehen, die auch die Adresse mit einschließt. Bei einem Fehler wird die Nachricht einfach verworfen. Das ist in meinem speziellen Fall nicht weiter tragisch. Universell einsetzbar ist diese Strategie aber sicher nicht. Und um auf das erwähnte EEPROM zurückzukommen habe ich darauf ja sowieso keinen Einfluss. Um hier sicherzugehen müsste ich mindestens die geschriebenen Daten zurücklesen und vergleichen. Beim Lesen mindestens zweimal oder öfters und auch vergleichen. Ist das nun etwas paranoid? Wie sollte man damit umgehen? Konsequenter weise müsste man bei einer etwas komplexeren Kommunikation ein richtiges Protokoll aufsetzen, welches mindestens eine vollständige Sicherungsschicht zur Verfügung stellt. Denkt man sich da jeweils irgend was aus? Gibts da für I2C bewährte Methoden? Oder ist das alles Overkill? viele Grüße, Klaus
> Lies dir das mal durch.
Hm, das sollte man wohl wirklich mal gelesen haben.
Beim Überfliegen habe ich zwar auch keine direkte Antwort auf meine
Fragen entdecken können, aber ich werde das jetzt erst mal studieren....
Vielen Dank und viele Grüße!
Klaus
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.