What would happen if you have an os_wait or os_wait2 call with an interval of X milliseconds, such as while {TRUE) { os_wait2(K_IVL, X); //do some stuff } and the "stuff" takes more than X ticks?
Ah, maybe that was the problem: parallel tasks that I thought were executing weren't. Thanks Paul >The os_wait function will return immediately in this case. ... So, if the interval is ALWAYS less than the stuff, no other tasks will run.
This might actually be something to change in RTX51Tiny. If I have several tasks going on, and round-robin task switching turned off for efficiency, then there should be a "next_task" function that I can call simply to give other tasks a chance to execute when timing isn't critical. Calling "os_wait()" with a value of 0 would be sufficient. I rolled my own little RTS, before I could afford a copy of RTX51Tiny, and did just that. Each task would execute once through the "while (1)" loop and then pass control on to the next. Paul Blase
...there should be a "next_task" function that I can call simply to give other tasks a chance to execute... This is your lucky day. :-) There is such a function. It's called os_switch_task. Here's the manual page for it: http://www.keil.com/support/man/docs/tr51/tr51_os_switch_task.htm Jon
Arrgh, I knew that I missed something. Thanks. Paul
Ah, os_switchtask isn't in the manual, it must be a new feature. That's why I didn't find it. Thanks Paul