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