Aber wie genau meinst du das mit "allein in ein Byte"? Meinst du sowas wie "InOut=sensorBuf[29]"?
Wenn du die RP6Control_I2CMasterLib verändern willst, könntest du die Funktion getAllSensors() so ändern:
Code:
void getAllSensors(void)
{
I2CTWI_readRegisters(I2C_RP6_BASE_ADR, I2C_REG_POWER_LEFT, sensorBuf, 27);
mleft_power = sensorBuf[0];
mright_power = sensorBuf[1];
mleft_speed = sensorBuf[2];
mright_speed = sensorBuf[3];
mleft_des_speed = sensorBuf[4];
mright_des_speed = sensorBuf[5];
mleft_dist = sensorBuf[6] + (sensorBuf[7]<<8);
mright_dist = sensorBuf[8] + (sensorBuf[9]<<8);
adcLSL = sensorBuf[10] + (sensorBuf[11]<<8);
adcLSR = sensorBuf[12] + (sensorBuf[13]<<8);
adcMotorCurrentLeft = sensorBuf[14] + (sensorBuf[15]<<8);
adcMotorCurrentRight = sensorBuf[16] + (sensorBuf[17]<<8);
adcBat = sensorBuf[18] + (sensorBuf[19]<<8);
adc0 = sensorBuf[20] + (sensorBuf[21]<<8);
adc1 = sensorBuf[22] + (sensorBuf[23]<<8);
leds = sensorBuf[26];
}
Dann stehen die I/Os in der Variablen leds (global als uint8_t definieren!).
Dort steht ja dann so was wie 0100 (LED 2 an) !?
Genau.
Lesezeichen