Nach langer Zeit habe ich nun endlich wieder Zeit gefunden meinen RP6 auszugraben und daran weiter zu machen ^^.
der Kompass ist nur auf der M32 Platine angeschlossen und dass auslesen funktioniert fast ohne probleme ;D.
Mein Problem ist, dass beim auslesen immer folgender Error kommt:
I2C ERROR - TWI STATE: 0x20
dieser wird durch folgenden Code verursacht:
Code:
void read_data_raw(vector *a, vector *m)
{
// read accelerometer values
I2CTWI_transmitByte(0x30, 0x30);
I2CTWI_transmitByte(0x30, OUT_X_L_A);
unsigned char axl = I2CTWI_readByte(0x31);
I2CTWI_transmitByte(0x30, OUT_X_H_A);
unsigned char axh = I2CTWI_readByte(0x31);
I2CTWI_transmitByte(0x30, OUT_Y_L_A);
unsigned char ayl = I2CTWI_readByte(0x31);
I2CTWI_transmitByte(0x30, OUT_Y_H_A);
unsigned char ayh = I2CTWI_readByte(0x31);
I2CTWI_transmitByte(0x30, OUT_Z_L_A);
unsigned char azl = I2CTWI_readByte(0x31);
I2CTWI_transmitByte(0x30, OUT_Z_H_A);
unsigned char azh = I2CTWI_readByte(0x31);
// read magnetometer values
I2CTWI_transmitByte(MAG_ADDRESS, 0x3C);
I2CTWI_transmitByte(MAG_ADDRESS, OUT_X_H_M);
unsigned char mxh = I2CTWI_readByte(0x3D);
//I2CTWI_transmitByte(MAG_ADDRESS, OUT_X_L_M);
unsigned char mxl = I2CTWI_readByte(0x3D);
//I2CTWI_transmitByte(MAG_ADDRESS, OUT_Y_H_M);
unsigned char myh = I2CTWI_readByte(0x3D);
//I2CTWI_transmitByte(MAG_ADDRESS, OUT_Y_L_M);
unsigned char myl = I2CTWI_readByte(0x3D);
//I2CTWI_transmitByte(MAG_ADDRESS, OUT_Z_H_M);
unsigned char mzh = I2CTWI_readByte(0x3D);
//I2CTWI_transmitByte(MAG_ADDRESS, OUT_Z_L_M);
unsigned char mzl = I2CTWI_readByte(0x3D);
a->x = axh << 8 | axl;
a->y = ayh << 8 | ayl;
a->z = azh << 8 | azl;
m->x = mxh << 8 | mxl;
m->y = myh << 8 | myl;
m->z = mzh << 8 | mzl;
}
//...
// in der main ist noch folgendes:
I2CTWI_initMaster(100); // muss ich diese zahl evtl höher machen?
I2CTWI_setRequestedDataReadyHandler(I2C_requestedDataReady);
I2CTWI_setTransmissionErrorHandler(I2C_transmissionError);
DDRC = 0;
PORTC = (1 << PC1) | (1 << PC0); // enable pull-ups on SDA and SCL, respectively
Danke schonmal im vorraus =)
Lesezeichen