diff options
author | Keith Packard <keithp@keithp.com> | 2009-04-12 21:33:55 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2009-04-12 21:33:55 -0700 |
commit | 55402ba3e87fd699c51079843309f1f0d1534724 (patch) | |
tree | 87b0278d3fbb9ba6e70b34280a8da5733b6e9c91 /ao_test.c | |
parent | 3d3f849c9af9028f667cef4afedc0798d39a9efc (diff) |
Make test more complicated
Diffstat (limited to 'ao_test.c')
-rw-r--r-- | ao_test.c | 42 |
1 files changed, 34 insertions, 8 deletions
@@ -18,20 +18,44 @@ #include "ao.h" -struct ao_task __xdata blink_task; +struct ao_task __xdata blink_0_task; +struct ao_task __xdata blink_1_task; +struct ao_task __xdata wakeup_task; void delay(int n) __reentrant { - while (n--) - ao_yield(); + uint8_t j = 0; + while (--n) + while (--j) + ao_yield(); +} + +static __xdata uint8_t blink_chan; + +void +blink_0(void) +{ + for (;;) { + P1 ^= 1; + ao_sleep(&blink_chan); + } } void -blink(void) +blink_1(void) { for (;;) { P1 ^= 2; - delay(100); + delay(20); + } +} + +void +wakeup(void) +{ + for (;;) { + delay(10); + ao_wakeup(&blink_chan); } } @@ -39,9 +63,11 @@ void main(void) { CLKCON = 0; - /* Set p1_1 to output */ - P1DIR = 0x02; + /* Set p1_1 and p1_0 to output */ + P1DIR = 0x03; - ao_add_task(&blink_task, blink); + ao_add_task(&blink_0_task, blink_0); + ao_add_task(&blink_1_task, blink_1); + ao_add_task(&wakeup_task, wakeup); ao_start_scheduler(); } |