www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik TWI Adressen abfragen


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nacht miteinander.

Ich suche eine Möglichkeit die Adresse aller ans TWI angeschlossenen 
Geräte auszulesen. Der Sinn ist, dass nicht immer alle möglichen Slaves 
ans System angeschlossen sind und der AVR das erkennen soll, und dazu 
auch neue ICs erkennen.
Bsp: Ich betreibe 3 I²C Temperatursensoren am TWI.
Beim µC soll jetzt beim einschalten erkennen, wieviele davon da sind und 
ob neue vorhanden sind. Die meisten ICs haben ja feste Adressräume. 
Damit könnte man doch erkennen, was für ein Gerät angeschlossen ist.

Natürlich müsste man die Adressräume fest einspeichern und der µC 
erkennt anhand der Adresse um welches Bauteil es sich handelt.

Geht es vielleicht so, dass man einfach alle Adressen abfrägt, die ich 
dem µC schon eingegeben habe?
if (adresse == TEMPSENSOR_LM75)
lade_temp_routinen_lm75();

if (adresse == TEMPSENSOR_DS1621)
lade_temp_routinen_da1621();

usw.

TEMPSENSOR_NAME müssten dann die Adressbereiche enthalten damit erkannt 
wird um welches Bauteil es sich handelt.

Autor: John Small (linux_80)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wenn auf eine Slave-Adresse kein Slave mit ACK antwortet, ist keiner da.
Ansonsten schon ;-)

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und damit hat auch keines der angeschlossenen Teile Probleme? Nicht dass 
der µC dann sonst einen Aufstand macht weil er keine Antwort bekommt.

Wenn es keine Probleme gibt, werde ich wahrscheinlich die bekannten 
Adressbereiche abfragen. Thx.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wenn Du nicht vergisst, auch ein Stop hinterherzuschicken, wenn sich ein 
Slave mit ACK gemeldet hat, spricht nichts dagegen.

Gruß aus Berlin
Michael

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>wenn Du nicht vergisst, auch ein Stop hinterherzuschicken, wenn sich ein
>Slave mit ACK gemeldet hat, spricht nichts dagegen.

Das STOP musst Du auch dann senden, wenn sich kein Slave mit ACK meldet, 
damit alle anderen Bus-Teilnehmer wissen das die Transaktion bendet ist.

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.