Hallo Normann!
Vorab: Das ist nur Theorie, da ich mit Onboard-I2C-Controllern noch nie etwas gemacht habe.
py_lo hat geschrieben:Ich habe ein alix2d2 board von PC-Engines
Auf dem läuft Linux! Also nimm Linux!
py_lo hat geschrieben:Ich habe zwar ein Modul für Python gefunden (pyi2c) welches aber anscheinend nicht für den Einsatzzweck geeignet ist
Stimmt.
pyi2c ist nicht für deine Zwecke geeignet. Aber in weiterer Folge, könntest du
pyi2c selbst um die Möglichkeit erweitern, auch eingebaute I2C-Geräte anzusprechen. Dann hättest du ein kleines Rahmenwerk mit dem du arbeiten kannst. Dein Code würde damit ohne große Anpassungen später auch mit externen I2C-Controllern arbeiten. Außerdem könntest du diese Codeanpassung auch an den Programmierer von
pyi2c schicken. Vielleicht baut er deinen Code sogar ein.
py_lo hat geschrieben:ich habe ja bereits den I2C-Bus-Connector Hardwaremässig auf dem Board.
Dann sind
libi2c-dev und die
i2c-tools das was du brauchst.
Unter Ubuntu: ``aptitude install libi2c-dev i2c-tools``
Mit den Kommandozeilenprogrammen i2cdetect, i2cdump, i2cget, i2cset kannst du schon mal herausfinden, wie die Kommunikation über I2C funktioniert und ob du den PCA9552 ansprechen kannst.
Du kannst diese Kommandozeilenprogramme auch direkt in dein Python-Programm einbinden. Entweder mit
subprocess oder mit
pexpect. Ich kenne diese Kommandozelenprogramme nicht. Wenn es mit
subprocess nicht funktioniert -- weil du vielleicht auf Rückmeldungen warten musst -- dann probiere es mit
pexpect.
Das dürfte das Einfachste sein, wenn du gelernt hast, mit diesen Kommandozeilenprogrammen eine Verbindung zum PCA9552 herzustellen.
In der Datei
/urs/share/doc/libi2c-dev/dev-interface.gz findest du weitere Hinweise. Unbedingt durchlesen!
Dort steht z.B., dass du im Ordner
/sys/class/i2c-dev/ Informationen über die I2C-Geräte findest. Weiters ist in dieser Textdatei ein C-Beispiel. Das bedeutet, dass du auch mit Python, direkt auf diese Geräte-Steuerdateien zugreifen kannst (du brauchst vielleicht
ctypes dafür). Du musst also nicht unbedingt den Umweg über die Kommandozeilenprogramme (i2c-tools) machen. Wenn du das C-Beispielprogramm verstehst, dann kannst du es direkt nach Python portieren. Das bringt dir wahrscheinlich einen kleinen Geschwindigkeitsvorteil, falls du mit dem Einbinden der Kommandozeilenprogramme Zeitprobleme bekommst -- was ich aber nicht glaube, denn der I2C-Bus ist nicht besonders schnell.
Ich persönlich glaube, dass du mit dem Einbinden der Kommandozeilenprogramme (i2c-tools) mit geringem Aufwand den größten Nutzen hast und am Schnellsten ans Ziel kommst. Du willst ja keine Raumfähre damit steuern.
-
http://www.lm-sensors.org/wiki/i2cToolsDocumentation
-
http://www.lm-sensors.org/wiki/man/i2cdetect
-
http://www.lm-sensors.org/wiki/man/i2cget
-
http://www.lm-sensors.org/wiki/man/i2cset
-
http://www.lm-sensors.org/wiki/man/i2cdump
------
Ich schrieb bereits, dass ich das alles nicht ausprobiert habe. Außerdem weiß ich nicht, ob es eine bessere Lösung für dich gibt. Das was ich schrieb, ist alles was mir im Moment dazu einfällt.
mfg
Gerold