Signalling thread inside ISR .. delay observed to be 15 us

Dependencies:   mbed-rtos mbed

Fork of rtos_basic by mbed official

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "rtos.h"
00003  
00004 DigitalOut led1(LED1);
00005 DigitalOut led2(LED2);
00006 InterruptIn button(PTC12);
00007 
00008 Thread *ptr_thread ;
00009 Thread *ptr_priya ;
00010 Thread *ptr_t_acs;
00011 Thread *ptr_t_bea;
00012 Thread *ptr_t_i2c;
00013 Thread *ptr_t_wdt;
00014 
00015 Timer t ;
00016 Timer P,pia ;
00017 Serial pc(USBTX, USBRX); // tx, rx  --> serial feedback for debug
00018 
00019 void flip(void);
00020 void T_BAE(void const *args);
00021 void T_ACS(void const *args);
00022  
00023  //Thread thread1(led3_thread);
00024  
00025     //Thread thread(led2_thread);
00026    // Thread Priya(led3_thread);
00027 
00028 
00029 void T_BAE(void const *args) {
00030     while (true) {
00031         Thread::signal_wait(0x2);
00032         pia.stop();
00033         led1 = !led1;
00034         //Thread::wait(1000);
00035         
00036     }
00037 }
00038  
00039 
00040 
00041 
00042  
00043 
00044  
00045 int main() {
00046     
00047     ptr_t_acs = new Thread(T_ACS);
00048     ptr_t_bea = new Thread(T_BAE);
00049     ptr_t_bea->set_priority(osPriorityHigh);
00050     ptr_t_acs->set_priority(osPriorityAboveNormal);
00051     ptr_t_acs -> signal_set(0x1);
00052     button.rise(&flip);
00053     while (true) {
00054             
00055             P.start();
00056             wait_us(1000);
00057             led2 = !led2;
00058             P.stop();
00059             
00060             
00061             t.start();
00062             wait_us(500);
00063             t.stop();
00064             //pia.start();
00065             //ptr_t_bea -> signal_set(0x2);
00066             
00067             //thread.signal_set(0x1);
00068             //Priya.set_priority(osPriorityAboveNormal);
00069             pc.printf("Time Taken : %d \n\r",t.read_us());
00070             pc.printf("Time Taken2 : %d \n\r",P.read_us());
00071             pc.printf("Time Taken3 : %d \n\r",pia.read_us());
00072             
00073             wait (5);
00074             
00075             //time = t.read();
00076             t.reset();
00077             P.reset();
00078             //pia.reset();
00079             
00080             
00081             pc.printf("Time Taken(reset) : %d \n\r",t.read_us());
00082             pc.printf("Time Taken2(reset) : %d \n\r",P.read_us());
00083             
00084             
00085             
00086             
00087 
00088             
00089     }
00090 }
00091 
00092 void flip(void) {
00093     
00094     //Thread Priya(led3_thread);
00095     pia.reset();
00096     pia.start();
00097     ptr_t_bea -> signal_set(0x2);
00098     //led2 = !led2;
00099 }
00100  
00101 void T_ACS (void const *args) {
00102     while (true) {
00103         
00104         Thread::signal_wait(0x1);
00105         
00106 
00107         led2 = !led2;
00108         //Thread::wait(1000);
00109         
00110         
00111     }
00112 }