altos/micropeak-v2.0: Wait for the power supply to stabilize before measuring
[fw/altos] / src / micropeak-v2.0 / ao_micropeak.c
index df557e60f1b9168e42e9afe2cb247e25fbe25f23..7ba5cb950c240b0084cc22d3b0cb5f908471ee3e 100644 (file)
@@ -243,6 +243,11 @@ ao_hsi_init(void)
 void
 main(void)
 {
+       int i;
+
+       for (i = 0; i < 100000; i++)
+               ao_arch_nop();
+
        if (ao_battery_voltage() < 320)
                ao_on_battery = 1;
 
@@ -257,22 +262,21 @@ main(void)
        ao_timer_init();
        ao_serial_init();
        stm_moder_set(&stm_gpioa, 2, STM_MODER_OUTPUT);
-
        ao_dma_init();
        ao_spi_init();
        ao_exti_init();
 
-       /* Leave USB disabled on battery */
-       if (!ao_on_battery) {
-               ao_usb_init();
-               ao_cmd_init();
-       }
-
        ao_ms5607_init();
-
        ao_storage_init();
 
-       ao_add_task(&mp_task, ao_micropeak, "micropeak");
-       ao_cmd_register(mp_cmd);
+       if (ao_on_battery) {
+               /* On battery power, run the flight code */
+               ao_add_task(&mp_task, ao_micropeak, "micropeak");
+       } else {
+               /* otherwise, turn on USB and run the command processor */
+               ao_usb_init();
+               ao_cmd_init();
+               ao_cmd_register(mp_cmd);
+       }
        ao_start_scheduler();
 }