Hallo liebe Mikrocontrollergemeinde, ich möchte mit meinem Raspberry Pi einen Sensor auslesen, der per I2C mit dem Raspberry verbunden ist. Messung, Umrechnung, Auslesen und Ansteuern per I2C mit einem C-Script funktioniert tadellos. Für das Auslesen der I2C Schnittstelle verwende ich die WiringPi Bibliothek von Gordon. Der I2C wird mit dem Befehl "gpio load i2c" gestartet. Nun zu meinem Problem: Ich kann diesen Befehl nicht als Autostartkommando ausführen. Sollte der Raspberry also mal abstürzen und neu booten, müsste ich manuell den Initbefehl für I2C ausführen --> blöd. Dabei habe ich verschiedenste Sachen probiert: 1. in /etc/rc.local "gpio load i2c" ergänzt 2. in /etc/rc.local ein Schellscript aufgerufen, welches dann den Befehl ausführt 3. den Befehl in der crontab Liste ergänzt Bisher hat keines der Kommandos gewirkt. Denkbar wäre es auch die I2C Schnittstelle erst mit der Ausführung des C-Programms (wird alle paar Tage von der Crontab ausgeführt) zu initialisieren. Ich wüsste aber nicht wie man die Initialisierung in C ausführt. Hat jemand eine Idee was ich noch probieren könnte? Vielen Dank b0lle
Vielleicht in der crontab des root-users: @reboot sleep 30 && gpio load i2c Es kann notwendig sein, die Zeit in Sekunden nach sleep zu erhöhen bzw. den vollständigen Pfad zu gpio anzugeben. Referenz: man crontab Beispiel: @reboot sleep 30 && /etc/init.d/privoxy restart
Sehr guter Gedanke! Ichh atte auch die Befürchtung, dass die wiringPi Bibliotheken evtl. so schnell nach dem booten noch nicht verfügbar sind und gpio load i2c dadurch nicht funktioniert. Ich habe jetzt einfach in der crontab den Ladebefehl zyklisch aufgeführt und jetzt geht es. Da ich nichts zeitkritisches nutze sollte das ja so passen. Vielen Dank für deine Hilfe :)
in der /etc/modprobe.d/raspi-blacklist.conf das I2C Modul einkommentieren. also das # vor "i2c-bcm2708" entfernen Dann wird das Kernel Modul es auch beim Booten geladen. Je nach dem welcher user das die Schnitstelle dann benutzen soll kann es sein das dieser noch rechte benötigt. Hierfür ist uneradneren UDEV zu gebracuhen. /etc/udev/rules.d/99-I2C.rules Anlegen Inhalt SUBSYSTEM=="i2c-dev", MODE="0666" sorgt dafür das auch Normale User Vollzugrif haben. Fertig ist die Laube. Das gebastel mit der Crontab oder irgentwelchen Scripten ist und bleibt gebastel.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.