ich bin bis jetzt so weit gekommen ACC LSM303DLH:
natürlich wurde hab ich alles definiert in config.h und def.h
hier auf seite 9 stehen alle addressen usw
mein problem:
i2c_getSixRawADC(LSM303DLH_ADDRESS ,0x28);
erhöht die adresse immer um eins pro schleife, es sollte aber immer die reg-adresse (0x28) erhöhen, da hier die werte ausgelesen werden (0x28, 0x29, 0x2A,...)
da getSixRawADC() wird auch zum auslesen vom gyro verwendet darum kann ichs nicht einfach umschreiben...
i denke ich bin da schon kurz vor der lösung.
kann mir da jemand helfen? eine einfache idee?
will nicht alles umschreiben
// ************************************************************************************************************
// I2C Accelerometer LSM303DLH
// ************************************************************************************************************
// I2C adress: 0x18 (7bit)
//
// ************************************************************************************************************
#if defined(LSM303DLH)
void ACC_init (){
delay(10);
i2c_writeReg(LSM303DLH_ADDRESS, 0x20, 0x27);//set CTRL_REG1_A register
delay(5);
i2c_writeReg(LSM303DLH_ADDRESS, 0x23, 0x40);//set CTRL_REG4_A register
acc_1G = 256;
}
void ACC_getADC () {
TWBR = ((16000000L / 400000L) - 16) / 2; // change the I2C clock rate to 400kHz, ADXL435 is ok with this speed
i2c_getSixRawADC(LSM303DLH_ADDRESS ,0x28);
ACC_ORIENTATION( - ((rawADC[0]<<8) | rawADC[1]) ,
((rawADC[2]<<8) | rawADC[3]) ,
((rawADC[4]<<8) | rawADC[5]) );
ACC_Common();
}
#endif
// I2C Accelerometer LSM303DLH
// ************************************************************************************************************
// I2C adress: 0x18 (7bit)
//
// ************************************************************************************************************
#if defined(LSM303DLH)
void ACC_init (){
delay(10);
i2c_writeReg(LSM303DLH_ADDRESS, 0x20, 0x27);//set CTRL_REG1_A register
delay(5);
i2c_writeReg(LSM303DLH_ADDRESS, 0x23, 0x40);//set CTRL_REG4_A register
acc_1G = 256;
}
void ACC_getADC () {
TWBR = ((16000000L / 400000L) - 16) / 2; // change the I2C clock rate to 400kHz, ADXL435 is ok with this speed
i2c_getSixRawADC(LSM303DLH_ADDRESS ,0x28);
ACC_ORIENTATION( - ((rawADC[0]<<8) | rawADC[1]) ,
((rawADC[2]<<8) | rawADC[3]) ,
((rawADC[4]<<8) | rawADC[5]) );
ACC_Common();
}
#endif
hier auf seite 9 stehen alle addressen usw
mein problem:
i2c_getSixRawADC(LSM303DLH_ADDRESS ,0x28);
erhöht die adresse immer um eins pro schleife, es sollte aber immer die reg-adresse (0x28) erhöhen, da hier die werte ausgelesen werden (0x28, 0x29, 0x2A,...)
da getSixRawADC() wird auch zum auslesen vom gyro verwendet darum kann ichs nicht einfach umschreiben...
i denke ich bin da schon kurz vor der lösung.
kann mir da jemand helfen? eine einfache idee?
will nicht alles umschreiben