Also,
jetzt habe ich das ganze mal über die defines gemacht:
Code:#ifndef LSM303 #define LSM303 #define ACC_ADDRESS (0x30) #define MAG_ADDRESS (0x3C) #define CTRL_REG1_A (0x20) #define CTRL_REG2_A (0x21) #define CTRL_REG3_A (0x22) #define CTRL_REG4_A (0x23) #define CTRL_REG5_A (0x24) #define HP_FILTER_RESET_A (0x25) #define REFERENCE_A (0x26) #define STATUS_REG_A (0x27) #define OUT_X_L_A (0x28) #define OUT_X_H_A (0x29) #define OUT_Y_L_A (0x2A) #define OUT_Y_H_A (0x2B) #define OUT_Z_L_A (0x2C) #define OUT_Z_H_A (0x2D) #define INT1_CFG_A (0x30) #define INT1_SOURCE_A (0x31) #define INT1_THS_A (0x32) #define INT1_DURATION_A (0x33) #define INT2_CFG_A (0x34) #define INT2_SOURCE_A (0x35) #define INT2_THS_A (0x36) #define INT2_DURATION_A (0x37) #define CRA_REG_M (0x00) #define CRB_REG_M (0x01) #define MR_REG_M (0x02) #define OUT_X_H_M (0x03) #define OUT_X_L_M (0x04) #define OUT_Y_H_M (0x05) #define OUT_Y_L_M (0x06) #define OUT_Z_H_M (0x07) #define OUT_Z_L_M (0x08) #define SR_REG_M (0x09) #define IRA_REG_M (0x0A) #define IRB_REG_M (0x0B) #define IRC_REG_M (0x0C) ////////////////////////////////////// void LSM303Init() { //enable magnetometer i2c_start(); i2c_write_byte(0x3C); // (MAG_ADDRESS) i2c_write_byte(0x02); // MR_REG_M i2c_write_byte(0x00); i2c_stop(); } #endif
und in der Main versuche ich dann die Daten so zu lesen:
Code:.... unsigned char Kompass_Data[6]; LSM303Init(); ..... i2c_start(); i2c_write_byte(0x3C); i2c_write_byte(OUT_X_H_M); // Select register OUT_X_H_M i2c_start(); i2c_write_byte(0x3D); Kompass_Data[0] = i2c_read_byte(); Kompass_Data[1] = i2c_read_byte(); Kompass_Data[2] = i2c_read_byte(); Kompass_Data[3] = i2c_read_byte(); Kompass_Data[4] = i2c_read_byte(); Kompass_Data[5] = i2c_read_last_byte(); i2c_stop();
Doch mein Problem hat sich dadurch immer noch nicht gelöst.
er belibt wie davor in dieser Zeile beim ausführen hängen:
i2c_write_byte(0x3C);
Ich habe aber keine Compiler fehler oder ähnliches.







Zitieren

Lesezeichen