Signalling thread inside ISR .. delay observed to be 15 us
Fork of rtos_basic by
main.cpp@8:cfc8daeddc29, 2015-10-28 (annotated)
- Committer:
- Piasiv1206
- Date:
- Wed Oct 28 10:42:17 2015 +0000
- Revision:
- 8:cfc8daeddc29
- Parent:
- 7:80c659d94cdd
hello
Who changed what in which revision?
User | Revision | Line number | New 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 | 8:cfc8daeddc29 | 16 | Timer P,pia,siv ; |
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 | 8:cfc8daeddc29 | 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 | 8:cfc8daeddc29 | 64 | |
Piasiv1206 | 8:cfc8daeddc29 | 65 | siv.start(); |
Piasiv1206 | 8:cfc8daeddc29 | 66 | wait_us(500); |
Piasiv1206 | 8:cfc8daeddc29 | 67 | //siv.stop(); |
Piasiv1206 | 8:cfc8daeddc29 | 68 | pc.printf("Time Taken0 : %d \n\r",siv.read_us()); |
Piasiv1206 | 8:cfc8daeddc29 | 69 | |
Piasiv1206 | 7:80c659d94cdd | 70 | //pia.start(); |
Piasiv1206 | 7:80c659d94cdd | 71 | //ptr_t_bea -> signal_set(0x2); |
Piasiv1206 | 8:cfc8daeddc29 | 72 | ptr_t_acs -> signal_set(0x1); |
Piasiv1206 | 7:80c659d94cdd | 73 | |
Piasiv1206 | 7:80c659d94cdd | 74 | //thread.signal_set(0x1); |
Piasiv1206 | 8:cfc8daeddc29 | 75 | //set_priority(osPriorityAboveNormal); |
Piasiv1206 | 8:cfc8daeddc29 | 76 | pc.printf("Time Taken1 : %d \n\r",t.read_us()); |
Piasiv1206 | 7:80c659d94cdd | 77 | pc.printf("Time Taken2 : %d \n\r",P.read_us()); |
Piasiv1206 | 7:80c659d94cdd | 78 | pc.printf("Time Taken3 : %d \n\r",pia.read_us()); |
Piasiv1206 | 7:80c659d94cdd | 79 | |
Piasiv1206 | 7:80c659d94cdd | 80 | wait (5); |
Piasiv1206 | 7:80c659d94cdd | 81 | |
Piasiv1206 | 7:80c659d94cdd | 82 | //time = t.read(); |
Piasiv1206 | 7:80c659d94cdd | 83 | t.reset(); |
Piasiv1206 | 7:80c659d94cdd | 84 | P.reset(); |
Piasiv1206 | 8:cfc8daeddc29 | 85 | siv.reset(); |
Piasiv1206 | 7:80c659d94cdd | 86 | //pia.reset(); |
Piasiv1206 | 7:80c659d94cdd | 87 | |
Piasiv1206 | 8:cfc8daeddc29 | 88 | pc.printf("Time Taken0(reset) : %d \n\r",siv.read_us()); |
Piasiv1206 | 8:cfc8daeddc29 | 89 | pc.printf("Time Taken1(reset) : %d \n\r",t.read_us()); |
Piasiv1206 | 7:80c659d94cdd | 90 | pc.printf("Time Taken2(reset) : %d \n\r",P.read_us()); |
Piasiv1206 | 7:80c659d94cdd | 91 | |
Piasiv1206 | 7:80c659d94cdd | 92 | |
Piasiv1206 | 7:80c659d94cdd | 93 | |
Piasiv1206 | 7:80c659d94cdd | 94 | |
Piasiv1206 | 7:80c659d94cdd | 95 | |
Piasiv1206 | 7:80c659d94cdd | 96 | |
emilmont | 1:491820ee784d | 97 | } |
emilmont | 1:491820ee784d | 98 | } |
Piasiv1206 | 7:80c659d94cdd | 99 | |
Piasiv1206 | 7:80c659d94cdd | 100 | void flip(void) { |
Piasiv1206 | 7:80c659d94cdd | 101 | |
Piasiv1206 | 7:80c659d94cdd | 102 | //Thread Priya(led3_thread); |
Piasiv1206 | 7:80c659d94cdd | 103 | pia.reset(); |
Piasiv1206 | 7:80c659d94cdd | 104 | pia.start(); |
Piasiv1206 | 7:80c659d94cdd | 105 | ptr_t_bea -> signal_set(0x2); |
Piasiv1206 | 7:80c659d94cdd | 106 | //led2 = !led2; |
Piasiv1206 | 7:80c659d94cdd | 107 | } |
Piasiv1206 | 7:80c659d94cdd | 108 | |
Piasiv1206 | 7:80c659d94cdd | 109 | void T_ACS (void const *args) { |
Piasiv1206 | 7:80c659d94cdd | 110 | while (true) { |
Piasiv1206 | 7:80c659d94cdd | 111 | |
Piasiv1206 | 7:80c659d94cdd | 112 | Thread::signal_wait(0x1); |
Piasiv1206 | 8:cfc8daeddc29 | 113 | //pc.printf("hello \r\n"); |
Piasiv1206 | 8:cfc8daeddc29 | 114 | led2 = !led2; |
Piasiv1206 | 8:cfc8daeddc29 | 115 | Thread::wait(1000); |
Piasiv1206 | 7:80c659d94cdd | 116 | |
Piasiv1206 | 7:80c659d94cdd | 117 | led2 = !led2; |
Piasiv1206 | 8:cfc8daeddc29 | 118 | |
Piasiv1206 | 8:cfc8daeddc29 | 119 | |
Piasiv1206 | 7:80c659d94cdd | 120 | |
Piasiv1206 | 7:80c659d94cdd | 121 | |
Piasiv1206 | 7:80c659d94cdd | 122 | } |
Piasiv1206 | 7:80c659d94cdd | 123 | } |