@RP6fahrer:
I2C_REG_ADC_ADC0_L ist nur eine Konstante, die ist in der RP6Control_I2CMasterLib.h als 23 definiert.
Du könntest also auch I2CTWI_readRegisters(10, 23, RP6data, 2); schreiben.
Damit liest du 2 Bytes, das erste ist der Low Wert von ADC0 (aus Register 23), der wird in RP6data[0] gespeichert.
Das 2. Byte ist der High Wert von ADC0 (aus Register 24), der wird in RP6data[1] gespeichert.
I2C_REG_ADC_ADC0_H braucht man nicht, weil das 2. Byte automatisch aus Register 24 gelesen wird, wenn man 2 Bytes einliest.
Der komplette adc0-Wert errechnet sich als: adc0 = Low Wert + (256 * High Wert), also:
adc0 = RP6data[0] + (RP6data[1] * 256);
Anstelle von *256 kann man auch achtmal nach links schieben: <<8
RP6data iat eine Variable.
Lesezeichen