mikrocontroller.net

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


Autor: Herb B. (s-stoerung)
Datum:

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

Autor: Karsten (Gast)
Datum:

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

Autor: Ano Nym (oorim)
Datum:

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

Autor: No Name (nohelp)
Datum:

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

Autor: Herb B. (s-stoerung)
Datum:

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

Autor: Ano Nym (oorim)
Datum:

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

Autor: Herb B. (s-stoerung)
Datum:

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