Hallo, ich habe mir eben das Raspberry Pi gekauft. Jetz würde mich mal interessieren wie das mit dem I2C Bus läuft. Am Ende muss ja ein abgespecktes Debian drauf. Ich habe schon Erfahrungen mit Atmels Atmega32 und der Ansteuerung des I2C gemacht. Dabei habe ich direkt auf Register zugegriffen. Aber mit dem RasPi bin ich dann ja bereits im OS. Wie gehe ich die Sache dann an? Kann ich dann immernoch auf Register zugreifen? Oder bietet Linux da eine API? Ich habe viele Tutorials gesehen in denen alles mit Python läuft. Allerdings hasse ich Python (ingesamt alle Skriptsprachen) und würde sehr gerne in C schrieben. Hat schon jemand Erfahrungen damit gesammelt? Habt ihr Tipps / Referenzen für mich? Gruß Manuel
Hallo, unter: http://elinux.org/RPi_Low-level_peripherals#GPIO_Driving_Example_.28C.29 findest du Beispielcode in C. Es werden direkt die entspr. Register beschrieben. Gruß BT
Google ist dein Freund: http://quick2wire.com/category/raspberry-pi/ Da steht alles mögliche über den RaspberryPi drinnen, auch wie man die GP-IOs und den I2C ansteuert.
Oha vielen Dank für die schnellen Antworten! Das grenzt ja an Spaceball's wahnsinnige Geschwindigkeit :-D Ich werd reinschauen solbald ich Zeit hab. Jetz erst mal lernen :-/ Gruß
Hallo Leute, ich bin seit Kurzem auch glücklicher Besitzer eines Raspberry Pi, und der verfügt auf seinem GPIO Connector zum Glück über I²C/SMBUS. Ich konnte auch schon verschiedene I²C Chips erfolgreich mit Python und dem mudul "smbus" ansprechen (z.B. SAA1064 und ADS1110). Ich habe aber leider den Eindruck dass das Linux SMBUS Protokoll nur einen relativ "starren" Funktionsumfang bietet und viele Anwendungsfälle nicht umgesetzt werden können, jedenfalls wenn ich mir diese Beschreibung ansehe: http://www.kernel.org/doc/Documentation/i2c/smbus-protocol Zum Beispiel: - Wie kann man ein "Restart" machen bevor ein "Stop" gesendet wird? - Wie kann man "nur" lesend adressieren und z.B. 2 Byte lesen ohne "Stop" dazwischen und OHNE vorher einen Adresspointer zu setzen? Die Funktion i2c_smbus_read_word_data() hat ja eine relativ starre Syntax: <start> Chip-Addr <write> [Ack] <daten> [Ack] <start> Chip-Addr <read> [Ack] [DataLow] <ack> [DataHigh] <nack> <stop> Beim AtMega kann man das alles selbst "zusammensetzen". Oder habe ich da einfach noch etwas übersehen Habt ihr da schon Erfahrungen machen können?
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.