X-Git-Url: http://git.droids-corp.org/?p=protos%2Fxbee-avr.git;a=blobdiff_plain;f=main.c;h=6d1710f961e53cf94c749d4ddea613d6e860a8fe;hp=2120a62451643efd35dcccad963c6468f79dcffe;hb=bf003cd191abeafb1c31a7a24aa573b7a20e527e;hpb=701d7cbf7d30c49e1d21943ce47d00bf250c70e7 diff --git a/main.c b/main.c index 2120a62..6d1710f 100644 --- a/main.c +++ b/main.c @@ -25,6 +25,10 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* fuses: + * avrdude -p atmega1284p -P usb -c avrispmkii -U lfuse:w:0xff:m -U hfuse:w:0x99:m -U efuse:w:0xff:m + */ + #include #include #include @@ -48,16 +52,6 @@ #include #include -#include "xbee_neighbor.h" -#include "xbee_atcmd.h" -#include "xbee_stats.h" -#include "xbee_buf.h" -#include "xbee_proto.h" -#include "xbee.h" -#include "cmdline.h" -#include "callout.h" -#include "rc_proto.h" -#include "spi_servo.h" #include "main.h" struct xbeeboard xbeeboard; @@ -584,44 +578,39 @@ static uint16_t get_time_ms(void) return global_ms; } -static void do_led_blink(struct callout_manager *cm, - struct callout *clt, void *dummy) +static void main_timer_interrupt(void) { - static uint8_t a = 0; - - (void)cm; - (void)clt; - (void)dummy; - - /* XXX */ - a++; -} + static uint16_t cycles; + static uint8_t cpt; + + /* interrupt every 2048 cycles */ + cycles += 2048; + if (cycles >= 12000) { + cycles -= 12000; + global_ms ++; + } -static void increment_ms(void *dummy) -{ - (void)dummy; - global_ms++; -} + /* LED blink */ + if (global_ms & 0x80) + LED1_ON(); + else + LED1_OFF(); -static void main_timer_interrupt(void) -{ - static uint8_t cpt = 0; - cpt++; + /* call scheduler every 682us with interrupt unlocked */ sei(); if ((cpt & 0x3) == 0) scheduler_interrupt(); } -/** Main program entry point. This routine contains the overall program flow, including initial - * setup of all components and the main program loop. - */ int main(void) { - struct callout t1; + //struct callout t1; FILE *xbee_file; int8_t err; struct xbee_dev dev; + DDRA = 0x07; /* LEDs */ + uart_init(); uart_register_rx_event(CMDLINE_UART, emergency); @@ -631,9 +620,6 @@ int main(void) timer_init(); timer0_register_OV_intr(main_timer_interrupt); - scheduler_add_periodical_event_priority(increment_ms, NULL, - 1000L / SCHEDULER_UNIT, - LED_PRIO); cmdline_init(); spi_servo_init(); @@ -641,7 +627,7 @@ int main(void) rdline_newline(&xbeeboard.rdl, xbeeboard.prompt); callout_manager_init(&cm, get_time_ms); - callout_reset(&cm, &t1, 500, PERIODICAL, do_led_blink, NULL); + //callout_reset(&cm, &t1, 500, PERIODICAL, do_led_blink, NULL); /* initialize libxbee */ err = xbee_init(); @@ -662,6 +648,7 @@ int main(void) } sei(); + xbee_mainloop(); return 0; }