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???
Hi, du musst für jedes Gerät den kompletten Frame schicken, da sonst die Arbitrierung nicht funtioniert.
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
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).
Okay, so werde ichs auch machen, danke :-))))))
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.