With this change, I could make the WMP work:
Code: Select all
void i2c_rep_start(uint8_t address) {
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO); // send STOP condition
delayMicroseconds(50); // wait for a reliable stop detection of the WMP
TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN); // send REAPEAT START condition
waitTransmissionI2C(); // wait until transmission completed
checkStatusI2C(); // check value of TWI Status Register
TWDR = address; // send device address
TWCR = (1<<TWINT) | (1<<TWEN);
waitTransmissionI2C(); // wail until transmission completed
checkStatusI2C(); // check value of TWI Status Register
}
It looks as if there is a software I2C solution working.
Additionally, my WMP seemed to be confused by the 400kHz communication with the BMA020. I set all(!) I2C communication to 100kHz and now I can see the signals working in the config tool.
Maybe this may help to activate some other WMP types that refused to cooperate.