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

Dependencies:   mbed-rtos mbed

Fork of rtos_basic by Siva ram

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;
        
        
        
        
    }
}