Vorher waren alle als uint8_t deklariert. Es funktioniert mit lsb als uint8_t, msb als uint8_t und returnvar als uint32_t. Jetzt ist es deklariert mit lsb als uint8_t, msb als uint16_t und returnvar als uint32_t, damit funktioniert auch alles problemlos.
Dieser Ausschnitt sieht so aus:
Code:
uint32_t getValue(uint8_t adr)
{
uint8_t lsb_srf = 0;
uint16_t msb_srf = 0;
uint32_t returnvar = 0;
[herausfinden von msb/lsb (I²C) und returnvar]
return ((returnvar << 16) | (lsb_srf << 8) | msb_srf);
}
und so wird es wieder ,,zerlegt":
Code:
gM_srf = getValue(ADDRESS);
gM_check = ((gM_srf & 0xff0000) >> 16);
if(gM_check == 0)
{
srf10_l = (gM_srf & 0xffff);
[...]
}
Lesezeichen