X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=ao_test.c;h=9a8adc3d6532daf6f0fc16aa43c60538ade24964;hp=553e5f6d7f9c93791af414152b7cbc85c000981f;hb=f3f25a1cec7d2a034aa544569cfd23bea1a996c5;hpb=55402ba3e87fd699c51079843309f1f0d1534724 diff --git a/ao_test.c b/ao_test.c index 553e5f6d..9a8adc3d 100644 --- a/ao_test.c +++ b/ao_test.c @@ -3,8 +3,7 @@ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * the Free Software Foundation; version 2 of the License. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of @@ -21,6 +20,7 @@ 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; void delay(int n) __reentrant { @@ -35,8 +35,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); } } @@ -44,9 +49,15 @@ blink_0(void) void blink_1(void) { + static struct ao_adc adc; + for (;;) { - P1 ^= 2; - delay(20); + ao_sleep(&ao_adc_ring); + ao_adc_get(&adc); + if (adc.accel < 15900) + ao_led_on(AO_LED_RED); + else + ao_led_off(AO_LED_RED); } } @@ -54,20 +65,34 @@ void wakeup(void) { for (;;) { - delay(10); + ao_delay(AO_MS_TO_TICKS(100)); ao_wakeup(&blink_chan); } } +void +beep(void) +{ + static 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 main(void) { CLKCON = 0; - /* Set p1_1 and p1_0 to output */ - P1DIR = 0x03; - + while (!(SLEEP & SLEEP_XOSC_STB)) + ; + 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_start_scheduler(); }