cmdline: remove obsolete comment
[protos/xbee-avr.git] / main.c
diff --git a/main.c b/main.c
index 0fb75d1..4529d6e 100644 (file)
--- a/main.c
+++ b/main.c
@@ -89,15 +89,21 @@ void bootloader(void)
 }
 
 /* return time in milliseconds on unsigned 16 bits */
-static uint16_t get_time_ms(void)
+uint16_t get_time_ms(void)
 {
-       return (uint16_t)global_ms;
+       uint16_t ms;
+       uint8_t flags;
+       IRQ_LOCK(flags);
+       ms = global_ms;
+       IRQ_UNLOCK(flags);
+       return ms;
 }
 
 static void main_timer_interrupt(void)
 {
        static uint16_t cycles;
-       static uint8_t cpt;
+       static uint8_t cpt = 0;
+       static uint8_t stack = 0;
 
        cpt++;
 
@@ -112,22 +118,30 @@ static void main_timer_interrupt(void)
        else
                BUZZER_OFF();
 
-       /* interrupt every 2048 cycles */
-       cycles += 2048;
+       if ((cpt & 0x03) != 0)
+               return;
+
+       /* the following code is only called one interrupt among 4: every 682us
+        * (at 12 Mhz) = 8192 cycles */
+       cycles += 8192;
        if (cycles >= 12000) {
                cycles -= 12000;
                global_ms ++;
        }
 
-       /* called every 682us (at 12 Mhz), but global_ms is not incremented at
-        * each call */
+       /* called  */
+       if (stack++ == 0)
+               LED2_ON();
        sei();
-       callout_manage(&xbeeboard.intr_cm);
+       if ((cpt & 0x3) == 0)
+               callout_manage(&xbeeboard.intr_cm);
+       cli();
+       if (--stack == 0)
+               LED2_OFF();
 }
 
 int main(void)
 {
-       //struct callout t1;
        FILE *xbee_file;
        int8_t err;
        struct xbee_dev dev;
@@ -143,9 +157,16 @@ int main(void)
        timer0_register_OV_intr(main_timer_interrupt);
 
        callout_mgr_init(&xbeeboard.intr_cm, get_time_ms);
-       callout_mgr_init(&xbeeboard.mainloop_cm, get_time_ms);
 
        cmdline_init();
+       /* LOGS */
+       error_register_emerg(mylog);
+       error_register_error(mylog);
+       error_register_warning(mylog);
+       error_register_notice(mylog);
+       error_register_debug(mylog);
+
+
        spi_servo_init();
        beep_init();
 
@@ -169,6 +190,8 @@ int main(void)
 
        xbeeapp_init();
 
+       rc_proto_init();
+
        sei();
 
        eeprom_load_config();