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:
und so wird es wieder ,,zerlegt":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); }
Code:gM_srf = getValue(ADDRESS); gM_check = ((gM_srf & 0xff0000) >> 16); if(gM_check == 0) { srf10_l = (gM_srf & 0xffff); [...] }







Zitieren
Lesezeichen