altos/micropeak-v2.0: Wait for the power supply to stabilize before measuring
[fw/altos] / src / micropeak-v2.0 / ao_micropeak.c
index 1cfa1209df781ffe788dd00511a4c9a67e7cb110..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;
 
@@ -252,27 +257,26 @@ main(void)
        else
                ao_hsi_init();
 
-       ao_led_init(LEDS_AVAILABLE);
+       ao_led_init();
        ao_task_init();
        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();
 }