Forum: Mikrocontroller und Digitale Elektronik Grasshopper und LM75


von gast (Gast)


Lesenswert?

Hallo,
ich will mit dem Grasshopper und einem LM75 die Temperatur messen. Der 
LM75 hängt am I2C Bus, die Slave Adresse ist 111 und die Treiber für I2C 
sind in den Kernel einkompiliert ('/dev/i2c-0' habe ich mit 'mknod i2c-0 
c 89 0' erstellt).
1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <fcntl.h>
4
#include <linux/i2c-dev.h>
5
6
int main() {
7
  int file, addr = (1<<6)|/*(0<<5)|(0<<4)|*/(1<<3) | (1<<2)|(1<<1)|(1);
8
  
9
  if ((file = open("/dev/i2c-0", O_RDWR)) < 0) {
10
    printf("error opening device!\n");
11
    exit(1);
12
  }
13
  
14
  if (ioctl(file, I2C_SLAVE, addr) < 0) {
15
    printf("error setting slave address!\n");
16
    exit(1);
17
  }
18
  
19
  return 0;
20
}
Leider funktioniert das Einstellen der Slave Adresse nicht. Woran könnte 
das liegen?

von gast (Gast)


Lesenswert?

Hat wirklich niemand eine Idee? Ich habe schon die debug messages für 
I2C in den Kernel mit einkompiliert, aber das hilft mir leider auch 
nicht weiter...

von K.S (Gast)


Lesenswert?

Hatte gleiches Problem:

Habe die slave addresse per kommandozeile übergeben.
Hatte Slave Addresse 72. Der Treiber scheint die Adresse zum 2 nach 
links zu schieben.
Bei meinem Beispiel konnte ich nur den Slave ansprechen mit übergebener
Adresse 32

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.