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
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
man könnte einen I2C Broadcast machen. Siehe [1]
[1] http://forum.arduino.cc/index.php/topic,61520.0.html
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
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.... Ist in etwa was ich Suche ... Such noch ... was auch über den Bus das Ergebnis ausgibt ...
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.
Ciao sagt der JoeamBerg
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.
@oberallgeierEs 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.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.
MfG Klebwax
Strom fließt auch durch krumme Drähte !
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
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
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
Lesezeichen