This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

How to modify this programe to see the difference between timeout and interval

#include "rtx51tny.h"
#include "REG935.H"

const unsigned char table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80 ,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0xFF,0x00};

int counter0;
int counter1;
int counter2;
int counter3;

void LED0 (void) _task_ 0
{ int i; os_create_task(1); os_create_task(2); while(1) {

for (i = 0; i < 15; i++) {

P1 = table[i]; os_wait(K_TMO,30,0);

} os_send_signal(1); os_wait(K_SIG,0,0); counter0++; }
}

void LED1 (void) _task_ 1
{ int i; while(1) { os_wait(K_SIG,0,0);

for (i = 0; i < 3; i++) { P1 = table[15];

os_wait(K_TMO,30,0);

P1 = table[16];

os_wait(K_TMO,30,0); } os_send_signal(2);

counter1++; }
}

void LED2 (void) _task_ 2
{ int i; while(1) { os_wait(K_SIG,0,0);

for (i = 0; i < 8; i++) { P1 = table[i] | table[i+7]; os_wait(K_TMO,30,0); }

os_send_signal(0); counter2++; }
}

Here is my programe, you can emulate it by the KEIL.
Opening the "peripheral"-->"I/O port"-->"P1".you will
see the movement of the P1.

Now I want to use the os_wait(K_IVL,0,0) instead of the os_wait(K_TMO,0,0) to see the differnce between them.But I can not see the difference.So who can help me to modify the programe to show the difference clearly.

Parents
  • hi: I have read manual about them. But I have not been comprehensible to this sentence: The Interval is a variation of the Timeout. An interval is like a timeout except that the specified number of clock ticks is relative to the last time the os_wait function was invoked by the task.

    It means that the interval is a timeout in the normal state , but which state the interval will not behaved like timeout?

    In your little programe, the interval didnot behave like timeout.

      while (1)
      {
        wait(5s); // timeout or interval
        executeFunction(); // takes 2s to execute
        sendSignal(); // send a signal e.g. toggle LED
      }
    
    
    

    But in my programe ,the interval did behave like timeout.

        while (1)    {
        os_wait (K_IVL, 200, 0);//wait  interval for 2s
        os_wait (K_TMO, 100, 0);//wait  timeout for 1s
        os_send_signal (1);
    
        }
    
    

    your programe is in this condition:

    except that the specified number of clock ticks is relative to the last time the os_wait function was invoked by the task.

    isn't is?

    why?

Reply
  • hi: I have read manual about them. But I have not been comprehensible to this sentence: The Interval is a variation of the Timeout. An interval is like a timeout except that the specified number of clock ticks is relative to the last time the os_wait function was invoked by the task.

    It means that the interval is a timeout in the normal state , but which state the interval will not behaved like timeout?

    In your little programe, the interval didnot behave like timeout.

      while (1)
      {
        wait(5s); // timeout or interval
        executeFunction(); // takes 2s to execute
        sendSignal(); // send a signal e.g. toggle LED
      }
    
    
    

    But in my programe ,the interval did behave like timeout.

        while (1)    {
        os_wait (K_IVL, 200, 0);//wait  interval for 2s
        os_wait (K_TMO, 100, 0);//wait  timeout for 1s
        os_send_signal (1);
    
        }
    
    

    your programe is in this condition:

    except that the specified number of clock ticks is relative to the last time the os_wait function was invoked by the task.

    isn't is?

    why?

Children
  • Result of using a periodic timer with value 5 ticks, and having code that takes 3 ticks to execute:

    |xxx  |xxx  |xxx  |
    


    Result of using a delay with value 5 ticks, and having code that takes 3 ticks to execute:

    |xxx     |xxx     |xxx     |
    

    Changing the delay to 2 ticks, would compensate:

    |xxx  |xxx  |xxx  |
    


    But what happens if the code takes 1 to 3 ticks randomly, and you try to compensate with a 2 tick delay?

    |x  |xxx  |xx  |xxx  |x  |