alimentation function renamingi and minor cleanup

This commit is contained in:
Jasper Güldenstein 2020-11-15 15:00:18 +01:00
parent a7af1cad1e
commit ef3b6b03e2
3 changed files with 49 additions and 59 deletions

View file

@ -1,63 +1,53 @@
#include "Alimentation.h" #include "Alimentation.h"
void alimentation_init(void){ void ALIMENTATION_Init(void){
RCC -> CFGR |= (0x1<<15); RCC -> CFGR |= (0x1<<15);
RCC-> CFGR &= ~ (0x1<<14); RCC-> CFGR &= ~ (0x1<<14);
LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_ADC1); LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_ADC1);
LL_APB1_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOC); LL_APB1_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOC);
LL_GPIO_InitTypeDef pc2; LL_GPIO_InitTypeDef pc2;
LL_ADC_InitTypeDef adc; LL_ADC_InitTypeDef adc;
LL_ADC_REG_InitTypeDef adcReg; LL_ADC_REG_InitTypeDef adcReg;
LL_GPIO_StructInit(&pc2); LL_GPIO_StructInit(&pc2);
pc2.Pin = LL_GPIO_PIN_0; pc2.Pin = LL_GPIO_PIN_0;
pc2.Mode = LL_GPIO_MODE_ANALOG; pc2.Mode = LL_GPIO_MODE_ANALOG;
LL_GPIO_Init(GPIOC, &pc2); LL_GPIO_Init(GPIOC, &pc2);
adc.DataAlignment = LL_ADC_DATA_ALIGN_RIGHT;
adc.SequencersScanMode = LL_ADC_SEQ_SCAN_DISABLE;
LL_ADC_Init(ADC1, &adc);
adcReg.TriggerSource = LL_ADC_REG_TRIG_SOFTWARE ;
adcReg.SequencerLength = LL_ADC_REG_SEQ_SCAN_DISABLE;
adcReg.SequencerDiscont = LL_ADC_REG_SEQ_DISCONT_DISABLE;
adcReg.ContinuousMode = LL_ADC_REG_CONV_SINGLE;
adcReg.DMATransfer = LL_ADC_REG_DMA_TRANSFER_NONE;
adc.DataAlignment = LL_ADC_DATA_ALIGN_RIGHT; LL_ADC_REG_Init(ADC1, &adcReg);
adc.SequencersScanMode = LL_ADC_SEQ_SCAN_DISABLE; LL_ADC_Enable(ADC1);
LL_ADC_Init(ADC1, &adc); }
adcReg.TriggerSource = LL_ADC_REG_TRIG_SOFTWARE ; float ALIMENTATION_GetBatteryLevel(void){
adcReg.SequencerLength = LL_ADC_REG_SEQ_SCAN_DISABLE; float u2;
adcReg.SequencerDiscont = LL_ADC_REG_SEQ_DISCONT_DISABLE;
adcReg.ContinuousMode = LL_ADC_REG_CONV_SINGLE;
adcReg.DMATransfer = LL_ADC_REG_DMA_TRANSFER_NONE;
LL_ADC_REG_Init(ADC1, &adcReg);
/*LL_ADC_SetChannelSamplingTime(ADC2, LL_ADC_CHANNEL_10, LL_ADC_SAMPLINGTIME_1CYCLE_5);
LL_ADC_SetChannelSamplingTime(ADC2, LL_ADC_CHANNEL_11, LL_ADC_SAMPLINGTIME_1CYCLE_5);
*/
LL_ADC_Enable(ADC1);
//LL_ADC_EnableIT_EOS(ADC1);
//wait 0,2 µs, calibration is advised
//LL_ADC_StartCalibration(ADC1);
}
float u2;
unsigned int niv_batterie;
float battery_level; float battery_level;
float get_battery_level(void){ LL_ADC_REG_SetSequencerRanks(ADC1, LL_ADC_REG_RANK_1, LL_ADC_CHANNEL_12);
LL_ADC_REG_SetSequencerRanks(ADC1, LL_ADC_REG_RANK_1, LL_ADC_CHANNEL_12); LL_ADC_REG_StartConversionSWStart(ADC1);
LL_ADC_REG_StartConversionSWStart(ADC1); while (LL_ADC_IsActiveFlag_EOS(ADC1) != 1);
while (LL_ADC_IsActiveFlag_EOS(ADC1) != 1); battery_level = LL_ADC_REG_ReadConversionData12(ADC1);
battery_level = LL_ADC_REG_ReadConversionData12(ADC1); u2 = (battery_level*3.3)/4095.0;
u2 = (battery_level*3.3)/4095.0; float level = u2*13.0;
float level = u2*13.0; return level;
return level;
} }
int is_level_enough(void){ int ALIMENTATION_IsLevelEnough(void){
if (get_battery_level()<(0.8*12)){ if (ALIMENTATION_GetBatteryLevel()<(0.8*12)){
return 0; return 0;
}else{ }else{
return 1; return 1;
}
} }
}

View file

@ -18,9 +18,9 @@
Les fonctions qui gèrent les IO (ajout par rapport à l'activité 1) Les fonctions qui gèrent les IO (ajout par rapport à l'activité 1)
=======================================================================================*/ =======================================================================================*/
void alimentation_init(void); void ALIMENTATION_Init(void);
float get_battery_level(void); float ALIMENTATION_GetBatteryLevel(void);
int is_level_enough(void); int ALIMENTATION_IsLevelEnough(void);
#endif #endif

View file

@ -56,7 +56,7 @@ int main(void)
{ {
/* Configure the system clock to 72 MHz */ /* Configure the system clock to 72 MHz */
SystemClock_Config(); SystemClock_Config();
alimentation_init(); ALIMENTATION_Init();
accelero_init(); accelero_init();
RF_INPUT_Init(); RF_INPUT_Init();
DC_MOTOR_Init(); DC_MOTOR_Init();
@ -73,7 +73,7 @@ int main(void)
while (1) while (1)
{ {
if(CONTROL_LOOP_Flag){ if(CONTROL_LOOP_Flag){
battery_level_good = is_level_enough(); battery_level_good = ALIMENTATION_IsLevelEnough();
angle_roulis_good = accelero_angle_bon(); angle_roulis_good = accelero_angle_bon();
if(!angle_roulis_good){ if(!angle_roulis_good){