Fixed uart interrupt enable/disable
This commit is contained in:
@@ -659,6 +659,8 @@ int8_t uart_disable_interrupts(void)
|
||||
int8_t uart_enable_interrupts(void)
|
||||
{
|
||||
LL_LPUART_Enable(LPUART1);
|
||||
LL_LPUART_ClearFlag_IDLE(LPUART1);
|
||||
LL_LPUART_ClearFlag_NE(LPUART1);
|
||||
LL_LPUART_EnableIT_IDLE(LPUART1);
|
||||
LL_LPUART_EnableIT_RXNE(LPUART1);
|
||||
|
||||
|
||||
@@ -66,6 +66,8 @@ int8_t scd4x_read_measurement(uint16_t * co2, int16_t *temperature, uint16_t *re
|
||||
}*/
|
||||
|
||||
|
||||
// disable interrupts to prevent MODBUS/I2C conflict
|
||||
uart_disable_interrupts();
|
||||
// start measurement
|
||||
buffer[0] = SCD4X_READ_MEASUREMENT >> 8;
|
||||
buffer[1] = SCD4X_READ_MEASUREMENT & 0x00ff;
|
||||
@@ -80,6 +82,7 @@ int8_t scd4x_read_measurement(uint16_t * co2, int16_t *temperature, uint16_t *re
|
||||
uart_disable_interrupts();
|
||||
// read out
|
||||
result = i2c_receive(SCD4X_I2C_ADDRESS<<1, buffer, 9);
|
||||
uart_enable_interrupts();
|
||||
if (result != I2C_OK)
|
||||
{
|
||||
return SCD4X_ERROR;
|
||||
|
||||
@@ -23,6 +23,8 @@ int8_t sht4x_measure(int16_t *temperature, uint16_t *relative_humidity)
|
||||
uint8_t buffer[32];
|
||||
int result;
|
||||
|
||||
// disable interrupts
|
||||
uart_disable_interrupts();
|
||||
// start measurement
|
||||
buffer[0] = SHT4X_START_MEAS_HIGH_PRECISION;
|
||||
result = i2c_transmit(SHT4X_I2C_ADDRESS<<1, buffer, 1);
|
||||
@@ -31,11 +33,14 @@ int8_t sht4x_measure(int16_t *temperature, uint16_t *relative_humidity)
|
||||
if (result != I2C_OK) {
|
||||
return SHT4X_ERROR;
|
||||
}*/
|
||||
// enable interrupts while waiting
|
||||
uart_enable_interrupts();
|
||||
LL_mDelay(10); // 10 ms should be enough
|
||||
uart_disable_interrupts();
|
||||
// read out
|
||||
result = i2c_receive(SHT4X_I2C_ADDRESS<<1, buffer, 6);
|
||||
// enable interrupts again
|
||||
uart_enable_interrupts();
|
||||
if (result != I2C_OK) {
|
||||
return SHT4X_ERROR;
|
||||
}
|
||||
|
||||
Binary file not shown.
@@ -17,6 +17,8 @@ stm32l0xx_ll_lpuart.h:1233:22:LL_LPUART_SetDEAssertionTime 16 static
|
||||
stm32l0xx_ll_lpuart.h:1255:22:LL_LPUART_EnableDEMode 16 static
|
||||
stm32l0xx_ll_lpuart.h:1291:22:LL_LPUART_SetDESignalPolarity 16 static
|
||||
stm32l0xx_ll_lpuart.h:1400:26:LL_LPUART_IsActiveFlag_TXE 16 static
|
||||
stm32l0xx_ll_lpuart.h:1533:22:LL_LPUART_ClearFlag_NE 16 static
|
||||
stm32l0xx_ll_lpuart.h:1555:22:LL_LPUART_ClearFlag_IDLE 16 static
|
||||
stm32l0xx_ll_lpuart.h:1619:22:LL_LPUART_EnableIT_IDLE 16 static
|
||||
stm32l0xx_ll_lpuart.h:1631:22:LL_LPUART_EnableIT_RXNE 16 static
|
||||
stm32l0xx_ll_lpuart.h:1726:22:LL_LPUART_DisableIT_IDLE 16 static
|
||||
@@ -58,6 +60,6 @@ main.c:596:13:MX_GPIO_Init 32 static
|
||||
main.c:639:6:LPUART1_TX_Buffer 24 static,ignoring_inline_asm
|
||||
main.c:650:8:uart_disable_interrupts 8 static
|
||||
main.c:659:8:uart_enable_interrupts 8 static
|
||||
main.c:668:8:modbus_slave_callback 32 static
|
||||
main.c:787:8:modbus_transmit_function 16 static
|
||||
main.c:799:6:Error_Handler 8 static,ignoring_inline_asm
|
||||
main.c:670:8:modbus_slave_callback 32 static
|
||||
main.c:789:8:modbus_transmit_function 16 static
|
||||
main.c:801:6:Error_Handler 8 static,ignoring_inline_asm
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+4946
-4885
File diff suppressed because it is too large
Load Diff
+442
-438
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user