www.mikrocontroller.net

Forum: PC-Programmierung udev für i2c verwenden?


Autor: Ulrich P. (uprinz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich programmiere gerade an einem embedded device unter linux.
Wie man in einem Programm mittels udev ein USB device bedient habe ich 
schon erfolgreich umgesetzt und es gibt auch einige Beispiele dazu im 
Netz, die mir geholfen haben.

Nun habe ich mir gedacht, dass man mit udev doch auch alle anderen 
devices unter /sys/class/... ansprechen können sollte.
Außerdem kann mich ein udev device doch benachrichtigen, wenn an dem per 
udev_monitor_... etwas interessantes passiert.

Da ich einen temperatursensor habe, der seine daten auf einen CAN bus 
übertragen soll, müsste ich doch irgendwie auf
/sys/class/i2c-dev/i2c-0/subsystem/i2c-0/device/0-0048/temp1_input
einen monitor setzen können und mein thread wird immer nur dann 
ausgeführt, wenn die Temperatur sich geändert hat.

Grundsätzlich bin ich schon so weit, dass ich per
printf("  I2C temp1_input %s\n", udev_device_get_sysattr_value(dev, 
"temp1_input"));
den Wert des Sensors auslesen kann, aber ich bekomme den udev_monitor 
nicht hin. Leider finde ich auch keine halbwegs vollständigen und 
lesbaren Beispiele, die sich mit etwas anderem als USB beschäftigen. Hat 
da mal jemand was für mich?

Vielen Dank schon mal
Ulrich

Autor: Imon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sihe dir mal die lmsensors an

http://lm-sensors.org/

Hier solltest du einigen Input finden wie dieses Sensoren normalerweis 
unter (embedded) Linux gnutzt werden. Ich bin fast sicher das man mit 
dieser Basis was für deine zwecke Adaptieren kann.

btw. was spricht dagegen einen eigenen kleine Dämon zu schreiben der 
denn Sensor regelmäßig Pollt und sich dann schlafen legt, zumal 
Temperatur Änderungen doch eher ein langsame Prozesse sind.

Autor: Ulrich P. (uprinz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Danke schon mal für den Verweis auf lm-sensors.

Ich bin mir nicht sicher, ob ein kleiner Dämon für mein Problem wirklich 
geeignet ist. Der LM92 ist nur eine vorübergehende Lösung, er wird durch 
einen NTC abgelöst, der an einem ADC Eingang der CPU hängt. Auch der 
soll per sys/classs/... exportiert werden. Die UserApp greift dann 
wieder darauf zu.
Das soll noch für andere Sensoren und Eingänge ebenfalls so gelöst 
werden.

Dieser Versuch ist dafür gedacht das udev mal aus zu probieren. Das 
finale Ziel ist eigentlich, dass die Applikation die Werte aller 
verbundenen Sensoren in einem eigenen udev Bereich ablegt. Dabei stammen 
die Daten von internen und via TCP/IP oder CAN angebundenen Sensoren.

Das würde eine homogene Behandlung aller Sensoren ermöglichen, wobei der 
CAN Master die zentrale Drehscheibe ist. Alles andere würde vermutlich 
dazu führen, dass alles separat und womöglich unterschiedlich gemacht 
wird. Das ist nach einiger Zeit nicht mehr zu pflegen.

Gruß, Ulrich

Autor: Ulrich P. (uprinz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, für alled, die es interssiert:

Anscheinend kann der aktuelle hwmon (Kernel 2.6.34) das udev-system noch 
nicht über sein Polling oder geänderte Werte eines I2C Sensors 
informieren.

Das ist der Grund, warum man per udev einen Wert auslesen kann, dieser 
aber immer auf dem Stand bleibt, den er beim ersten Auslesen hatte.
Das erklärt auch, warum ein gesetzter udev_monitor nicht getriggert 
wird.

Gruß, Ulrich

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.