Fixed UART interrupt disable/enable during sensor readout
This commit is contained in:
parent
62cfa66b80
commit
235ca259f1
@ -65,7 +65,8 @@ int8_t scd4x_read_measurement(uint16_t * co2, int16_t *temperature, uint16_t *re
|
|||||||
return SCD4X_ERROR;
|
return SCD4X_ERROR;
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
|
// disable interrupts to prevent MODBUS/I2C conflict
|
||||||
|
uart_disable_interrupts();
|
||||||
// start measurement
|
// start measurement
|
||||||
buffer[0] = SCD4X_READ_MEASUREMENT >> 8;
|
buffer[0] = SCD4X_READ_MEASUREMENT >> 8;
|
||||||
buffer[1] = SCD4X_READ_MEASUREMENT & 0x00ff;
|
buffer[1] = SCD4X_READ_MEASUREMENT & 0x00ff;
|
||||||
@ -75,11 +76,12 @@ int8_t scd4x_read_measurement(uint16_t * co2, int16_t *temperature, uint16_t *re
|
|||||||
/*if (result != I2C_OK) {
|
/*if (result != I2C_OK) {
|
||||||
return SCD4X_ERROR;
|
return SCD4X_ERROR;
|
||||||
}*/
|
}*/
|
||||||
uart_disable_interrupts();
|
|
||||||
LL_mDelay(1); // 10 ms should be enough
|
|
||||||
uart_enable_interrupts();
|
uart_enable_interrupts();
|
||||||
|
LL_mDelay(1); // 10 ms should be enough
|
||||||
|
uart_disable_interrupts();
|
||||||
// read out
|
// read out
|
||||||
result = i2c_receive(SCD4X_I2C_ADDRESS<<1, buffer, 9);
|
result = i2c_receive(SCD4X_I2C_ADDRESS<<1, buffer, 9);
|
||||||
|
uart_enable_interrupts();
|
||||||
if (result != I2C_OK)
|
if (result != I2C_OK)
|
||||||
{
|
{
|
||||||
return SCD4X_ERROR;
|
return SCD4X_ERROR;
|
||||||
|
@ -23,6 +23,8 @@ int8_t sht4x_measure(int16_t *temperature, uint16_t *relative_humidity)
|
|||||||
uint8_t buffer[32];
|
uint8_t buffer[32];
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
|
// disable interrupts to prevent modbus/i2c conflict
|
||||||
|
uart_disable_interrupts();
|
||||||
// start measurement
|
// start measurement
|
||||||
buffer[0] = SHT4X_START_MEAS_HIGH_PRECISION;
|
buffer[0] = SHT4X_START_MEAS_HIGH_PRECISION;
|
||||||
result = i2c_transmit(SHT4X_I2C_ADDRESS<<1, buffer, 1);
|
result = i2c_transmit(SHT4X_I2C_ADDRESS<<1, buffer, 1);
|
||||||
@ -31,11 +33,12 @@ int8_t sht4x_measure(int16_t *temperature, uint16_t *relative_humidity)
|
|||||||
if (result != I2C_OK) {
|
if (result != I2C_OK) {
|
||||||
return SHT4X_ERROR;
|
return SHT4X_ERROR;
|
||||||
}*/
|
}*/
|
||||||
uart_disable_interrupts();
|
|
||||||
LL_mDelay(10); // 10 ms should be enough
|
|
||||||
uart_enable_interrupts();
|
uart_enable_interrupts();
|
||||||
|
LL_mDelay(10); // 10 ms should be enough
|
||||||
|
uart_disable_interrupts();
|
||||||
// read out
|
// read out
|
||||||
result = i2c_receive(SHT4X_I2C_ADDRESS<<1, buffer, 6);
|
result = i2c_receive(SHT4X_I2C_ADDRESS<<1, buffer, 6);
|
||||||
|
uart_enable_interrupts();
|
||||||
if (result != I2C_OK) {
|
if (result != I2C_OK) {
|
||||||
return SHT4X_ERROR;
|
return SHT4X_ERROR;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user