Forum: Mikrocontroller und Digitale Elektronik [Raspberry Pi] Status des I2C-Busses auslesen


von Simon S. (-schumi-)


Lesenswert?

Hallo zusammen,

ich hab hier einen Raspberry Pi mit Arch-Linux drauf. Ich kann auch ohne 
Probleme auf dem I2C lesen und schreiben:

Erst initialisieren:
1
# modprobe i2c-dev

Dann als Root folgendes C-Programm ausführen:
1
#include <linux/i2c-dev.h>
2
#include <linux/i2c.h>
3
#include <unistd.h>
4
#include <sys/types.h>
5
#include <sys/stat.h>
6
#include <fcntl.h>
7
#include <sys/ioctl.h>
8
int main()
9
{
10
  int bus;
11
  bus = open( "/dev/i2c-0", O_RDWR );
12
  if ( bus == -1 )
13
  {
14
    // error
15
  }
16
  unsigned char slave_addr = 0x05;
17
  ioctl( bus, I2C_SLAVE, slave_addr );
18
  char buffer[] = {0, 6, 2};
19
  unsigned int bytes;
20
  bytes = write( bus, buffer, sizeof(buffer) );
21
  close (bus);
22
  return 0;
23
}

Allerdings müsste ich jetzt in meinem C Programm herausfinden, ob er 
schon fertig ist die "062" zu übertragen.

Ich hab zwar eine tolle Doku gefunden 
(http://www.mjmwired.net/kernel/Documentation/i2c/dev-interface), aber 
dort stehts leider nicht drin.

Weis jemand weiter?

Viele Grüße,
Simon

von A. F. (frankalicious)


Lesenswert?

Kann es sein, dass die write Funktion erst beendet wird wenn die 
I2C-Übertragung beendet ist?
Andernfalls kann ich mir nicht vorstellen, wie der Rückgabewert in der 
von dir verlinkten Beschreibung zustande kommt.

von Simon S. (-schumi-)


Lesenswert?

Ja, kann sein... :fail:

Wenn die Übertragung erfolgreich war, wir die Anzahl der übertragenen 
Bytes zurückgegeben, ansonsten -1.

Danke :-)

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
Noch kein Account? Hier anmelden.