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!
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.
Oder man sagt einfach: "Reagiert der Slave mit der Adresse x? Wenn nein (kommt kein ACK) ist er nicht angeschlossen"
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.
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;)
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 ^^
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.