Signalling thread inside ISR .. delay observed to be 15 us
Fork of rtos_basic by
main.cpp
- Committer:
- Piasiv1206
- Date:
- 2015-10-28
- Revision:
- 8:cfc8daeddc29
- Parent:
- 7:80c659d94cdd
File content as of revision 8:cfc8daeddc29:
#include "mbed.h" #include "rtos.h" DigitalOut led1(LED1); DigitalOut led2(LED2); InterruptIn button(PTC12); Thread *ptr_thread ; Thread *ptr_priya ; Thread *ptr_t_acs; Thread *ptr_t_bea; Thread *ptr_t_i2c; Thread *ptr_t_wdt; Timer t ; Timer P,pia,siv ; Serial pc(USBTX, USBRX); // tx, rx --> serial feedback for debug void flip(void); void T_BAE(void const *args); void T_ACS(void const *args); //Thread thread1(led3_thread); //Thread thread(led2_thread); // Thread Priya(led3_thread); void T_BAE(void const *args) { while (true) { Thread::signal_wait(0x2); pia.stop(); led1 = !led1; //Thread::wait(1000); } } int main() { ptr_t_acs = new Thread(T_ACS); ptr_t_bea = new Thread(T_BAE); ptr_t_bea->set_priority(osPriorityHigh); ptr_t_acs->set_priority(osPriorityAboveNormal); ptr_t_acs -> signal_set(0x1); button.rise(&flip); while (true) { P.start(); wait_us(1000); //led2 = !led2; P.stop(); t.start(); wait_us(500); t.stop(); siv.start(); wait_us(500); //siv.stop(); pc.printf("Time Taken0 : %d \n\r",siv.read_us()); //pia.start(); //ptr_t_bea -> signal_set(0x2); ptr_t_acs -> signal_set(0x1); //thread.signal_set(0x1); //set_priority(osPriorityAboveNormal); pc.printf("Time Taken1 : %d \n\r",t.read_us()); pc.printf("Time Taken2 : %d \n\r",P.read_us()); pc.printf("Time Taken3 : %d \n\r",pia.read_us()); wait (5); //time = t.read(); t.reset(); P.reset(); siv.reset(); //pia.reset(); pc.printf("Time Taken0(reset) : %d \n\r",siv.read_us()); pc.printf("Time Taken1(reset) : %d \n\r",t.read_us()); pc.printf("Time Taken2(reset) : %d \n\r",P.read_us()); } } void flip(void) { //Thread Priya(led3_thread); pia.reset(); pia.start(); ptr_t_bea -> signal_set(0x2); //led2 = !led2; } void T_ACS (void const *args) { while (true) { Thread::signal_wait(0x1); //pc.printf("hello \r\n"); led2 = !led2; Thread::wait(1000); led2 = !led2; } }