X-Git-Url: http://git.droids-corp.org/?p=protos%2Fxbee-avr.git;a=blobdiff_plain;f=main.c;h=0d5cad65d3558c8456c7eab9d8bb35128a094730;hp=0e527174acb8da3843fde169eb013addf17f9466;hb=f74db5fd03bcd38af3ca533e7531dd70454dfaaf;hpb=70415e123a0febc5b74b8ddd98778be116f2700b diff --git a/main.c b/main.c index 0e52717..0d5cad6 100644 --- a/main.c +++ b/main.c @@ -26,7 +26,7 @@ */ /* fuses: - * avrdude -p atmega1284p -P usb -c avrispmkii -U lfuse:w:0xff:m -U hfuse:w:0x99:m -U efuse:w:0xff:m + * avrdude -p atmega1284p -P usb -c avrispmkii -U lfuse:w:0xff:m -U hfuse:w:0x91:m -U efuse:w:0xff:m */ #include @@ -52,6 +52,8 @@ #include #include +#include "eeprom_config.h" +#include "beep.h" #include "main.h" struct xbeeboard xbeeboard; @@ -246,7 +248,7 @@ int xbee_recv_data(struct xbee_recv_hdr *recvframe, unsigned len) val += 512; spi_servo_set(0, val); break; - } + } case RC_PROTO_TYPE_RANGE: { struct rc_proto_range *rcr = (struct rc_proto_range *) recvframe->data; @@ -588,6 +590,8 @@ static void main_timer_interrupt(void) static uint16_t cycles; static uint8_t cpt; + cpt++; + /* interrupt every 2048 cycles */ cycles += 2048; if (cycles >= 12000) { @@ -601,6 +605,11 @@ static void main_timer_interrupt(void) else LED1_OFF(); + if (cpt & beep_mask) + BUZZER_ON(); + else + BUZZER_OFF(); + /* call scheduler every 682us with interrupt unlocked */ sei(); if ((cpt & 0x3) == 0) @@ -614,7 +623,7 @@ int main(void) int8_t err; struct xbee_dev dev; - DDRA = 0x07; /* LEDs */ + DDRA = 0x07 /* LEDs */ | 0x10 /* buzzer */; uart_init(); uart_register_rx_event(CMDLINE_UART, emergency); @@ -627,6 +636,7 @@ int main(void) cmdline_init(); spi_servo_init(); + beep_init(); printf_P(PSTR("\r\n")); rdline_newline(&xbeeboard.rdl, xbeeboard.prompt); @@ -651,9 +661,9 @@ int main(void) fprintf(stderr, "cannot register default channel\n"); return -1; } - sei(); + eeprom_load_config(); xbee_mainloop(); return 0; }