diff --git a/doc/eclipse_debugger_launch/ParaTNC-STM32F100.launch b/doc/eclipse_debugger_launch/ParaTNC-STM32F100.launch index c72bebe..bfe7434 100644 --- a/doc/eclipse_debugger_launch/ParaTNC-STM32F100.launch +++ b/doc/eclipse_debugger_launch/ParaTNC-STM32F100.launch @@ -47,10 +47,10 @@ - + - + diff --git a/include/main.h b/include/main.h index 0e52ecb..81a8721 100644 --- a/include/main.h +++ b/include/main.h @@ -5,8 +5,8 @@ #include "drivers/serial.h" #include "config_data.h" -#define SW_VER "EA00" -#define SW_DATE "24092021" +#define SW_VER "EA01" +#define SW_DATE "28092021" #define SYSTICK_TICKS_PER_SECONDS 100 #define SYSTICK_TICKS_PERIOD 10 diff --git a/include/rte_wx.h b/include/rte_wx.h index 34c104b..948a44d 100644 --- a/include/rte_wx.h +++ b/include/rte_wx.h @@ -52,7 +52,7 @@ extern uint8_t rte_wx_winddirection_it; extern uint16_t rte_wx_winddirection_last; extern uint16_t rte_wx_average_windspeed; extern uint16_t rte_wx_max_windspeed; -extern uint16_t rte_wx_average_winddirection; +extern int16_t rte_wx_average_winddirection; extern int8_t rte_wx_humidity, rte_wx_humidity_valid; diff --git a/include/station_config_target_hw.h b/include/station_config_target_hw.h index 5067abd..d785096 100644 --- a/include/station_config_target_hw.h +++ b/include/station_config_target_hw.h @@ -11,7 +11,7 @@ //#define PARATNC_HWREV_A //#define PARATNC_HWREV_B //#define PARATNC_HWREV_C -#define PARAMETEO +//#define PARAMETEO #ifdef PARAMETEO // those defines and an undef are only required for shitty Eclipse indexer to see anything from STM32L471xx target diff --git a/src/pwr_save.c b/src/pwr_save.c index 0b53ece..b569695 100644 --- a/src/pwr_save.c +++ b/src/pwr_save.c @@ -122,6 +122,8 @@ void pwr_save_init(config_data_powersave_mode_t mode) { */ void pwr_save_enter_stop2(void) { + analog_anemometer_deinit(); + // clear previous low power mode selection PWR->CR1 &= (0xFFFFFFFF ^ PWR_CR1_LPMS_Msk); diff --git a/src/pwr_switch.c b/src/pwr_switch.c index 33af4fc..6cc8196 100644 --- a/src/pwr_switch.c +++ b/src/pwr_switch.c @@ -13,6 +13,7 @@ #include "wx_handler.h" #include "io.h" #include "pwr_save.h" +#include "delay.h" #ifdef STM32F10X_MD_VL diff --git a/src/rte_wx.c b/src/rte_wx.c index edc1ee9..56a3f9b 100644 --- a/src/rte_wx.c +++ b/src/rte_wx.c @@ -28,7 +28,7 @@ uint8_t rte_wx_winddirection_it = 0; uint16_t rte_wx_winddirection_last = 0; uint16_t rte_wx_average_windspeed = 0; uint16_t rte_wx_max_windspeed = 0; -uint16_t rte_wx_average_winddirection = 0; +int16_t rte_wx_average_winddirection = 0; int8_t rte_wx_humidity = 0, rte_wx_humidity_valid = 0; diff --git a/system/include/drivers/analog_anemometer.h b/system/include/drivers/analog_anemometer.h index b8436b5..0de7cc9 100644 --- a/system/include/drivers/analog_anemometer.h +++ b/system/include/drivers/analog_anemometer.h @@ -37,7 +37,7 @@ void analog_anemometer_init( uint16_t pulses_per_meter_second, uint8_t anemometer_lower_boundary, uint8_t anemometer_upper_boundary, uint8_t direction_polarity); - +void analog_anemometer_deinit(void); void analog_anemometer_timer_irq(void); void analog_anemometer_dma_irq(void); uint32_t analog_anemometer_get_ms_from_pulse(uint16_t inter_pulse_time); diff --git a/system/src/drivers/analog_anemometer.c b/system/src/drivers/analog_anemometer.c index 6f4af20..8957ed4 100644 --- a/system/src/drivers/analog_anemometer.c +++ b/system/src/drivers/analog_anemometer.c @@ -329,6 +329,18 @@ void analog_anemometer_init(uint16_t pulses_per_meter_second, uint8_t anemometer return; } +void analog_anemometer_deinit(void) { +#ifdef STM32L471xx + LL_DMA_DisableIT_TC(DMA1, LL_DMA_CHANNEL_5); + + LL_DMA_DisableChannel(DMA1, LL_DMA_CHANNEL_5); + + LL_TIM_DisableCounter(TIM4); + + LL_TIM_DisableCounter(TIM3); +#endif +} + void analog_anemometer_timer_irq(void) { analog_anemometer_timer_has_been_fired = 1; }