Forum: Mikrocontroller und Digitale Elektronik TWI Adressen abfragen


von Gast (Gast)


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?
1
if (adresse == TEMPSENSOR_LM75)
2
lade_temp_routinen_lm75();
3
4
if (adresse == TEMPSENSOR_DS1621)
5
lade_temp_routinen_da1621();
6
7
usw.

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

von John S. (linux_80)


Lesenswert?

Hallo,

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

von Gast (Gast)


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.

von Michael U. (amiga)


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

von Peter (Gast)


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.

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.