git.droids-corp.org
/
protos
/
xbee-avr.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix log types in command line
[protos/xbee-avr.git]
/
main.c
diff --git
a/main.c
b/main.c
index
c438575
..
a0839d2
100644
(file)
--- a/
main.c
+++ b/
main.c
@@
-89,15
+89,21
@@
void bootloader(void)
}
/* return time in milliseconds on unsigned 16 bits */
}
/* 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 void main_timer_interrupt(void)
{
static uint16_t cycles;
- static uint8_t cpt;
+ static uint8_t cpt = 0;
+ static uint8_t stack = 0;
cpt++;
cpt++;
@@
-112,22
+118,30
@@
static void main_timer_interrupt(void)
else
BUZZER_OFF();
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 ++;
}
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();
sei();
- callout_manage(&xbeeboard.intr_cm);
+ if ((cpt & 0x3) == 0)
+ callout_manage(&xbeeboard.intr_cm);
+ cli();
+ if (--stack == 0)
+ LED2_OFF();
}
int main(void)
{
}
int main(void)
{
- //struct callout t1;
FILE *xbee_file;
int8_t err;
struct xbee_dev dev;
FILE *xbee_file;
int8_t err;
struct xbee_dev dev;
@@
-143,7
+157,6
@@
int main(void)
timer0_register_OV_intr(main_timer_interrupt);
callout_mgr_init(&xbeeboard.intr_cm, get_time_ms);
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();
spi_servo_init();
cmdline_init();
spi_servo_init();
@@
-166,6
+179,11
@@
int main(void)
fprintf(stderr, "cannot register default channel\n");
return -1;
}
fprintf(stderr, "cannot register default channel\n");
return -1;
}
+
+ xbeeapp_init();
+
+ rc_proto_init();
+
sei();
eeprom_load_config();
sei();
eeprom_load_config();