mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I2C Hängt - Problemlösung


Autor: Tubie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe hier ein kleineres Problem mit der TWI Schnittstelle am AVR. 
Diese gibt beim empfangen nicht immer das TWINT Bit zurück. Es wird 
nicht zurückgegeben, weil eines der 4 slave nicht richtig auf den Bus 
reagiert. Vermutlich eine Störung oder so.

Das passiert relativ selten aber dann hängt der ganze µC. Ich habe in 
den ganzen Programmen, die im Netz zu finden sind aber noch nie eine 
Fehlerbehandlung gesehen. Wird dabei davon ausgegangen, das I2C immer 
100% fehlerfrei ist? Kann es nicht doch mal sein das irgendwo ein Bit 
verschluckt wird - wie bei mir.


Mein Lösungsvorschlag:
Vor dem senden des StartBit einen rückwärts Zähler setzten, welcher in 
den Lese/Schreib Routinen immer wieder neu gesetzt wird. Erreicht der 
Zähler vor dem StopBit den Wert 0, so liegt ein Timing Fehler vor und 
der Fehler wird ausgegeben.

In den Routinen selbst dürfen dann I2C Schleifen nur wiederholt werden, 
wenn der Zähler nicht 0 ist.


Den Watchdog Timer möchte ich erst einsetzten, wenn der rest fehlerfrei 
läuft.

Gruß,

Tubie

Autor: Entwickler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was sind das für slaves, wie lang ist die Verdrahtung des Busses, wie 
groß sind die pullup Widerstände und wie sieht die gemeinsame Masse aus?

Autor: Tubie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

die Slaves sind 24c512, DS1307, DS2482-800 bisher ist der fehler ca. 5x 
aufgetaucht - innerhalb eines Jahres - beim programmieren mit JTAG 
interface. Ist also nicht sehr oft.

Ich habe allerdings einen 4. Slave (Mega8) den ich gerade programmiere 
und konte bedingt durch einen Programmfehler im Mega8 diesen Fehler am 
Master (Mega32) herbeirufen. Die Fehler, die selten auftreten, könnte 
der interne Watchdog abfangen. Ich möchte nur sicherstellen, falls der 
Mega8 oder ein anderer Baustein mist baut, ich das System in einem 
kontrollierten Zustand habe und ggf. eine Fehlermeldung habe.

Gruß,
Tubie

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.