From 134ff079fe692b49155e3f6d3fb4a72077d0c1a5 Mon Sep 17 00:00:00 2001 From: vezde Date: Fri, 14 Apr 2023 16:30:05 +0200 Subject: [PATCH] Batterie OK --- software/dumber3/Application/application.c | 28 +++-- software/dumber3/Application/config.h | 3 + software/dumber3/Core/Src/main.c | 2 +- software/dumber3/Dumber3.ioc | 117 +++++++++------------ 4 files changed, 77 insertions(+), 73 deletions(-) diff --git a/software/dumber3/Application/application.c b/software/dumber3/Application/application.c index 0aa2cc8..e6791c2 100644 --- a/software/dumber3/Application/application.c +++ b/software/dumber3/Application/application.c @@ -69,7 +69,7 @@ void LEDS_Tests(); void APPLICATION_MainThread(void* params); void APPLICATION_TimeoutThread(void* params); void APPLICATION_StateMachine(); -LEDS_State APPLICATION_BatteryLevel(uint16_t voltage, char inCharge); +LEDS_State APPLICATION_BatteryLevel(uint8_t voltage, APPLICATION_State state); void APPLICATION_PowerOff(); void APPLICATION_TransitionToNewState(APPLICATION_State new_state); @@ -85,7 +85,7 @@ void APPLICATION_Init(void) { /* Init de la partie RF / reception des messages */ XBEE_Init(); - //BATTERIE_Init(); + BATTERIE_Init(); MOTEURS_Init(); /* Create the task without using any dynamic memory allocation. */ @@ -231,15 +231,16 @@ void APPLICATION_StateMachine() { if (systemInfos.powerOffRequired) APPLICATION_PowerOff(); // system will halt here - if (systemInfos.inCharge) { + if ((systemInfos.inCharge) && (systemInfos.state != stateInCharge)) { APPLICATION_TransitionToNewState(stateInCharge); } if (systemInfos.batteryUpdate) { + ledState = APPLICATION_BatteryLevel(systemInfos.batteryVoltage, systemInfos.state); + if (ledState == leds_niveau_bat_0) APPLICATION_TransitionToNewState(stateLowBatDisable); else if (systemInfos.state==stateStartup) { - ledState = APPLICATION_BatteryLevel(systemInfos.batteryVoltage, systemInfos.inCharge); MESSAGE_SendMailbox(LEDS_Mailbox, MSG_ID_LED_ETAT, APPLICATION_Mailbox, (void*)&ledState); } } @@ -388,14 +389,29 @@ void APPLICATION_TransitionToNewState(APPLICATION_State new_state) { systemInfos.state = new_state; } -LEDS_State APPLICATION_BatteryLevel(uint16_t voltage, char inCharge) { +const uint8_t APPLICATION_NiveauBatteryNormal[5] = { + 0 +}; + +const uint8_t APPLICATION_NiveauBatteryCharge[5] = { + 0 +}; + +LEDS_State APPLICATION_BatteryLevel(uint8_t voltage, APPLICATION_State state) { LEDS_State ledState=leds_niveau_bat_0; + /* TODO: A faire + * Pour l'instant, testons les niveaux de batterie + */ + ledState = leds_niveau_bat_5; return ledState; } void APPLICATION_PowerOff() { - HAL_GPIO_WritePin(SHUTDOWN_GPIO_Port, SHUTDOWN_Pin, GPIO_PIN_RESET); + /* + * TODO: a decommenter quand le code sera debuggé + */ + //HAL_GPIO_WritePin(SHUTDOWN_GPIO_Port, SHUTDOWN_Pin, GPIO_PIN_RESET); while (1){ __WFE(); // Attente infinie que le regulateur se coupe. diff --git a/software/dumber3/Application/config.h b/software/dumber3/Application/config.h index 5835896..ca18c29 100644 --- a/software/dumber3/Application/config.h +++ b/software/dumber3/Application/config.h @@ -31,6 +31,9 @@ #define XBEE_TX_SEMAPHORE_WAIT 500 #define XBEE_RX_BUFFER_MAX_LENGTH 50 +#define BATTERY_EMPTY_LEVEL 128 +#define BATTERY_LOW_LEVEL 140 + /* * Revoir les délais : c'est en 100 ms, pas ms */ diff --git a/software/dumber3/Core/Src/main.c b/software/dumber3/Core/Src/main.c index 575ee4e..8f12367 100644 --- a/software/dumber3/Core/Src/main.c +++ b/software/dumber3/Core/Src/main.c @@ -649,7 +649,7 @@ static void MX_GPIO_Init(void) /*Configure GPIO pin : BUTTON_SENSE_Pin */ GPIO_InitStruct.Pin = BUTTON_SENSE_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; + GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(BUTTON_SENSE_GPIO_Port, &GPIO_InitStruct); diff --git a/software/dumber3/Dumber3.ioc b/software/dumber3/Dumber3.ioc index 22f821e..de6e099 100644 --- a/software/dumber3/Dumber3.ioc +++ b/software/dumber3/Dumber3.ioc @@ -5,17 +5,6 @@ ADC.SamplingTime=ADC_SAMPLETIME_160CYCLES_5 CAD.formats= CAD.pinconfig= CAD.provider= -Dma.LPUART1_TX.0.Direction=DMA_MEMORY_TO_PERIPH -Dma.LPUART1_TX.0.Instance=DMA1_Channel2 -Dma.LPUART1_TX.0.MemDataAlignment=DMA_MDATAALIGN_BYTE -Dma.LPUART1_TX.0.MemInc=DMA_MINC_ENABLE -Dma.LPUART1_TX.0.Mode=DMA_NORMAL -Dma.LPUART1_TX.0.PeriphDataAlignment=DMA_PDATAALIGN_BYTE -Dma.LPUART1_TX.0.PeriphInc=DMA_PINC_DISABLE -Dma.LPUART1_TX.0.Priority=DMA_PRIORITY_HIGH -Dma.LPUART1_TX.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority -Dma.Request0=LPUART1_TX -Dma.RequestsNb=1 FREERTOS.INCLUDE_pcTaskGetTaskName=1 FREERTOS.INCLUDE_xEventGroupSetBitFromISR=1 FREERTOS.INCLUDE_xTaskAbortDelay=1 @@ -38,61 +27,57 @@ LPUART1.WordLength=UART_WORDLENGTH_8B Mcu.CPN=STM32L071CBT3 Mcu.Family=STM32L0 Mcu.IP0=ADC -Mcu.IP1=DMA -Mcu.IP10=TIM22 -Mcu.IP2=FREERTOS -Mcu.IP3=LPUART1 -Mcu.IP4=NVIC -Mcu.IP5=RCC -Mcu.IP6=SYS -Mcu.IP7=TIM2 -Mcu.IP8=TIM3 -Mcu.IP9=TIM21 -Mcu.IPNb=11 +Mcu.IP1=FREERTOS +Mcu.IP2=LPUART1 +Mcu.IP3=NVIC +Mcu.IP4=RCC +Mcu.IP5=SYS +Mcu.IP6=TIM2 +Mcu.IP7=TIM3 +Mcu.IP8=TIM21 +Mcu.IPNb=9 Mcu.Name=STM32L071C(B-Z)Tx Mcu.Package=LQFP48 Mcu.Pin0=PA0 Mcu.Pin1=PA1 -Mcu.Pin10=PB11 -Mcu.Pin11=PB12 -Mcu.Pin12=PB13 -Mcu.Pin13=PB14 -Mcu.Pin14=PB15 -Mcu.Pin15=PA8 -Mcu.Pin16=PA9 -Mcu.Pin17=PA10 -Mcu.Pin18=PA11 -Mcu.Pin19=PA12 +Mcu.Pin10=PB12 +Mcu.Pin11=PB13 +Mcu.Pin12=PB14 +Mcu.Pin13=PB15 +Mcu.Pin14=PA8 +Mcu.Pin15=PA9 +Mcu.Pin16=PA10 +Mcu.Pin17=PA11 +Mcu.Pin18=PA12 +Mcu.Pin19=PA13 Mcu.Pin2=PA2 -Mcu.Pin20=PA13 -Mcu.Pin21=PA14 -Mcu.Pin22=PA15 -Mcu.Pin23=PB3 -Mcu.Pin24=PB4 -Mcu.Pin25=PB6 -Mcu.Pin26=PB7 -Mcu.Pin27=PB8 -Mcu.Pin28=PB9 -Mcu.Pin29=VP_FREERTOS_VS_CMSIS_V2 -Mcu.Pin3=PA4 -Mcu.Pin30=VP_SYS_VS_tim6 -Mcu.Pin31=VP_TIM2_VS_ClockSourceINT -Mcu.Pin32=VP_TIM3_VS_ClockSourceINT -Mcu.Pin33=VP_TIM21_VS_ClockSourceINT -Mcu.Pin4=PA5 -Mcu.Pin5=PA6 -Mcu.Pin6=PA7 -Mcu.Pin7=PB0 -Mcu.Pin8=PB1 -Mcu.Pin9=PB10 -Mcu.PinsNb=34 +Mcu.Pin20=PA14 +Mcu.Pin21=PA15 +Mcu.Pin22=PB3 +Mcu.Pin23=PB4 +Mcu.Pin24=PB6 +Mcu.Pin25=PB7 +Mcu.Pin26=PB8 +Mcu.Pin27=PB9 +Mcu.Pin28=VP_FREERTOS_VS_CMSIS_V2 +Mcu.Pin29=VP_SYS_VS_tim6 +Mcu.Pin3=PA5 +Mcu.Pin30=VP_TIM2_VS_ClockSourceINT +Mcu.Pin31=VP_TIM3_VS_ClockSourceINT +Mcu.Pin32=VP_TIM21_VS_ClockSourceINT +Mcu.Pin4=PA6 +Mcu.Pin5=PA7 +Mcu.Pin6=PB0 +Mcu.Pin7=PB1 +Mcu.Pin8=PB10 +Mcu.Pin9=PB11 +Mcu.PinsNb=33 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32L071CBTx MxCube.Version=6.7.0 MxDb.Version=DB.6.0.70 NVIC.ADC1_COMP_IRQn=true\:3\:0\:false\:false\:true\:true\:true\:true\:true -NVIC.DMA1_Channel2_3_IRQn=true\:3\:0\:true\:false\:true\:true\:false\:true\:true NVIC.EXTI2_3_IRQn=true\:3\:0\:false\:false\:true\:true\:true\:true\:true NVIC.EXTI4_15_IRQn=true\:3\:0\:false\:false\:true\:true\:true\:true\:true NVIC.ForceEnableDMAVector=true @@ -143,9 +128,6 @@ PA2.GPIOParameters=GPIO_Label PA2.GPIO_Label=ENC_PHA_DROIT PA2.Locked=true PA2.Signal=S_TIM21_CH1 -PA4.GPIOParameters=GPIO_Label -PA4.GPIO_Label=ENC_PHB_DROIT -PA4.Signal=S_TIM22_ETR PA5.GPIOParameters=GPIO_Label PA5.GPIO_Label=ENC_PHB_GAUCHE PA5.Locked=true @@ -209,8 +191,9 @@ PB15.GPIO_Label=SHUTDOWN_ENCODERS PB15.Locked=true PB15.PinState=GPIO_PIN_SET PB15.Signal=GPIO_Output -PB3.GPIOParameters=GPIO_Label +PB3.GPIOParameters=GPIO_Label,GPIO_ModeDefaultEXTI PB3.GPIO_Label=BUTTON_SENSE +PB3.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING PB3.Locked=true PB3.Signal=GPXTI3 PB4.GPIOParameters=GPIO_Label,GPIO_ModeDefaultEXTI @@ -264,7 +247,7 @@ ProjectManager.StackSize=0x200 ProjectManager.TargetToolchain=STM32CubeIDE ProjectManager.ToolChainLocation= ProjectManager.UnderRoot=true -ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_LPUART1_UART_Init-LPUART1-false-HAL-true,5-MX_TIM2_Init-TIM2-false-HAL-true,6-MX_TIM3_Init-TIM3-false-HAL-true,7-MX_TIM21_Init-TIM21-false-HAL-true,8-MX_ADC_Init-ADC-false-HAL-true,9-MX_TIM22_Init-TIM22-false-HAL-true +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_LPUART1_UART_Init-LPUART1-false-HAL-true,4-MX_TIM2_Init-TIM2-false-HAL-true,5-MX_TIM3_Init-TIM3-false-HAL-true,6-MX_TIM21_Init-TIM21-false-HAL-true,7-MX_ADC_Init-ADC-false-HAL-true RCC.ADCFreq_Value=4000000 RCC.AHBFreq_Value=6000000 RCC.APB1Freq_Value=6000000 @@ -306,8 +289,6 @@ SH.GPXTI4.0=GPIO_EXTI4 SH.GPXTI4.ConfNb=1 SH.S_TIM21_CH1.0=TIM21_CH1,PWM_Input_1 SH.S_TIM21_CH1.ConfNb=1 -SH.S_TIM22_ETR.0=TIM22_ETR,ClockSourceETR_Mode2 -SH.S_TIM22_ETR.ConfNb=1 SH.S_TIM2_CH1.0=TIM2_CH1,PWM_Input_1 SH.S_TIM2_CH1.ConfNb=1 SH.S_TIM3_CH1.0=TIM3_CH1,PWM Generation1 CH1 @@ -318,10 +299,14 @@ SH.S_TIM3_CH3.0=TIM3_CH3,PWM Generation3 CH3 SH.S_TIM3_CH3.ConfNb=1 SH.S_TIM3_CH4.0=TIM3_CH4,PWM Generation4 CH4 SH.S_TIM3_CH4.ConfNb=1 -TIM2.IPParameters=Prescaler -TIM2.Prescaler=9 -TIM21.IPParameters=Prescaler -TIM21.Prescaler=9 +TIM2.ICFilter_1=3 +TIM2.ICFilter_2=3 +TIM2.IPParameters=Prescaler,ICFilter_1,ICFilter_2 +TIM2.Prescaler=0 +TIM21.ICFilter_1=3 +TIM21.ICFilter_2=3 +TIM21.IPParameters=Prescaler,ICFilter_1,ICFilter_2 +TIM21.Prescaler=0 TIM3.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1 TIM3.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2 TIM3.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3