A simple microwave demo
Dependencies: C12832_lcd LM75B mbed-rtos mbed
rtos_hwk7.cpp@0:3a19dcea1a01, 2014-03-14 (annotated)
- Committer:
- joeroop
- Date:
- Fri Mar 14 03:09:38 2014 +0000
- Revision:
- 0:3a19dcea1a01
- Child:
- 1:896789dcc911
test with 2 threads and 1 IPC
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
joeroop | 0:3a19dcea1a01 | 1 | |
joeroop | 0:3a19dcea1a01 | 2 | |
joeroop | 0:3a19dcea1a01 | 3 | |
joeroop | 0:3a19dcea1a01 | 4 | #include "mbed.h" |
joeroop | 0:3a19dcea1a01 | 5 | #include "rtos.h" |
joeroop | 0:3a19dcea1a01 | 6 | #include "C12832_lcd.h" //LCD interface |
joeroop | 0:3a19dcea1a01 | 7 | #include "LM75B.h" //temperature interface |
joeroop | 0:3a19dcea1a01 | 8 | |
joeroop | 0:3a19dcea1a01 | 9 | //globals and types |
joeroop | 0:3a19dcea1a01 | 10 | DigitalOut led1(LED1); |
joeroop | 0:3a19dcea1a01 | 11 | DigitalOut led2(LED2); |
joeroop | 0:3a19dcea1a01 | 12 | C12832_LCD lcd; |
joeroop | 0:3a19dcea1a01 | 13 | //prototypes |
joeroop | 0:3a19dcea1a01 | 14 | //interrupts |
joeroop | 0:3a19dcea1a01 | 15 | |
joeroop | 0:3a19dcea1a01 | 16 | MemoryPool<bool,10> mpool; //used to hold all messages |
joeroop | 0:3a19dcea1a01 | 17 | Queue<bool,10> queue; //used to hold the messages |
joeroop | 0:3a19dcea1a01 | 18 | |
joeroop | 0:3a19dcea1a01 | 19 | void led1_thread(void const *args); |
joeroop | 0:3a19dcea1a01 | 20 | void led2_thread(void const *args); |
joeroop | 0:3a19dcea1a01 | 21 | |
joeroop | 0:3a19dcea1a01 | 22 | int main(void){ |
joeroop | 0:3a19dcea1a01 | 23 | Thread t1(led1_thread); |
joeroop | 0:3a19dcea1a01 | 24 | Thread t2(led2_thread); |
joeroop | 0:3a19dcea1a01 | 25 | |
joeroop | 0:3a19dcea1a01 | 26 | bool start = false; |
joeroop | 0:3a19dcea1a01 | 27 | while(1){ |
joeroop | 0:3a19dcea1a01 | 28 | bool *val = mpool.alloc(); |
joeroop | 0:3a19dcea1a01 | 29 | *val = start; |
joeroop | 0:3a19dcea1a01 | 30 | start = !start; |
joeroop | 0:3a19dcea1a01 | 31 | queue.put(val); |
joeroop | 0:3a19dcea1a01 | 32 | Thread::wait(250); |
joeroop | 0:3a19dcea1a01 | 33 | mpool.free(val); |
joeroop | 0:3a19dcea1a01 | 34 | } |
joeroop | 0:3a19dcea1a01 | 35 | } |
joeroop | 0:3a19dcea1a01 | 36 | |
joeroop | 0:3a19dcea1a01 | 37 | void led1_thread(void const *args){ |
joeroop | 0:3a19dcea1a01 | 38 | while(1){ |
joeroop | 0:3a19dcea1a01 | 39 | osEvent evt = queue.get(10); //wait for IPC to post else timeout |
joeroop | 0:3a19dcea1a01 | 40 | if(evt.status == osEventMessage){ |
joeroop | 0:3a19dcea1a01 | 41 | led1 = !led1; |
joeroop | 0:3a19dcea1a01 | 42 | } |
joeroop | 0:3a19dcea1a01 | 43 | } |
joeroop | 0:3a19dcea1a01 | 44 | } |
joeroop | 0:3a19dcea1a01 | 45 | void led2_thread(void const *args){ |
joeroop | 0:3a19dcea1a01 | 46 | while(1){ |
joeroop | 0:3a19dcea1a01 | 47 | osEvent evt = queue.get(10); //wait for IPC to post else timeout |
joeroop | 0:3a19dcea1a01 | 48 | if(evt.status == osEventMessage){ |
joeroop | 0:3a19dcea1a01 | 49 | led2 = !led2; |
joeroop | 0:3a19dcea1a01 | 50 | } |
joeroop | 0:3a19dcea1a01 | 51 | } |
joeroop | 0:3a19dcea1a01 | 52 | } |