A simple microwave demo

Dependencies:   C12832_lcd LM75B mbed-rtos mbed

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?

UserRevisionLine numberNew 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 }