Batterie OK

This commit is contained in:
vezde 2023-04-14 16:30:05 +02:00
parent 23eac89c23
commit 134ff079fe
4 changed files with 77 additions and 73 deletions

View file

@ -69,7 +69,7 @@ void LEDS_Tests();
void APPLICATION_MainThread(void* params); void APPLICATION_MainThread(void* params);
void APPLICATION_TimeoutThread(void* params); void APPLICATION_TimeoutThread(void* params);
void APPLICATION_StateMachine(); 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_PowerOff();
void APPLICATION_TransitionToNewState(APPLICATION_State new_state); void APPLICATION_TransitionToNewState(APPLICATION_State new_state);
@ -85,7 +85,7 @@ void APPLICATION_Init(void) {
/* Init de la partie RF / reception des messages */ /* Init de la partie RF / reception des messages */
XBEE_Init(); XBEE_Init();
//BATTERIE_Init(); BATTERIE_Init();
MOTEURS_Init(); MOTEURS_Init();
/* Create the task without using any dynamic memory allocation. */ /* Create the task without using any dynamic memory allocation. */
@ -231,15 +231,16 @@ void APPLICATION_StateMachine() {
if (systemInfos.powerOffRequired) if (systemInfos.powerOffRequired)
APPLICATION_PowerOff(); // system will halt here APPLICATION_PowerOff(); // system will halt here
if (systemInfos.inCharge) { if ((systemInfos.inCharge) && (systemInfos.state != stateInCharge)) {
APPLICATION_TransitionToNewState(stateInCharge); APPLICATION_TransitionToNewState(stateInCharge);
} }
if (systemInfos.batteryUpdate) { if (systemInfos.batteryUpdate) {
ledState = APPLICATION_BatteryLevel(systemInfos.batteryVoltage, systemInfos.state);
if (ledState == leds_niveau_bat_0) if (ledState == leds_niveau_bat_0)
APPLICATION_TransitionToNewState(stateLowBatDisable); APPLICATION_TransitionToNewState(stateLowBatDisable);
else if (systemInfos.state==stateStartup) { else if (systemInfos.state==stateStartup) {
ledState = APPLICATION_BatteryLevel(systemInfos.batteryVoltage, systemInfos.inCharge);
MESSAGE_SendMailbox(LEDS_Mailbox, MSG_ID_LED_ETAT, APPLICATION_Mailbox, (void*)&ledState); 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; 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; 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; return ledState;
} }
void APPLICATION_PowerOff() { 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){ while (1){
__WFE(); // Attente infinie que le regulateur se coupe. __WFE(); // Attente infinie que le regulateur se coupe.

View file

@ -31,6 +31,9 @@
#define XBEE_TX_SEMAPHORE_WAIT 500 #define XBEE_TX_SEMAPHORE_WAIT 500
#define XBEE_RX_BUFFER_MAX_LENGTH 50 #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 * Revoir les délais : c'est en 100 ms, pas ms
*/ */

View file

@ -649,7 +649,7 @@ static void MX_GPIO_Init(void)
/*Configure GPIO pin : BUTTON_SENSE_Pin */ /*Configure GPIO pin : BUTTON_SENSE_Pin */
GPIO_InitStruct.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; GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(BUTTON_SENSE_GPIO_Port, &GPIO_InitStruct); HAL_GPIO_Init(BUTTON_SENSE_GPIO_Port, &GPIO_InitStruct);

View file

@ -5,17 +5,6 @@ ADC.SamplingTime=ADC_SAMPLETIME_160CYCLES_5
CAD.formats= CAD.formats=
CAD.pinconfig= CAD.pinconfig=
CAD.provider= 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_pcTaskGetTaskName=1
FREERTOS.INCLUDE_xEventGroupSetBitFromISR=1 FREERTOS.INCLUDE_xEventGroupSetBitFromISR=1
FREERTOS.INCLUDE_xTaskAbortDelay=1 FREERTOS.INCLUDE_xTaskAbortDelay=1
@ -38,61 +27,57 @@ LPUART1.WordLength=UART_WORDLENGTH_8B
Mcu.CPN=STM32L071CBT3 Mcu.CPN=STM32L071CBT3
Mcu.Family=STM32L0 Mcu.Family=STM32L0
Mcu.IP0=ADC Mcu.IP0=ADC
Mcu.IP1=DMA Mcu.IP1=FREERTOS
Mcu.IP10=TIM22 Mcu.IP2=LPUART1
Mcu.IP2=FREERTOS Mcu.IP3=NVIC
Mcu.IP3=LPUART1 Mcu.IP4=RCC
Mcu.IP4=NVIC Mcu.IP5=SYS
Mcu.IP5=RCC Mcu.IP6=TIM2
Mcu.IP6=SYS Mcu.IP7=TIM3
Mcu.IP7=TIM2 Mcu.IP8=TIM21
Mcu.IP8=TIM3 Mcu.IPNb=9
Mcu.IP9=TIM21
Mcu.IPNb=11
Mcu.Name=STM32L071C(B-Z)Tx Mcu.Name=STM32L071C(B-Z)Tx
Mcu.Package=LQFP48 Mcu.Package=LQFP48
Mcu.Pin0=PA0 Mcu.Pin0=PA0
Mcu.Pin1=PA1 Mcu.Pin1=PA1
Mcu.Pin10=PB11 Mcu.Pin10=PB12
Mcu.Pin11=PB12 Mcu.Pin11=PB13
Mcu.Pin12=PB13 Mcu.Pin12=PB14
Mcu.Pin13=PB14 Mcu.Pin13=PB15
Mcu.Pin14=PB15 Mcu.Pin14=PA8
Mcu.Pin15=PA8 Mcu.Pin15=PA9
Mcu.Pin16=PA9 Mcu.Pin16=PA10
Mcu.Pin17=PA10 Mcu.Pin17=PA11
Mcu.Pin18=PA11 Mcu.Pin18=PA12
Mcu.Pin19=PA12 Mcu.Pin19=PA13
Mcu.Pin2=PA2 Mcu.Pin2=PA2
Mcu.Pin20=PA13 Mcu.Pin20=PA14
Mcu.Pin21=PA14 Mcu.Pin21=PA15
Mcu.Pin22=PA15 Mcu.Pin22=PB3
Mcu.Pin23=PB3 Mcu.Pin23=PB4
Mcu.Pin24=PB4 Mcu.Pin24=PB6
Mcu.Pin25=PB6 Mcu.Pin25=PB7
Mcu.Pin26=PB7 Mcu.Pin26=PB8
Mcu.Pin27=PB8 Mcu.Pin27=PB9
Mcu.Pin28=PB9 Mcu.Pin28=VP_FREERTOS_VS_CMSIS_V2
Mcu.Pin29=VP_FREERTOS_VS_CMSIS_V2 Mcu.Pin29=VP_SYS_VS_tim6
Mcu.Pin3=PA4 Mcu.Pin3=PA5
Mcu.Pin30=VP_SYS_VS_tim6 Mcu.Pin30=VP_TIM2_VS_ClockSourceINT
Mcu.Pin31=VP_TIM2_VS_ClockSourceINT Mcu.Pin31=VP_TIM3_VS_ClockSourceINT
Mcu.Pin32=VP_TIM3_VS_ClockSourceINT Mcu.Pin32=VP_TIM21_VS_ClockSourceINT
Mcu.Pin33=VP_TIM21_VS_ClockSourceINT Mcu.Pin4=PA6
Mcu.Pin4=PA5 Mcu.Pin5=PA7
Mcu.Pin5=PA6 Mcu.Pin6=PB0
Mcu.Pin6=PA7 Mcu.Pin7=PB1
Mcu.Pin7=PB0 Mcu.Pin8=PB10
Mcu.Pin8=PB1 Mcu.Pin9=PB11
Mcu.Pin9=PB10 Mcu.PinsNb=33
Mcu.PinsNb=34
Mcu.ThirdPartyNb=0 Mcu.ThirdPartyNb=0
Mcu.UserConstants= Mcu.UserConstants=
Mcu.UserName=STM32L071CBTx Mcu.UserName=STM32L071CBTx
MxCube.Version=6.7.0 MxCube.Version=6.7.0
MxDb.Version=DB.6.0.70 MxDb.Version=DB.6.0.70
NVIC.ADC1_COMP_IRQn=true\:3\:0\:false\:false\:true\:true\:true\:true\:true 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.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.EXTI4_15_IRQn=true\:3\:0\:false\:false\:true\:true\:true\:true\:true
NVIC.ForceEnableDMAVector=true NVIC.ForceEnableDMAVector=true
@ -143,9 +128,6 @@ PA2.GPIOParameters=GPIO_Label
PA2.GPIO_Label=ENC_PHA_DROIT PA2.GPIO_Label=ENC_PHA_DROIT
PA2.Locked=true PA2.Locked=true
PA2.Signal=S_TIM21_CH1 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.GPIOParameters=GPIO_Label
PA5.GPIO_Label=ENC_PHB_GAUCHE PA5.GPIO_Label=ENC_PHB_GAUCHE
PA5.Locked=true PA5.Locked=true
@ -209,8 +191,9 @@ PB15.GPIO_Label=SHUTDOWN_ENCODERS
PB15.Locked=true PB15.Locked=true
PB15.PinState=GPIO_PIN_SET PB15.PinState=GPIO_PIN_SET
PB15.Signal=GPIO_Output PB15.Signal=GPIO_Output
PB3.GPIOParameters=GPIO_Label PB3.GPIOParameters=GPIO_Label,GPIO_ModeDefaultEXTI
PB3.GPIO_Label=BUTTON_SENSE PB3.GPIO_Label=BUTTON_SENSE
PB3.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING
PB3.Locked=true PB3.Locked=true
PB3.Signal=GPXTI3 PB3.Signal=GPXTI3
PB4.GPIOParameters=GPIO_Label,GPIO_ModeDefaultEXTI PB4.GPIOParameters=GPIO_Label,GPIO_ModeDefaultEXTI
@ -264,7 +247,7 @@ ProjectManager.StackSize=0x200
ProjectManager.TargetToolchain=STM32CubeIDE ProjectManager.TargetToolchain=STM32CubeIDE
ProjectManager.ToolChainLocation= ProjectManager.ToolChainLocation=
ProjectManager.UnderRoot=true 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.ADCFreq_Value=4000000
RCC.AHBFreq_Value=6000000 RCC.AHBFreq_Value=6000000
RCC.APB1Freq_Value=6000000 RCC.APB1Freq_Value=6000000
@ -306,8 +289,6 @@ SH.GPXTI4.0=GPIO_EXTI4
SH.GPXTI4.ConfNb=1 SH.GPXTI4.ConfNb=1
SH.S_TIM21_CH1.0=TIM21_CH1,PWM_Input_1 SH.S_TIM21_CH1.0=TIM21_CH1,PWM_Input_1
SH.S_TIM21_CH1.ConfNb=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.0=TIM2_CH1,PWM_Input_1
SH.S_TIM2_CH1.ConfNb=1 SH.S_TIM2_CH1.ConfNb=1
SH.S_TIM3_CH1.0=TIM3_CH1,PWM Generation1 CH1 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_CH3.ConfNb=1
SH.S_TIM3_CH4.0=TIM3_CH4,PWM Generation4 CH4 SH.S_TIM3_CH4.0=TIM3_CH4,PWM Generation4 CH4
SH.S_TIM3_CH4.ConfNb=1 SH.S_TIM3_CH4.ConfNb=1
TIM2.IPParameters=Prescaler TIM2.ICFilter_1=3
TIM2.Prescaler=9 TIM2.ICFilter_2=3
TIM21.IPParameters=Prescaler TIM2.IPParameters=Prescaler,ICFilter_1,ICFilter_2
TIM21.Prescaler=9 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\ Generation1\ CH1=TIM_CHANNEL_1
TIM3.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2 TIM3.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
TIM3.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3 TIM3.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3