So ich habe wie empfohlen den Kompass nun erstmal an die Base angeschlossen.
Hier mal mein Code (testweise nur für X Werte):
So das ganze funktioniert nun schonmal (zumindest bekommen ich erste WerteCode:void LSM303Init() { I2CTWI_transmitByte(MAG_ADDRESS, 0x3C); I2CTWI_transmitByte(MAG_ADDRESS, 0x02); I2CTWI_transmitByte(MAG_ADDRESS, 0x00); } int main(void) { initRobotBase(); I2CTWI_initMaster(400); // 400kHz I2CTWI_setTransmissionErrorHandler(I2C_transmissionError); setLEDs(0b111111); mSleep(500); setLEDs(0b000000); powerON(); LSM303Init(); PORTC &=~SCL; PORTC &=~SDA; DDRC &=~SDA; DDRC &=~SCL; unsigned char ACC_Data[6]; while(true) { task_I2CTWI(); // Call I2C Management routine task_RP6System(); I2CTWI_transmitByte(MAG_ADDRESS, 0x3C); I2CTWI_transmitByte(MAG_ADDRESS, OUT_X_H_M); ACC_Data[0] = I2CTWI_readByte(0x3D); I2CTWI_transmitByte(MAG_ADDRESS, 0x3C); I2CTWI_transmitByte(MAG_ADDRESS, OUT_X_L_M); ACC_Data[1] = I2CTWI_readByte(0x3D); writeString_P("--------------------------- \n"); writeString_P("X High: \n"); writeIntegerLength(ACC_Data[0], DEC, 10); writeString_P("\nX Low: \n"); writeIntegerLength(ACC_Data[1], DEC, 10); writeString_P("\n--------------------------- \n"); mSleep(5000); }).
für X High:
0000000000
X Low:
0000000032
Egal wie der Kompass geneigt ist es kommen immer die selben. (Bei Y Werten kommen ebenfalls die selben daten wie bei den x Werten)







Zitieren
Lesezeichen