mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I²C-mehrere Devices an einen Bus-C-Code/Reihenfolge?


Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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???

Autor: Michael B (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

du musst für jedes Gerät den kompletten Frame schicken,
da sonst die Arbitrierung nicht funtioniert.

Autor: hebel23 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay, so werde ichs auch machen, danke :-))))))

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.