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

Dependencies:   mbed-rtos mbed

Fork of rtos_basic by mbed official

Committer:
Piasiv1206
Date:
Mon Oct 26 17:45:59 2015 +0000
Revision:
7:80c659d94cdd
Parent:
3:c92e21f305d8
signalling thread inside an ISR ..  delay observed to be 15 us

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emilmont 1:491820ee784d 1 #include "mbed.h"
emilmont 1:491820ee784d 2 #include "rtos.h"
emilmont 1:491820ee784d 3
emilmont 1:491820ee784d 4 DigitalOut led1(LED1);
emilmont 1:491820ee784d 5 DigitalOut led2(LED2);
Piasiv1206 7:80c659d94cdd 6 InterruptIn button(PTC12);
Piasiv1206 7:80c659d94cdd 7
Piasiv1206 7:80c659d94cdd 8 Thread *ptr_thread ;
Piasiv1206 7:80c659d94cdd 9 Thread *ptr_priya ;
Piasiv1206 7:80c659d94cdd 10 Thread *ptr_t_acs;
Piasiv1206 7:80c659d94cdd 11 Thread *ptr_t_bea;
Piasiv1206 7:80c659d94cdd 12 Thread *ptr_t_i2c;
Piasiv1206 7:80c659d94cdd 13 Thread *ptr_t_wdt;
Piasiv1206 7:80c659d94cdd 14
Piasiv1206 7:80c659d94cdd 15 Timer t ;
Piasiv1206 7:80c659d94cdd 16 Timer P,pia ;
Piasiv1206 7:80c659d94cdd 17 Serial pc(USBTX, USBRX); // tx, rx --> serial feedback for debug
Piasiv1206 7:80c659d94cdd 18
Piasiv1206 7:80c659d94cdd 19 void flip(void);
Piasiv1206 7:80c659d94cdd 20 void T_BAE(void const *args);
Piasiv1206 7:80c659d94cdd 21 void T_ACS(void const *args);
emilmont 1:491820ee784d 22
Piasiv1206 7:80c659d94cdd 23 //Thread thread1(led3_thread);
Piasiv1206 7:80c659d94cdd 24
Piasiv1206 7:80c659d94cdd 25 //Thread thread(led2_thread);
Piasiv1206 7:80c659d94cdd 26 // Thread Priya(led3_thread);
Piasiv1206 7:80c659d94cdd 27
Piasiv1206 7:80c659d94cdd 28
Piasiv1206 7:80c659d94cdd 29 void T_BAE(void const *args) {
emilmont 1:491820ee784d 30 while (true) {
Piasiv1206 7:80c659d94cdd 31 Thread::signal_wait(0x2);
Piasiv1206 7:80c659d94cdd 32 pia.stop();
Piasiv1206 7:80c659d94cdd 33 led1 = !led1;
Piasiv1206 7:80c659d94cdd 34 //Thread::wait(1000);
Piasiv1206 7:80c659d94cdd 35
emilmont 1:491820ee784d 36 }
emilmont 1:491820ee784d 37 }
emilmont 1:491820ee784d 38
Piasiv1206 7:80c659d94cdd 39
Piasiv1206 7:80c659d94cdd 40
Piasiv1206 7:80c659d94cdd 41
Piasiv1206 7:80c659d94cdd 42
Piasiv1206 7:80c659d94cdd 43
Piasiv1206 7:80c659d94cdd 44
emilmont 1:491820ee784d 45 int main() {
emilmont 1:491820ee784d 46
Piasiv1206 7:80c659d94cdd 47 ptr_t_acs = new Thread(T_ACS);
Piasiv1206 7:80c659d94cdd 48 ptr_t_bea = new Thread(T_BAE);
Piasiv1206 7:80c659d94cdd 49 ptr_t_bea->set_priority(osPriorityHigh);
Piasiv1206 7:80c659d94cdd 50 ptr_t_acs->set_priority(osPriorityAboveNormal);
Piasiv1206 7:80c659d94cdd 51 ptr_t_acs -> signal_set(0x1);
Piasiv1206 7:80c659d94cdd 52 button.rise(&flip);
emilmont 1:491820ee784d 53 while (true) {
Piasiv1206 7:80c659d94cdd 54
Piasiv1206 7:80c659d94cdd 55 P.start();
Piasiv1206 7:80c659d94cdd 56 wait_us(1000);
Piasiv1206 7:80c659d94cdd 57 led2 = !led2;
Piasiv1206 7:80c659d94cdd 58 P.stop();
Piasiv1206 7:80c659d94cdd 59
Piasiv1206 7:80c659d94cdd 60
Piasiv1206 7:80c659d94cdd 61 t.start();
Piasiv1206 7:80c659d94cdd 62 wait_us(500);
Piasiv1206 7:80c659d94cdd 63 t.stop();
Piasiv1206 7:80c659d94cdd 64 //pia.start();
Piasiv1206 7:80c659d94cdd 65 //ptr_t_bea -> signal_set(0x2);
Piasiv1206 7:80c659d94cdd 66
Piasiv1206 7:80c659d94cdd 67 //thread.signal_set(0x1);
Piasiv1206 7:80c659d94cdd 68 //Priya.set_priority(osPriorityAboveNormal);
Piasiv1206 7:80c659d94cdd 69 pc.printf("Time Taken : %d \n\r",t.read_us());
Piasiv1206 7:80c659d94cdd 70 pc.printf("Time Taken2 : %d \n\r",P.read_us());
Piasiv1206 7:80c659d94cdd 71 pc.printf("Time Taken3 : %d \n\r",pia.read_us());
Piasiv1206 7:80c659d94cdd 72
Piasiv1206 7:80c659d94cdd 73 wait (5);
Piasiv1206 7:80c659d94cdd 74
Piasiv1206 7:80c659d94cdd 75 //time = t.read();
Piasiv1206 7:80c659d94cdd 76 t.reset();
Piasiv1206 7:80c659d94cdd 77 P.reset();
Piasiv1206 7:80c659d94cdd 78 //pia.reset();
Piasiv1206 7:80c659d94cdd 79
Piasiv1206 7:80c659d94cdd 80
Piasiv1206 7:80c659d94cdd 81 pc.printf("Time Taken(reset) : %d \n\r",t.read_us());
Piasiv1206 7:80c659d94cdd 82 pc.printf("Time Taken2(reset) : %d \n\r",P.read_us());
Piasiv1206 7:80c659d94cdd 83
Piasiv1206 7:80c659d94cdd 84
Piasiv1206 7:80c659d94cdd 85
Piasiv1206 7:80c659d94cdd 86
Piasiv1206 7:80c659d94cdd 87
Piasiv1206 7:80c659d94cdd 88
emilmont 1:491820ee784d 89 }
emilmont 1:491820ee784d 90 }
Piasiv1206 7:80c659d94cdd 91
Piasiv1206 7:80c659d94cdd 92 void flip(void) {
Piasiv1206 7:80c659d94cdd 93
Piasiv1206 7:80c659d94cdd 94 //Thread Priya(led3_thread);
Piasiv1206 7:80c659d94cdd 95 pia.reset();
Piasiv1206 7:80c659d94cdd 96 pia.start();
Piasiv1206 7:80c659d94cdd 97 ptr_t_bea -> signal_set(0x2);
Piasiv1206 7:80c659d94cdd 98 //led2 = !led2;
Piasiv1206 7:80c659d94cdd 99 }
Piasiv1206 7:80c659d94cdd 100
Piasiv1206 7:80c659d94cdd 101 void T_ACS (void const *args) {
Piasiv1206 7:80c659d94cdd 102 while (true) {
Piasiv1206 7:80c659d94cdd 103
Piasiv1206 7:80c659d94cdd 104 Thread::signal_wait(0x1);
Piasiv1206 7:80c659d94cdd 105
Piasiv1206 7:80c659d94cdd 106
Piasiv1206 7:80c659d94cdd 107 led2 = !led2;
Piasiv1206 7:80c659d94cdd 108 //Thread::wait(1000);
Piasiv1206 7:80c659d94cdd 109
Piasiv1206 7:80c659d94cdd 110
Piasiv1206 7:80c659d94cdd 111 }
Piasiv1206 7:80c659d94cdd 112 }