samd21: Use TM v4.0 LEDs to debug samd21 clock bits
[fw/altos] / src / samd21 / ao_timer.c
index 0eb0dbeacc40c48b8977e4e4ea4c1ab7f243b4fa..91d74b12142d49fe9896ab7163d8340567478d8c 100644 (file)
@@ -53,6 +53,21 @@ void samd21_systick_isr(void)
        ao_arch_release_interrupts();
        if (samd21_systick.csr & (1 << SAMD21_SYSTICK_CSR_COUNTFLAG)) {
                ++ao_tick_count;
+               ao_task_check_alarm();
+#if AO_DATA_ALL
+               if (++ao_data_count == ao_data_interval && ao_data_interval) {
+                       ao_data_count = 0;
+#if HAS_FAKE_FLIGHT
+                       if (ao_fake_flight_active)
+                               ao_fake_flight_poll();
+                       else
+#endif
+                               ao_adc_poll();
+#if (AO_DATA_ALL & ~(AO_DATA_ADC))
+                       ao_wakeup((void *) &ao_data_count);
+#endif
+               }
+#endif
 #ifdef AO_TIMER_HOOK
                AO_TIMER_HOOK;
 #endif
@@ -107,6 +122,7 @@ ao_clock_init(void)
                ;
 
 #ifdef AO_XOSC
+       ao_enable_output(&samd21_port_b, 10, 1);
        /* Enable xosc (external xtal oscillator) */
        samd21_sysctrl.xosc = ((SAMD21_SYSCTRL_XOSC_STARTUP_8192 << SAMD21_SYSCTRL_XOSC_STARTUP) |
                               (0 << SAMD21_SYSCTRL_XOSC_AMPGC) |
@@ -120,6 +136,8 @@ ao_clock_init(void)
        while ((samd21_sysctrl.pclksr & (1 << SAMD21_SYSCTRL_PCLKSR_XOSCRDY)) == 0)
                ;
 
+       ao_enable_output(&samd21_port_b, 11, 1);
+
        /* program DPLL */
 
        /* Divide down */
@@ -274,4 +292,6 @@ ao_clock_init(void)
 
        /* Disable automatic NVM write operations */
        samd21_nvmctrl.ctrlb |= (1UL << SAMD21_NVMCTRL_CTRLB_MANW);
+
+       ao_gpio_set(&samd21_port_b, 10, 0);
 }