Forum: Mikrocontroller und Digitale Elektronik Schreiben in I2C Register von ADXL345 funktioniert nicht


von Alex (Gast)


Lesenswert?

Hallo,

ich versuche zur Zeit den ADXL345 
(https://www.sparkfun.com/datasheets/Sensors/Accelerometer/ADXL345.pdf) 
per FoxBoard G20 (http://www.acmesystems.it/FOXG20) anzusprechen.

Laut Datenblatt und anderen beispielen im Internet genügt es, das 
PowerControl Register (0x2D) mit einer 8 zu beschreiben, damit die 
Messung beginnt. Dies klappt leider nicht.

Das schreiben und lesen auf den/vom Bus klappt wie es aussieht aber. 
Schreibe ich zuerst 0x30 auf den Bus und lese anschließend, so erhalte 
ich 2 als Antwort. Laut Datenblatt korrekt. Also schreiben und lesen OK.

Nur das schreiben in ein Register funktioniert nicht. Habe schon alle 
möglichen Schreibmöglichkeiten durchprobiert...
1
    i2c_buffer[0] = 0x2D;
2
    i2c_buffer[1] = 0x08;
3
    if ((write(fd, i2c_buffer, 2)) != 2) {
4
        printf("Error on write\n");
5
    }
6
7
    i2c_buffer[0] = 0x2D;
8
  if ((write(fd, i2c_buffer, 1)) != 1) {
9
    printf("Error on write\n");
10
  }
11
12
13
  if ((read(fd, i2c_buffer, 1)) != 1) {
14
    printf("Error on read\n");
15
  }
16
17
    printf("%d\n", i2c_buffer[0]);

Hier erhalte ich 0 als Antwort.

Übersehe ich was im Datenblatt?

Für Hilfe wäre ich überausdankbar.

MfG Alex

von Alex (Gast)


Lesenswert?

Hallo,

Das Problem hat sich gelöst. Ich hab das FoxBoard mal neu hochgefahren, 
danach hat es funktioniert. Muss wohl was am Bus verstellt gewesen sein 
oder so...

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.