This is for http://mbed.org/forum/bugs-suggestions/topic/1074/

Dependencies:   mbed

Revision:
0:49c0ef6111e6
Child:
1:70466efca68e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Sep 08 12:53:38 2010 +0000
@@ -0,0 +1,52 @@
+/**
+ * Test program for a bug. (http://mbed.org/forum/bugs-suggestions/topic/1074/)
+ *
+ * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
+ * http://shinta.main.jp/
+ */
+
+#include "mbed.h"
+#include "Semaphore.h"
+
+Serial ser(USBTX, USBRX);
+Ticker ticker;
+BusOut led(LED4, LED3, LED2, LED1);
+Semaphore sem;
+
+char shared_resource;   // This is a shared resource for example.
+
+#define LOCK() sem.take()
+#define UNLOCK() sem.release()
+
+/**
+ * a ticker.
+ */
+void func_tick(void) {
+    led = led + 1;
+}
+
+/**
+ * A call back function for serial interrupt.
+ */
+void func_serial_interrupt(void) {
+    LOCK();
+    shared_resource = ser.getc();
+    UNLOCK();
+}
+
+/**
+ * Entry point.
+ */
+int main() {
+    ticker.attach_us(&func_tick, 100 * 1000);
+    ser.attach(&func_serial_interrupt);
+    while(1) {
+        /*
+         * Hung up your mbed system if you hit keys on console for Serial.
+         */
+        LOCK();
+        printf("0x%x\n", shared_resource);
+        UNLOCK();
+        wait_ms(100);
+    }
+}