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
> 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.
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
>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?
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.
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.