Hallo Zusammen (mal wieder ;)),
ich versuche gerade ein CMPS03 an einem LPC2148 über i2c zum laufen
zurbingen. Er liefert auch schon Daten zurrück, aber irgendwas scheint
beim Umwandeln in die Hecken zu gehen.
1 | int read_compass()
|
2 | {
|
3 | int value;
|
4 | data[0] = 0x02;
|
5 | Soft_I2C_Send (0xC0, data, 1);
|
6 | Soft_I2C_Read (0xC0, data, 2);
|
7 |
|
8 | value = data[0];
|
9 | value = value << 8;
|
10 | value += data[1];
|
11 | return value;
|
12 | }
|
Im register 2 und 3 liegen als WORD die Werte. Ausgeben möchte ich sie
mit:
1 | deg=read_compass();
|
2 | int2str(data,deg);
|
3 | LCD4_sendstr (7,1, data);
|
Er gibt mir Werte in abhängigkeit der Richtung aus, daher gehe ich davon
aus das das Modul funktioniert. Nur sind die Werte eben falsch( gehen
von 1000-9900 und nehmen nicht mit Drehung zu, sonder springen
wilkürlich) Daher gehe ich davon aus irgendwo high und low byte zu
verwechseln. Aber ich will den Fehler einfach nicht finden.