1. Die Funktion:
Code:
uint8_t read_IR_value(void)
{
// uint8_t temp = 0;
I2CTWI_transmitByte(I2C_RP6_BASE_ADR, 30); // Start with register 30
I2CTWI_readBytes(I2C_RP6_BASE_ADR, temp_IR, 1);
return temp;
}
... tut nicht das, was sie soll.
Wenn du sie im Programm mit temp = read_IR_value(); aufrufst, wird von der Funktion nicht der IR-Sensor-Wert zurückgegeben, sondern der Wert der (globalen) Variablen temp.
Allerdings wird der IR-Sensor-Wert in der (ebenfalls globalen) Variablen temp_IR gespeichert, die im Programm als Array definiert ist.
temp_IR[0] wird von dir aber nicht weiter benutzt.
Die Funktion müßte so aussehen:
Code:
uint8_t read_IR_value(void)
{
uint8_t tmp = 0;
I2CTWI_transmitByte(I2C_RP6_BASE_ADR, 30); // Start with register 30
I2CTWI_readBytes(I2C_RP6_BASE_ADR, tmp, 1);
return tmp;
}
Dann kriegst du mit temp = read_IR_value(); den IR-Sensor-Wert in temp.