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.
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 19: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 22: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
Es gibt ja so ein fertiges Debian Image für den Raspi, das kannst du mit dd auf die SDKarte kopieren. Anschließend hast du dann 2 Partitionen auf der SDKarte. Eine Fat32 zum Booten und die andere eine Ext3 (oder 4?) glaub ich (auf der ist das System an sich). Auf der Bootpartition befindet sich eine kernel.img, die bennenst du einfach in kernel.img.bak oder so um und kopierst die neue kernel.img auf diese Partition. Fertig
Den anderen Kernel, den Chypsylon verlinkt hat musst du auf den Raspi kopieren (ins Homeverzeichnis oder so) und dann mit "sudo dpkg -i /pfad/zum/kernel.deb" installieren. Ob der Kernel funzt hab ich aber selbst noch nicht ausprobiert![]()
Unterstuetzt das OS das man via RaspPI herunter laden kann noch kein I2C?
Nam et ipsa scientia potestas est..
Lesezeichen