mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I2C abstrakt


Autor: Klaus W. (Firma: privat) (texmex)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: spess53 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Lies dir das mal durch.

MfG Spess

Autor: Klaus W. (Firma: privat) (texmex)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.