mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik TWI bei Mega8 - Nicht vorhandener Teilnehmer


Autor: Markus Dörschmidt (cipher1978)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich beschäftige mich gerade mit dem Bau eines RS232 <-> I2C-Wandlers mit 
einem ATmega8. Dabei ist mir folgende Frage in den Sinn gekommen, auf 
die das Handbuch des AVRs auch keine Antwort hat (oder die ich einfach 
überlesen habe...):

Was passiert, wenn der I2C-Master einen I2C-Slave adressiert, der nicht 
am Bus hängt oder aus irgendeinem Grund nicht antwortet (Port defekt, 
Controller hängt, Störung etc.)?
Wartet der Master auf eine Antwort, sprich: Muss ein Timer dafür sorgen, 
dass nach Ablauf einer gewissen Zeitspanne ohne Antwort der Sendevorgang 
abgebrochen wird?
Oder wird durch den Takt auf der SCL-Leitung ein NAK gelesen, weil sich 
kein Teilnehmer angesprochen fühlt und die Datenleitung auf +5V bleibt?


Danke schon mal für die Antworten.


Grüße aus dem (noch halbwegs) sonnigen München,


Markus

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> auf die das Handbuch des AVRs auch keine Antwort hat

Du mußt im Handbuch des IIC nachschauen. Ein fehlender Busteilnehmer 
wird als solcher (fehlender) erkannt.

Autor: Markus Dörschmidt (cipher1978)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der Spez. hab ich da leider auch nichts gefunden. Bei genauerer 
Überlegung muss es aber so sein, dass ein nicht vorhandener Teilnehmer 
erkannt wird, einfach aus dem Grund, weil die Datenleitung nicht auf 0V 
gezogen wird und die Antwort damit mit NACK übertragen wird.

Zum Thema ACK/NACK hab ich jetzt noch eine Frage:
Nach I2C ist spezifiziert, dass im Master Receiver-Mode der Empfänger 
die Übertragung vorzeitig beenden kann, in dem er bei einem Lesevorgang 
ein NACK sendet (für den Fall, dass der Sender mehr Daten übertragen 
will, als dem Empfänger speichern kann).
Hat der Sender auch die Möglichkeit, die Übertragung vorzeit zu beenden 
(Empfänger erwartet mehr Daten, als der Sender überträgt)?


Danke nochmals für eure Antworten


Viele Grüße und ein schönes Wochenende,

Markus

Autor: Volker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hat der Sender auch die Möglichkeit, die Übertragung vorzeit zu beenden
>(Empfänger erwartet mehr Daten, als der Sender überträgt)?

Vielleicht einfach durch eine STOP-Anweisung?

Autor: Markus Dörschmidt (cipher1978)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, hab mich vielleicht etwas ungenau ausgedrückt. Der Sender ist in 
dem Fall ein Slave. Der kann meines Wissens den Bus nicht freigeben, 
sondern nur der Master.

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.