This is a test program for http://mbed.org/forum/bugs-suggestions/topic/990/

Dependencies:   mbed

Committer:
shintamainjp
Date:
Mon Aug 16 22:32:37 2010 +0000
Revision:
1:4cfa24bbc098
Parent:
0:3eb38701225c

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shintamainjp 0:3eb38701225c 1 /**
shintamainjp 0:3eb38701225c 2 * Test program for a bug. (http://mbed.org/forum/bugs-suggestions/topic/990/)
shintamainjp 0:3eb38701225c 3 *
shintamainjp 0:3eb38701225c 4 * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
shintamainjp 0:3eb38701225c 5 * http://shinta.main.jp/
shintamainjp 0:3eb38701225c 6 */
shintamainjp 0:3eb38701225c 7
shintamainjp 0:3eb38701225c 8 #include "mbed.h"
shintamainjp 0:3eb38701225c 9
shintamainjp 1:4cfa24bbc098 10 /**
shintamainjp 1:4cfa24bbc098 11 * TEST_MODE 0: Test a Timeout.
shintamainjp 1:4cfa24bbc098 12 * TEST_MODE 1: Test a Ticker.
shintamainjp 1:4cfa24bbc098 13 */
shintamainjp 1:4cfa24bbc098 14 #define TEST_MODE 0
shintamainjp 1:4cfa24bbc098 15
shintamainjp 1:4cfa24bbc098 16 #if TEST_MODE
shintamainjp 1:4cfa24bbc098 17
shintamainjp 1:4cfa24bbc098 18 /*
shintamainjp 1:4cfa24bbc098 19 * A test for Ticker.
shintamainjp 1:4cfa24bbc098 20 */
shintamainjp 1:4cfa24bbc098 21
shintamainjp 0:3eb38701225c 22 BusOut myled(LED4, LED3, LED2, LED1);
shintamainjp 0:3eb38701225c 23 Ticker tickerForLED;
shintamainjp 0:3eb38701225c 24 Ticker tickerForAnother;
shintamainjp 0:3eb38701225c 25
shintamainjp 0:3eb38701225c 26 /**
shintamainjp 0:3eb38701225c 27 * Tick function for toggle 4 LEDs.
shintamainjp 0:3eb38701225c 28 */
shintamainjp 0:3eb38701225c 29 void tickfunc_led(void) {
shintamainjp 0:3eb38701225c 30 myled = myled + 1;
shintamainjp 0:3eb38701225c 31 }
shintamainjp 0:3eb38701225c 32
shintamainjp 0:3eb38701225c 33 /**
shintamainjp 0:3eb38701225c 34 * Tick function for another ticker.
shintamainjp 0:3eb38701225c 35 */
shintamainjp 0:3eb38701225c 36 void tickfunc_another(void) {
shintamainjp 0:3eb38701225c 37 // Do nothing.
shintamainjp 0:3eb38701225c 38 }
shintamainjp 0:3eb38701225c 39
shintamainjp 1:4cfa24bbc098 40 /**
shintamainjp 1:4cfa24bbc098 41 * Entry point for Ticker.
shintamainjp 1:4cfa24bbc098 42 */
shintamainjp 1:4cfa24bbc098 43 int main(void) {
shintamainjp 0:3eb38701225c 44 int n = 0;
shintamainjp 1:4cfa24bbc098 45
shintamainjp 0:3eb38701225c 46 /*
shintamainjp 0:3eb38701225c 47 * Start my LED ticker.
shintamainjp 0:3eb38701225c 48 */
shintamainjp 1:4cfa24bbc098 49 tickerForLED.attach(&tickfunc_led, 0.2);
shintamainjp 1:4cfa24bbc098 50
shintamainjp 0:3eb38701225c 51 /*
shintamainjp 0:3eb38701225c 52 * Wait 5 seconds.
shintamainjp 0:3eb38701225c 53 */
shintamainjp 0:3eb38701225c 54 wait(5);
shintamainjp 0:3eb38701225c 55
shintamainjp 0:3eb38701225c 56 /*
shintamainjp 0:3eb38701225c 57 * Attach another ticker.
shintamainjp 0:3eb38701225c 58 * Then the LED ticker will be stop.
shintamainjp 1:4cfa24bbc098 59 */
shintamainjp 0:3eb38701225c 60 while (1) {
shintamainjp 0:3eb38701225c 61 /*
shintamainjp 0:3eb38701225c 62 * Check for this loop.
shintamainjp 0:3eb38701225c 63 */
shintamainjp 0:3eb38701225c 64 printf("n=%d\n", n++);
shintamainjp 0:3eb38701225c 65
shintamainjp 0:3eb38701225c 66 /*
shintamainjp 0:3eb38701225c 67 * Change my another ticker.
shintamainjp 0:3eb38701225c 68 */
shintamainjp 0:3eb38701225c 69 tickerForAnother.attach_us(&tickfunc_another, 2 * 1000);
shintamainjp 0:3eb38701225c 70 wait_ms(100);
shintamainjp 1:4cfa24bbc098 71 }
shintamainjp 1:4cfa24bbc098 72 }
shintamainjp 0:3eb38701225c 73
shintamainjp 1:4cfa24bbc098 74 #else
shintamainjp 1:4cfa24bbc098 75
shintamainjp 1:4cfa24bbc098 76 /*
shintamainjp 1:4cfa24bbc098 77 * A test for Timeout.
shintamainjp 1:4cfa24bbc098 78 */
shintamainjp 1:4cfa24bbc098 79
shintamainjp 1:4cfa24bbc098 80 BusOut myled(LED4, LED3, LED2, LED1);
shintamainjp 1:4cfa24bbc098 81 Ticker tickerForLED;
shintamainjp 1:4cfa24bbc098 82 Timeout timeout;
shintamainjp 1:4cfa24bbc098 83
shintamainjp 1:4cfa24bbc098 84 /**
shintamainjp 1:4cfa24bbc098 85 * Tick function for toggle 4 LEDs.
shintamainjp 1:4cfa24bbc098 86 */
shintamainjp 1:4cfa24bbc098 87 void tickfunc_led(void) {
shintamainjp 1:4cfa24bbc098 88 myled = myled + 1;
shintamainjp 1:4cfa24bbc098 89 }
shintamainjp 1:4cfa24bbc098 90
shintamainjp 1:4cfa24bbc098 91 /**
shintamainjp 1:4cfa24bbc098 92 * Timeout function.
shintamainjp 1:4cfa24bbc098 93 */
shintamainjp 1:4cfa24bbc098 94 void timeoutfunc(void) {
shintamainjp 1:4cfa24bbc098 95 printf("timeoutfunc.\n");
shintamainjp 1:4cfa24bbc098 96 }
shintamainjp 1:4cfa24bbc098 97
shintamainjp 1:4cfa24bbc098 98 /**
shintamainjp 1:4cfa24bbc098 99 * Entry point for Timeout.
shintamainjp 1:4cfa24bbc098 100 */
shintamainjp 1:4cfa24bbc098 101 int main(void) {
shintamainjp 1:4cfa24bbc098 102 int n = 0;
shintamainjp 1:4cfa24bbc098 103
shintamainjp 1:4cfa24bbc098 104 /*
shintamainjp 1:4cfa24bbc098 105 * Start my LED ticker.
shintamainjp 1:4cfa24bbc098 106 */
shintamainjp 1:4cfa24bbc098 107 tickerForLED.attach(&tickfunc_led, 0.2);
shintamainjp 1:4cfa24bbc098 108
shintamainjp 1:4cfa24bbc098 109 /*
shintamainjp 1:4cfa24bbc098 110 * Wait 5 seconds.
shintamainjp 1:4cfa24bbc098 111 */
shintamainjp 1:4cfa24bbc098 112 wait(5);
shintamainjp 1:4cfa24bbc098 113
shintamainjp 1:4cfa24bbc098 114 /*
shintamainjp 1:4cfa24bbc098 115 * Attach timeout.
shintamainjp 1:4cfa24bbc098 116 * Then the LED ticker will be stop.
shintamainjp 1:4cfa24bbc098 117 */
shintamainjp 1:4cfa24bbc098 118 while (1) {
shintamainjp 1:4cfa24bbc098 119 /*
shintamainjp 1:4cfa24bbc098 120 * Check for this loop.
shintamainjp 1:4cfa24bbc098 121 */
shintamainjp 1:4cfa24bbc098 122 printf("n=%d\n", n++);
shintamainjp 1:4cfa24bbc098 123
shintamainjp 1:4cfa24bbc098 124 /*
shintamainjp 1:4cfa24bbc098 125 * Change my timeout.
shintamainjp 1:4cfa24bbc098 126 */
shintamainjp 1:4cfa24bbc098 127 timeout.detach();
shintamainjp 1:4cfa24bbc098 128 timeout.attach_us(&timeoutfunc, 2 * 1000);
shintamainjp 0:3eb38701225c 129 wait_ms(100);
shintamainjp 0:3eb38701225c 130
shintamainjp 1:4cfa24bbc098 131 timeout.detach();
shintamainjp 1:4cfa24bbc098 132 timeout.attach_us(&timeoutfunc, 200 * 1000);
shintamainjp 1:4cfa24bbc098 133 wait_ms(100);
shintamainjp 1:4cfa24bbc098 134
shintamainjp 1:4cfa24bbc098 135 timeout.attach_us(&timeoutfunc, 20 * 1000);
shintamainjp 1:4cfa24bbc098 136 wait_ms(100);
shintamainjp 1:4cfa24bbc098 137
shintamainjp 1:4cfa24bbc098 138 timeout.attach_us(&timeoutfunc, 200 * 1000);
shintamainjp 0:3eb38701225c 139 wait_ms(100);
shintamainjp 0:3eb38701225c 140 }
shintamainjp 0:3eb38701225c 141 }
shintamainjp 1:4cfa24bbc098 142
shintamainjp 1:4cfa24bbc098 143 #endif