mikrocontroller.net

Forum: PC-Programmierung I2C-Behle für den Raspberry


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: RPi-Bastler (Gast)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Hallo,
ich möchte mit dem RPi (Raspbian) einen I2C-Chip ansteuern.

Es existiert ein Arduino-Code für diesen Chip.
    Wire.beginTransmission(SlaveAddr);
    Wire.write(Op_Code);
  
    Wire.write(RegisterAddr);
    Wire.write((unsigned char)(Data_Low));
    Wire.write((unsigned char)(Data_High));

    Wire.endTransmission();

Dabei wird zwischen Slave-Adresse und Register noch ein "Op-Code" 
reingeschoben.
Die bekannten IO-Libs vom Raspberry (pigpiod, wiringPI) können nur 
komplette Standard-I2C-Messages absetzen.

Was kann man da machen?

Autor: Gutty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Rateteam des µCNets steht Ihnen gleich zur Verfügung.

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Sourcen von wiringPi ansehen und anpassen ist keine Option?

Autor: RPi-Bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich probierte aus, mit einem Standard-I2C-Sendebefehl den Op-Code als 
Register-Adresse zu verwenden, und die Register-Adresse als 1. Daten 
byte.

Wenn man den Arduino-Code anschaut,
Wire.write(Op_Code);
Wire.write(RegisterAddr);
Wire.write((unsigned char)(Data_Low));

dann müsste man mit obigen Setting die gleiche Byte-Reihenfolge erzeugen 
können. Es hat aber nicht funktioniert.


>Sourcen von wiringPi ansehen und anpassen ist keine Option?

Das ist definitiv eine (arbeitsintensive) Option, wenn sonst keine 
anderen Möglichkeiten mehr greifen.
Ein einfacher Hack ist mir meistens lieber.

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RPi-Bastler schrieb:
> Es hat aber nicht funktioniert.

"Hat aber nicht funktioniert" ist als Fehlerbeschreibung nur sehr 
bedingt hilfreich?

Hat der Raspberry Pi nicht die richtigen Signale auf dem Bus generiert, 
hat der Slave sich nicht angesprochen gefühlt (Ack fehlt) oder hat der 
Slave nicht wie erwartet reagiert?

Autor: RPi-Bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> hat der Slave nicht wie erwartet reagiert?

Jep.

Gerade schaue im mir den wiringPI-Source Code an:
https://github.com/WiringPi/WiringPi/blob/master/wiringPi/wiringPiI2C.c

Die machen das mit der ioctl()-Routine.
Das erscheint mir ein gangbarer Weg.
Andere Vorschläge sind immer willkommen.

Autor: RPi-Bastler (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe die I2C-Ansteuerung vom Datenblatt angehängt.
"Op-Code" im Zusammenhang mit I2C sagt mir nichts und finde im Internet 
(Google) nichts.
Kennt sich jemand (I2C-Profi) damit aus?

Autor: MWS (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Ich plädiere dafür Threads zu sperren, in denen der TE es aus welchen 
Motiven auch immer, sei es Dummheit oder Arroganz, nach dem eigenen 
dritten Post immer noch nicht geschafft hat, so ausführlich zu 
informieren, dass potentielle Helfer auch helfen können.

Einfach weg mit dem Mist, das kann nicht so wichtig sein, wenn's schon 
der TE erkennbar nicht für ausreichend wichtig betrachtet.

Beitrag #5850699 wurde vom Autor gelöscht.
Autor: Joachim B. (jar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RPi-Bastler schrieb:
> Ich habe die I2C-Ansteuerung vom Datenblatt angehängt.
> "Op-Code" im Zusammenhang mit I2C sagt mir nichts und finde im Internet
> (Google) nichts.
> Kennt sich jemand (I2C-Profi) damit aus?

echt witzig, was hat I2C-Profi damit zu tun?

Der kann auch nicht deinen immer noch unbekannten Chip raten der den 
Op-Code hat.
Man könnte ja im Datenblatt nachsehen wenn es lesbar wäre und nicht nur 
eine unbedeutene Seite!

MWS schrieb:
> Ich plädiere dafür Threads zu sperren, in denen der TE es aus welchen
> Motiven auch immer, sei es Dummheit oder Arroganz, nach dem eigenen
> dritten Post immer noch nicht geschafft hat, so ausführlich zu
> informieren, dass potentielle Helfer auch helfen können.

dafür

Autor: Gutty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Muss mich bei Ihnen für die magere Performance des Rateteams 
entschuldigen. Schauen Sie doch morgen wieder rein. Da haben Sie 
bestimmt mehr Glückt. Und immer daran denken: so wenig wie nur irgend 
möglich preisgeben. Die Rater des µCNets mögen das.

Beitrag #5851837 wurde von einem Moderator gelöscht.
Autor: Frank M. (ukw) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nickwechsel innerhalb eines Threads sind nicht erlaubt, siehe 
Hilfe:Forum Nutzungsbedingungen.

Zum anderen: Warum weißt Du als TO nicht, was das für ein I2C-IC ist, 
hast aber eine Arduino-Lib dafür?

: Bearbeitet durch Moderator
Autor: PittyJ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Damit habe ich gerade heute auf dem Raspi einen I2C Sensor angesprochen.

https://www.kernel.org/doc/Documentation/i2c/dev-interface

Und das geht auf jedem anderen Linuxgerät auch.

Autor: Christoph db1uq K. (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Interessante Quizfrage
Demnach hat das IC die Adresse 0111_011x, das x bestimmt read/write.
Also 0x76/0x77 in Hexdarstellung

https://i2cdevices.org/addresses/0x76

Die Datenblätter sehen alle anders aus als der obige Auszug, aber der 
Schwerpunkt liegt bei Drucksensoren.

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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.