I²C-mehrere Devices an einen Bus-C-Code/Reihenfolge?

Gast #107930
Lesenswert?
• ▲
▼
Hallo,

habe eine softwaremäßige Emulation eines I²C-Buses. An einen Bus können
ja bis zu 8 Devices (Temperaturfühler) dran hängen.
Die Funktion, die von bisher einem Temperaturfühler die Werte abfragt,
heißt bei mir "get_temperature();" Darin befinden sich Start,
Stop-Bedinungung, sowie die EMulation des Sendens der Temp.Daten zu
einem LCD-Display über den I²C-Bus.

Wie mache ich das jetzt mit mehreren Devices? Soll ich INNERHALB meiner
get_temperature()-Funktion alle Devices hintereinander ansprechen und,
falls sie ein Ack-Bit schicken, die Werte ans Display schicken
....oder....
soll ich für jedes Device die get_temperature()-Funktion aufrufen, also
wird für jedes DEvice neue Start-Stop-Bedinungen generiert...eigentlich
unsinnig, oder???
Gast #107932
Lesenswert?
• ▲
▼
Hi Andreas,

genau wie Michael sagt, musst Du schon an alle Devices die komplette
Abfrage schicken, also Start, Adresse, Kommando, Datenempfangen,
Stopp. (Oder so ähnlich) Aber Deine Funktion get_temperature() ist ja
geradezu perfekt geeignet einen Parameter (die Adresse) mitzuübergeben.
So dass Du die nicht für jedes Device extra schreiben musst.

Gruß Andreas
Gast #107933
Lesenswert?
• ▲
▼
Jep, genauso lese ich zwei TMP100 per I2C an einem MSP430 aus. Ich
übergebe als Parameter die I2C-Adresse des Devices und liefere den
double-Wert der Temperatur zurück:

double I2C_Auslesen(char address);

Jedes mal wird das komplette Programm (Start, Init, Auslesen, Stop usw.
gesendet).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren