04-10-2024 11:56 PM
I'm working on a program that communicates with the BME280 via i2c. This program has a task that resets the sensor, gets the calibration data, configures the registers, and collects data in forced mode. I force measurements at a rate of 11Hz. The oversampling value for each measurement is 3 and the IIR coefficient is 16. I have a delay of a little under 90ms between when I force a measurement and read the data registers, so there should be plenty of time for the measurement to complete. I am using FreeRTOS, however, so this delay can vary.
Before I read the data registers, I check the "status" register to see if the data is ready. If the "status" register isn't 0, I wait for 5ms and then I check it again. I am able to collect data for a few seconds before I read a value of 1 from the "measuring" bit of the status register. Once I read a value of 1, the "measuring" bit does not appear to return to 0 no matter how long I wait.
If I skip reading the "status" register, the data appears to be good and fluctuates as I change the temperature. I would prefer to use the "status" register though to make sure I am reading good data. What can I do to fix this bug?
04-25-2024 05:39 AM
Hi BenKarlPitch,
Thanks for your inquiry.
Have you used the official sensor API and examples of BME280 on Github(https://github.com/boschsensortec/BME280_SensorAPI) as they work well and are verified? If not, you can directly refer to them.