Forum: Mikrocontroller und Digitale Elektronik Erkennen ob I2C Bus eingesteckt ist (AVR)


von Herb B. (s-stoerung)


Lesenswert?

Hallöchen,

ich baue gerade eine Steuerung als Slave, welche ihre Parameter 
wahlweise über Trimmer oder I2C bekommt.
Nach Einstecken und erfolgreicher Datenübertragung über I2C sollen die 
Daten der Trimmer nicht genutzt werden. Und nach dem Herausziehen des 
I2C sollen die Analogen Werte des Trimmers genutzt werden.

Prozessor ist ein Atmega168

Hatte schon drüber nachgedacht die Daten aus dem I2C zu bevorrechtigen 
und ein Reset nach dem Herausziehen zu fordern. Aber die Lösung gefällt 
mir nicht. Möchte das Automatisieren.

Schonmal Danke für die Mühe!

von Karsten (Gast)


Lesenswert?

Der Master besitzt Pull-Up Widerständen. Wenn du hochohmige Pull-Down 
Widerstände an deinem Slave einsetzt, kannst Du über den Pegel erkennen, 
ob der I²C Bus angeschlossen ist.

von Ano N. (oorim)


Lesenswert?

Oder man sagt einfach: "Reagiert der Slave mit der Adresse x? Wenn nein 
(kommt kein ACK) ist er nicht angeschlossen"

von Birger Z. (nohelp)


Lesenswert?

Nur so als Idee,

schalte 2 relativ hochohmige Widerstände (150K-470K) an SCL und SDA 
gegen Masse und überprüfe regelmäßig, ob deren Pegel auf Masse oder eben 
auf VCC ist. Voraussetzung ist, die PullUps für SCL und SDA sind beim 
Master angesiedelt.

von Herb B. (s-stoerung)


Lesenswert?

keine schlechten ideen,

danke, werde zuerst probieren das über den ACK zu machen.
Wobei das natürlich vorraussetzt das der Master in gewissen 
Zeitabständen den Slave ansprechen muss, da sonst kein ACK im Slave 
generiert wird.
Werde mir dann den ACK innerhalb des Slaves herausziehen und damit die 
Trimmer sperren.

Ansonsten die Widerstände. Allerdings hab ich mein Prototyp schon 
fertig.

TNX;)

von Ano N. (oorim)


Lesenswert?

Naja ich hab dich so verstanden das du während dem Startup überprüfen 
willst wer angeschlossen = am leben ist.
Du könntest also während dem Startup alle möglichen Slaves ansprechen, 
schauen ob sie reagieren und dir daraus eine Tabelle erstellen wer da 
ist und wer nicht. Wenn während dem Betrieb jemand nicht reagiert 
während du ihn ansprichst kannst du dir einen "Timeout Counter" bauen - 
will heißen: Hat der Slave so und so oft nicht reagiert wird er als tot 
Markiert und nicht mehr angesprochen (du sprichst sie ja sowieso 
irgendwann mal an und erwartest ein ACK, brauchste nich alle 10ms 
nachfragen "bist du da?" das macht nur unnötigen Traffic).

Verdammt - bei welchem Bus wird das so angewandt -.- ich habs vergessen 
^^

von Herb B. (s-stoerung)


Lesenswert?

Jo 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
Noch kein Account? Hier anmelden.