Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
So ich habe heute eine E-Mai lvon RS bekommen das ich mein Raspberry bestellen kann. Sprich ich habe Ende nächsten Monats ganz wahrscheinlich einen Code von Farnell den ich abgeben könnte.
Geändert von Kampi (28.05.2012 um 18:46 Uhr)
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Hab den Raspberry Pi inzwischen erfolgreich mit dem RP6 verheiratet, d.h. I²C haut einwandfrei. Als Pegelwandlung hab ich folgendes benutzt:
(R2 und R3 kann man weglassen, weil die beim RP6 und Raspi schon eingebaut sind. Macht also alles zusammen (SDA+SCL) 2Rs und 2Transistoren)
Hab in C ein paar kleine Programme geschrieben, die jeweils einen Befehl (forwärts/links/rechts/...) via I²C senden. Man kann den RP6 also schon ganz primitiv auf der Kommandozeile steuern
Und Auslesen der ganzen Register (LDRs etc) funktioniert auch. (Hab für die Base einfach das I²C-Slave-Beispiel genommen)
Nur die Stromversorgung macht zur Zeit noch ein bisschen Probleme (7805 wird verdammt heiß, im Moment wird Raspi getrennt versorgt). Aber da kommen bald Schaltregler rein, für RP6 und Raspi jeweils einer.
Geändert von -schumi- (03.06.2012 um 21:49 Uhr)
Wie funktioniert den das mitm I²C bei dem Pi?
Hast du da nen Link zu?
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Als erstes braucht man nen I²C-Treiber. Ich war faul und hab einfach ein fertiges Image genommen
In dem Artikel http://nathan.chantrell.net/20120519...c-io-expander/ verlinkt der Autor auf das Image: http://www.frank-buss.de/tmp/kernel.img
(Ist ein Debian, einfach das kernel.img in der Bootpartition ersetzen. Der in diesem Image enthaltene I2C-Treiber arbeitet zwar noch über Software-I2C, aber das reicht dicke. Es gibt auch einen Treiber der das Hardware-I2C nutzt, aber da muss man sich den Kernel erst mal selbst bauen und da hab ich grad kein Bock drauf. Ausserdem haben Kernel mit diesem Treiber bis jetzt mehr Probleme beim booten von SD-Karten)
Dann kann man relativ einfach das Device öffen, Slave-Adresse angeben und dann nach Lust und Laune schreiben und lesen:
Dieses Programm setzt die Geschwindigkeit jetzt eben auf 30/30. Für die ganzen Commands nehm ich mir die RP6Base_I2CSlave.c und die RP6Control_*I2C-XYZ-Master*.c aus den Beispielen zu Hilfe.Code:#include <linux/i2c-dev.h> #include <linux/i2c.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <sys/ioctl.h> // Commands: #define CMD_POWER_OFF 0 #define CMD_POWER_ON 1 #define CMD_CONFIG 2 #define CMD_SETLEDS 3 #define CMD_STOP 4 #define CMD_MOVE_AT_SPEED 5 #define CMD_CHANGE_DIR 6 #define CMD_MOVE 7 #define CMD_ROTATE 8 #define CMD_SET_ACS_POWER 9 #define CMD_SEND_RC5 10 #define CMD_SET_WDT 11 #define CMD_SET_WDT_RQ 12 int main() { bus = open( "/dev/i2c-0", O_RDWR ); // I2C öffnen if ( bus == -1 ) { // error } slave_addr = 0x05; // Slave Adresse (0x05 ist von der Base) ioctl( bus, I2C_SLAVE, slave_addr ); // Slave Adresse setzen char buffer[] = {0, CMD_MOVE_AT_SPEED, 30, 30}; // Command unsigned int bytes; bytes = write( bus, buffer, sizeof(buffer) ); // Rausschreiben close (bus); // I2C schließen return 0; }
Den Quelltext einfach in eine rp6ctrl.c oder sowas schreiben (am besten via SSH auf Raspi zugreifen und dann in Nano Strg+Alt+V). Dann das Programm übersetzen mit "gcc rp6ctrl.c -o rp6ctrl". Ausführen mit "sudo ./rp6ctrl". Da braucht man eben Root-Rechte, oder man includet den User in irgend eine Gruppe deren Namen ich jetzt nicht weis, die die Rechte zum I2C-Schreiben hat.
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Ebenfalls danke für das Beispiel
Den Hardware-Treiber gibts übrigens hier, ich glaube das die Probleme beim booten mittlerweile gefixt sind...
Kleine Frage noch.....das Image ist einfach ein Kernel der auf die SD-Karte gepackt wird?
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Lesezeichen