PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : I2C Bus Adresse ermitteln



Achim S.
20.09.2014, 20:50
Hallo
hat jemand eine Idee wie ich mit einem Programm in C die Adresse eine IC (i2c( ermitteln kann?
Kenne so was Arduino. Ist aber zu einfach. Die ermittelte Adresse soll auf einem Display gleich ausgegeben werden.
achim

schorsch_76
20.09.2014, 20:56
man könnte einen I2C Broadcast machen. Siehe [1]

[1] http://forum.arduino.cc/index.php/topic,61520.0.html

Achim S.
21.09.2014, 07:25
Hallo schorsch
Danke für deine Antwort. Ist in etwa was ich suche. Arbeiten immer nach dem gleichen Typ. Such noch was grösseres, was auch über den Bus das Ergebnis ausgibt. Scheint wenig dazu zu geben.
achim

oberallgeier
21.09.2014, 08:19
... Ist in etwa was ich suche ... Such noch ... was auch über den Bus das Ergebnis ausgibt ...Meine Rundumschauroutine für I²C arbeitet natürlich ähnlich. Eine Schwierigkeit sehe ich bei mir und wohl auch bei anderen Routinen: die I²C-Spezifikation erlaubt ein endloses Stretching; das kann dazu führen, dass ein angeschlossenes I²C-Teil >>ohne Energieversorgung<< zum Koma führt. Das muss abgefangen werden.

Das Ergebnis über den Bus ausgeben? Wie soll denn das gehen bitte? Wenn ich noch von keinem Busteilnehmer die Adresse kenne (dürfte bei allen Nicht-Hellsehern in der Programmierphase der Fall sein) - an wen soll ich dann das Ergebnis senden? An das erste erkannte Teil - sagen wir mal ein EEPROM - oder an das letzte, vielleicht einen Sensor der NUR Daten sendet? Eierlegende Wollmilchsäue haben den Nachteil, dass sie vorerst nur in Paralleluniversen existieren.

Klebwax
21.09.2014, 08:58
man könnte einen I2C Broadcast machen.

Es ist ein bißchen blöd, etwas "Broadcast" (d.h. eine Nachricht an alle) zu nennen, was in Wirklichkeit ein "Scan" (jeweils eine Nachricht an alle verfügbaren Adressen) ist. Es deutet darauf hin, daß einige der Autoren in diesem Link I2C nicht wirklich verstanden haben.

@oberallgeier
die I²C-Spezifikation erlaubt ein endloses Stretching; das kann dazu führen, dass ein angeschlossenes I²C-Teil >>ohne Energieversorgung<< zum Koma führt. Das muss abgefangen werden. Es führt außerdem dazu, daß der ganze Bus nicht mehr funktioniert. Ein defektes Device kann im Gegensatz zu einem nicht vorhandenen den Bus komplett lahmlegen (was eigentlich für alle Busse gilt). Da ist es dann vom Gerät abhängig, ob es überhaupt noch etwas sinnvolles tun kann, wenn der Bus ausgefallen ist.

MfG Klebwax

Achim S.
21.09.2014, 09:08
Hallo oberallgeier
Ich nutze als Prz einen AT1284p. Dort habe ich einen PCF8574 mit einem Display 1604 angeschlossen. Damit habe ich einen Busteilnehmer immer zur Kontrolle und der Bus muss laufen. Schliesse ich einen weiteren an (ohne angabe der Adresse) muss diese zweite Adresse ausgegeben werden. Teilweise habe ich bis zu 5 Module am Bus angeschlossen. Dazu noch einen Verlängerung und/oder Funkbrücke und/oder Fernbedienung. Da lohnt sich der Aufwand. Als Bedienung nutze ich wiederrum Porteingänge ohne Bus zur Steuerung der Anzeige/Menue. Die Fehler muss ich in Kauf nehmen.
achim

fredred
23.09.2014, 13:09
Hallo Achim,

weis du suchst eine Lösung in C, somit kann ich nicht direkt helfen.
MCU Bussystem programmiere ich mit Bascom. Mit Erfolg und genau so wie du es benötigst.
Bis zu 255 Busteilnehmer am I2C können gelesen und Adressen in Dez/Hex und Binär auf Display /Terminal angezeigt werden.
Auch die abfragen der 1wire Adressen ist in der BAS beschrieben.

Da in diesem Forum sehr viele Experten in der Programmierung C/GCC aktiv sind, lege ich mal die bas und hex im Anhang
Durch Anregung(Codeschnipsel übernehmen), wenn nicht selber, können diese dich helfen, dies in C zu programmieren.
Hab auch mal gehört das mit myAVR_ProgTool (Freeware)die Hex/Bin Dateien für viele Programmer zum „brennen“ funktionieren.

Bitte um Entschuldigung, wenn ich als BASCOM-FAN, in diesem Thread, falsch bin.

Mit freundlichen Grüßen
Fred

Achim S.
23.09.2014, 13:38
Hallo fred
du brauchst dich nicht zu entschuldigen. Jeder Hinweis oder Stück Code zeigt mir wie man es machen kann. Werde mir es auf jeden Fall ansehen. Komme aus BBG !!!!!!
achim