mbed-os github
Dependencies: ADS1015 Faulhaber HTU21D_mod MS5837_potless Sensor_Head_RevB_3 USBDevice_dfu Utilsdfu beep
Fork of ARNSRS_testDFU by
Diff: main.cpp
- Revision:
- 61:c3391376ca21
- Parent:
- 60:e2922f9e309c
diff -r e2922f9e309c -r c3391376ca21 main.cpp --- a/main.cpp Sat Jun 30 01:18:40 2018 +0000 +++ b/main.cpp Thu Jul 05 08:47:11 2018 +0000 @@ -194,7 +194,20 @@ void sleepDemande() { + + OUTPUT("tentative effacage \r\n"); + UTILS::EffacePage(2, 30, 1); + OUTPUT("effacage termine \r\n"); + + UTILS::Write(DFU_ADDR, 0xBABEFACE); + OUTPUT("ecriture babeface realisee\r\n"); +while(1); + wait(2); + //debug + + buzzer.beep(1000,0.1); + /* wait_ms(100); buzzer.beep(1000,0.1); wait_ms(100); @@ -202,18 +215,25 @@ wait_ms(100); buzzer.beep(1000,0.1); wait(1); + */ + + OUTPUT("sleep demande\r\n"); Commande_IHM = 1; IHM("<0 0 ;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;%d>\r\n", Commande_IHM); FLAG_DISPLAY = false; Commande_IHM = 0; - // mise à zero UART IHM pour éviter son redémarrage intempestif (le tx suffirait) - HAL_PWREx_EnableGPIOPullDown(PWR_GPIO_C, PWR_GPIO_BIT_4); - HAL_PWREx_EnableGPIOPullDown(PWR_GPIO_C, PWR_GPIO_BIT_5); + wait(1); + OUTPUT("extinction ecran demande\r\n"); - E5V = 0; - UTILS::EffacePage(2, 29, 1); - UTILS::Write(DFU_ADDR, 0xBABEFACE); + // mise à zero UART IHM pour éviter son redémarrage intempestif (le tx suffirait) + HAL_PWREx_EnablePullUpPullDownConfig() ; + OUTPUT("Enable pulldownconfig fait \r\n"); + HAL_PWREx_EnableGPIOPullDown(PWR_GPIO_C, PWR_GPIO_BIT_4); + OUTPUT("bit 4 pulldown fait \r\n"); + HAL_PWREx_EnableGPIOPullDown(PWR_GPIO_C, PWR_GPIO_BIT_5); + OUTPUT("bit 5 pulldown fait \r\n"); + //Mise en veille HAL_PWREx_EnablePullUpPullDownConfig() ; @@ -226,15 +246,15 @@ // Set RTC back-up register RTC_BKP31R to indicate //later on that system has entered shutdown mode WRITE_REG( RTC->BKP31R, 0x1 ); - //Enter shutdown mode HAL_PWREx_EnterSHUTDOWNMode(); + } // gestion du cas où le sleep est demandé volontairement // et où l'utilisateur coupe ensuite l'alimentation en débranchant ou interrupteur sur off -// on refait un shutdown mais avec un wake up sur le branchement du cable + interrupteur sur ON +// on refait un shutdown mais avec un wake up HIGH sur le branchement du cable + interrupteur sur ON void flagSleep(){ if ((int) UTILS::Read(DFU_ADDR) == 0xBABEFACE ) { @@ -243,13 +263,17 @@ FLAG_DISPLAY = false; Commande_IHM = 0; + // on tire vers le bas le RX / TX de l'écran pour ne pas qu'il redémarre HAL_PWREx_EnableGPIOPullDown(PWR_GPIO_C, PWR_GPIO_BIT_4); HAL_PWREx_EnableGPIOPullDown(PWR_GPIO_C, PWR_GPIO_BIT_5); - buzzer.beep(1000,0.1); - wait_ms(100); - buzzer.beep(1000,0.1); - wait(1); + + //debug + while(1); + + // on efface le BABEFACE UTILS::EffacePage(2, 29, 1); + + // on reconfigure le wake up sur HIGH pour un redémarrage normal en rebranchant le cable HAL_PWREx_EnablePullUpPullDownConfig() ; HAL_PWREx_EnableGPIOPullDown(PWR_GPIO_A, PWR_GPIO_BIT_0); HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1); // pour PA_0 @@ -262,7 +286,7 @@ WRITE_REG( RTC->BKP31R, 0x1 ); //Enter shutdown mode - E3V = 0; + E3V=0; //HAL_PWREx_EnterSHUTDOWNMode(); } @@ -271,12 +295,9 @@ void USB_unplugged() { DEBUG(" La prise USB a été débranchée.\n"); - - buzzer.beep(1000,0.3); - wait_ms(500); - buzzer.beep(1000,0.3); - wait(1); - + + //buzzer.beep(1000,0.3); // ce beep semble etrangement long + //Arrêt des enregistrements FLAG_REC = false; @@ -304,7 +325,7 @@ HAL_PWREx_EnableGPIOPullDown(PWR_GPIO_C, PWR_GPIO_BIT_5); //Mise en veille version cable arraché - DEBUG(" Mise en veille...\r\n"); + DEBUG(" Mise en veille, suite coupure alimentation...\r\n"); //wait(1); //Mise en veille HAL_PWREx_EnablePullUpPullDownConfig() ; @@ -317,20 +338,19 @@ // Set RTC back-up register RTC_BKP31R to indicate //later on that system has entered shutdown mode WRITE_REG( RTC->BKP31R, 0x1 ); - //Enter shutdown mode HAL_PWREx_EnterSHUTDOWNMode(); } -void PILES_unpluged() +void PILES_unplugged() { DEBUG(" Les piles ont été débranchées.\n"); - + E5V=1; buzzer.beep(1000,0.3); wait_ms(500); buzzer.beep(1000,0.3); wait(1); - + E5V=0; //Arrêt des enregistrements FLAG_REC = false; @@ -356,7 +376,19 @@ //Mise en veille DEBUG(" Mise en veille...\r\n"); //wait(1); - sleepDemande(); + //Mise en veille + HAL_PWREx_EnablePullUpPullDownConfig() ; + HAL_PWREx_EnableGPIOPullDown(PWR_GPIO_A, PWR_GPIO_BIT_0); + HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1); // pour PA_0 + // Clear wake up Flag + __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WUF1); + // Enable wakeup pin WKUP2 + HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1); // high est la valeur par défaut + // Set RTC back-up register RTC_BKP31R to indicate + //later on that system has entered shutdown mode + WRITE_REG( RTC->BKP31R, 0x1 ); + //Enter shutdown mode + HAL_PWREx_EnterSHUTDOWNMode(); } void Affichage() @@ -400,12 +432,13 @@ Volets_Speed = 1; Volet_DeadBand = 10; - + //todo a decommenter + /* while(1) { wait_ms(100); if (Servo_Poumon.Pos_OK() == true && Servo_Fuite.Pos_OK() == true) break; } - + */ OUTPUT(" Appareil en mode SECU\r\n"); @@ -426,6 +459,9 @@ DEBUG(" position volet fuite sauvegardée = %d pulse(s)\r\n", Pos_F); OUTPUT(" Volet fuite en sécu\r\n"); */ + + /* + TODO à remettre si servo présents UTILS::EffacePage(2, 31, 1); //Enregistrement position des servos en sécu pour plus de précision uint64_t Pos_P = Servo_Poumon.getPulses(); @@ -437,9 +473,10 @@ UTILS::Write(VOLET_FUITE_ADDR, Pos_F); DEBUG(" position volet fuite sauvegardée = %d pulse(s)\r\n",(int) Pos_F); OUTPUT(" Volet fuite en sécu\r\n"); - + Servo_Poumon.Sleep(); Servo_Fuite.Sleep(); + */ } //Sequence d'arrêt @@ -448,8 +485,10 @@ OUTPUT(" Mise en veille de l'appareil.\r\n"); wait(1); - + Mode_SECU(); + + OUTPUT(" retour Mise en veille de l'appareil.\r\n"); wait(1); @@ -898,7 +937,8 @@ bool calib_O2 = false; bool calib_CO2 = false; - + + //todo à remettre si tête capteur présente //sensors.Sensors_INIT(calib_O2, calib_CO2); wait(1); @@ -968,7 +1008,7 @@ vusb_off_on.fall(&USB_unplugged); - vpiles_off_on.fall(&PILES_unpluged); + vpiles_off_on.fall(&PILES_unplugged); buzzer.beep(1000,0.3); wait_ms(500);