diff --git a/lib/vendor/Maxim/MAX86150/max86150.c b/lib/vendor/Maxim/MAX86150/max86150.c index 203df693a4f8cbbbc06d992afee7803ec0693197..7af45af57c47717d70b404be86554d290b2425f7 100644 --- a/lib/vendor/Maxim/MAX86150/max86150.c +++ b/lib/vendor/Maxim/MAX86150/max86150.c @@ -667,8 +667,9 @@ uint8_t max86150_get_sample(uint32_t *red, uint32_t *ir, int32_t *ecg) 0 ); - *red = (data[0] << 16) | (data[1] << 8) | (data[2]); - *ir = (data[3] << 16) | (data[4] << 8) | (data[5]); + // According to datasheet MS bits of PPG have to be masked + *red = ((data[0] << 16) | (data[1] << 8) | (data[2])) & 0x7FFFF; + *ir = ((data[3] << 16) | (data[4] << 8) | (data[5])) & 0x7FFFF; *ecg = (data[6] << 16) | (data[7] << 8) | (data[8]); }