X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=ao_test.c;h=0fdfcfa1583fd1bfb21a600b7754f5398dd7470c;hp=0524535991e633d8348c1ac7e3e0758acac0237e;hb=ed6f67dc47d750d5ff8bea63ae7cbb560689b9b6;hpb=e14f07bfdb8824fc7ed6df1129c66ee39ffd6d54 diff --git a/ao_test.c b/ao_test.c index 05245359..0fdfcfa1 100644 --- a/ao_test.c +++ b/ao_test.c @@ -20,6 +20,8 @@ struct ao_task __xdata blink_0_task; struct ao_task __xdata blink_1_task; struct ao_task __xdata wakeup_task; +struct ao_task __xdata beep_task; +struct ao_task __xdata echo_task; void delay(int n) __reentrant { @@ -34,8 +36,13 @@ static __xdata uint8_t blink_chan; void blink_0(void) { + uint8_t b = 0; for (;;) { - P1 ^= 1; + b = 1 - b; + if (b) + ao_led_on(AO_LED_GREEN); + else + ao_led_off(AO_LED_GREEN); ao_sleep(&blink_chan); } } @@ -43,15 +50,15 @@ blink_0(void) void blink_1(void) { - static struct ao_adc adc; + static __xdata struct ao_adc adc; for (;;) { ao_sleep(&ao_adc_ring); ao_adc_get(&adc); if (adc.accel < 15900) - P1_1 = 1; + ao_led_on(AO_LED_RED); else - P1_1 = 0; + ao_led_off(AO_LED_RED); } } @@ -59,11 +66,37 @@ void wakeup(void) { for (;;) { - ao_delay(10); + ao_delay(AO_MS_TO_TICKS(100)); ao_wakeup(&blink_chan); } } +void +beep(void) +{ + static __xdata struct ao_adc adc; + + for (;;) { + ao_delay(AO_SEC_TO_TICKS(1)); + ao_adc_get(&adc); + if (adc.temp > 7400) + ao_beep_for(AO_BEEP_LOW, AO_MS_TO_TICKS(50)); + } +} + +void +echo(void) +{ + uint8_t c; + for (;;) { + ao_usb_flush(); + c = ao_usb_getchar(); + ao_usb_putchar(c); + if (c == '\r') + ao_usb_putchar('\n'); + } +} + void main(void) { @@ -71,14 +104,16 @@ main(void) while (!(SLEEP & SLEEP_XOSC_STB)) ; - /* Set p1_1 and p1_0 to output */ - P1DIR = 0x03; - - ao_adc_init(); +// ao_add_task(&blink_0_task, blink_0); +// ao_add_task(&blink_1_task, blink_1); +// ao_add_task(&wakeup_task, wakeup); +// ao_add_task(&beep_task, beep); + ao_add_task(&echo_task, echo); ao_timer_init(); - - ao_add_task(&blink_0_task, blink_0); - ao_add_task(&blink_1_task, blink_1); - ao_add_task(&wakeup_task, wakeup); + ao_adc_init(); + ao_beep_init(); + ao_led_init(); + ao_usb_init(); + ao_start_scheduler(); }