X-Git-Url: http://git.droids-corp.org/?p=protos%2Fxbee-avr.git;a=blobdiff_plain;f=main.c;h=326ce64930ee66be51ad0e79e915e940ef4a43f9;hp=c438575f4eb875cbca03fa05072376081c4a59d6;hb=1032fc9a27fbe5b24f3a837685467d87380b3e2c;hpb=c17da94fafe8e0fa1a467f0c8fb7922fec8386e5 diff --git a/main.c b/main.c index c438575..326ce64 100644 --- a/main.c +++ b/main.c @@ -97,7 +97,8 @@ static uint16_t get_time_ms(void) 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 +113,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; @@ -166,6 +175,9 @@ int main(void) fprintf(stderr, "cannot register default channel\n"); return -1; } + + xbeeapp_init(); + sei(); eeprom_load_config();