Forum: Mikrocontroller und Digitale Elektronik Suche I²C Bus Grundlagen


von Michael Junge (Gast)


Lesenswert?

Hallo zusammen

ich habe noch nicht lange mit der AVR Programmierung zu tun, und habe 
daher einige "Verständnis-Probleme", was den I²C Bus betrifft. Die Jungs 
von google hab ich auch schon gefragt, aber da weiss jeder was anderes.
Mein vorhaben ist es, 2, bzw. bis zu 4 Mega8 über den I²C zu verbinden. 
Einer der ist übergeordnete Steuerung, also Master und permanent im 
System. Der zweite (oder der dritte und vierte) befindet sich an einem 
Auswechselbaren Systemteil, welches entfernt, und durch ein anderes 
ersetzt werden kann.

Wie verhält sich nu der Master, wenn ich einen Slave abziehe, also die 
I²C Verbindung trenne?! Lässt sich dieser Zustand im Programm erkennen, 
und entsprechend darauf reagieren? Ich Programmiere mit BASCOM-AVR 
(weiss nicht, ob es was zur Sache tut, aber ich wollt´s mal los werden 
;-)).
Die Steuerung soll auch noch arbeiten, wenn einer, oder alle der Slaves 
fehlen.
Wie gebe ich einem Mega8 die Bus-Adresse vor, und was würde passieren, 
wenn 2 Teilnehmer die gleiche Adresse haben?
Wie groß darf die maximale Leitungslänge für einen I²C Bus sein, und 
benötige ich zwischen den Mega8 wirklich nur 2 Leitungen? Könnte ich als 
mit einem 4 Poligen Stecker zwischen Master und Slave auskommen? (GND, 
VCC, und die beiden Busleitungen).

Vielen Dank schon mal im Voraus

Gruß Mike

von Markus L. (lucky79)


Angehängte Dateien:

Lesenswert?

Hallo Mike!

Ich hab dir die I²C alias TWI spec mal angehängt...

> Wie verhält sich nu der Master, wenn ich einen Slave abziehe, also die
> I²C Verbindung trenne?! Lässt sich dieser Zustand im Programm erkennen,
> und entsprechend darauf reagieren?

Die I²C Verbindung kannst du nicht trennen, weil die wahrscheinlich zu 
dem Zeitpunkt gar nicht existiert. Natürlich lässt sich solch ein 
Zustand im System erkennen. Du musst nur am Bus fragen wer so alles da 
is ;-)

> Die Steuerung soll auch noch arbeiten, wenn einer, oder alle der Slaves
> fehlen.

Kein Problem, rein Programmtechnischer Aufwand...

> Wie gebe ich einem Mega8 die Bus-Adresse vor, und was würde passieren,
> wenn 2 Teilnehmer die gleiche Adresse haben?

Siehe Datenblatt... und beide würden dir auf deine Frage Antworten, was 
bewirkt, dass die Antwort unbrauchbar wäre...

> Wie groß darf die maximale Leitungslänge für einen I²C Bus sein, und

Siehe spec...

> benötige ich zwischen den Mega8 wirklich nur 2 Leitungen? Könnte ich als
> mit einem 4 Poligen Stecker zwischen Master und Slave auskommen? (GND,
> VCC, und die beiden Busleitungen).

Ja, 2 Leitungen genügen hier eben SDA und SCL. Is ja ein BiDi-Bus.
Weiterführende Informationen, wie du deinem Mega eine Adresse gibst 
(Taufe) und wie das HW-TWI arbeitet findest du im Datenblatt vom 
Controller!

Ich würd dir für die Aufgabe jedoch C empfehlen, das is ne echte 
Hochsprache und du findest diverse fertige Libs, die dir schon viel 
Arbeit abnehmen...

Grüße

Markus

von Michael Junge (Gast)


Lesenswert?

Hallo Markus

Vielen Dank erstmal für die Mühe! Das hat mir schon mal etwas weiter 
geholfen. Möchte gerne bei Basic (BASCOM) bleiben, da ich den Syntax 
halbwegs verstanden habe, und nicht schon was neues lernen möchte, bevor 
ich das alte richtig begriffen habe.


Viele Grüße

Mike

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
Noch kein Account? Hier anmelden.