hello friends i have written the code for ARM RTOS, i have used same priority for all of my 4 task, its working fine
my problem is when i change the priority in the code then all task's are not executing simultaneously.... please any one help
here is my code
#include<lpc214x.h> #include"adc.h" #include"buzzer.h" #include"spi.h" /* Include type and function declarations for RTX */
#include <RTX_Config.h> #include <RTL.h> /* RTX kernel functions & defines */
OS_TID tsk1; /* assigne identification for task 1 */ OS_TID tsk2; /* assigne identification for task 2 */ OS_TID tsk3; /* assigne identification for task 3 */ OS_TID tsk4; /* assigne identification for task 4 */
short counter1; /* counter for task 1 */ short counter2; /* counter for task 2 */ short counter3; /* counter for task 3 */ short counter4; /* counter for task 4 */
void job1 (void) __task; void job2 (void) __task; void job3 (void) __task; void job4 (void) __task;
/*---------------------------------------------------------------------------- * Task 1: RTX Kernel starts this task with os_sys_init (job1) *---------------------------------------------------------------------------*/ void job1 (void) __task { os_tsk_prio_self (2); /* higher priority to preempt job3 */ tsk1 = os_tsk_self (); /* get own task identification number */ tsk2 = os_tsk_create (job2,2); /* start task 2 */ tsk3 = os_tsk_create (job3,3); /* start task 3 */ tsk4 = os_tsk_create (job4,3); /* start task 4 */
//while (1) /* endless loop */ { buzzer(); counter1++; /* increment counter 1 */ os_dly_wait (5); /* wait for timeout: 5 ticks */ } }
/*---------------------------------------------------------------------------- * Task 2 'job2': RTX Kernel starts this task with os_tsk_create (job2,2) *---------------------------------------------------------------------------*/ void job2 (void) __task /* higher priority to preempt job3 */ { // while (1) /* endless loop */ { ADC(); counter2++; /* increment counter 2 */ os_dly_wait (10); /* wait for timeout: 10 ticks */ } }
/*---------------------------------------------------------------------------- * Task 3 'job3': RTX Kernel starts this task with os_tsk_create (job3,1) *---------------------------------------------------------------------------*/ void job3 (void) __task { // while (1) /* endless loop */ { SPI(); //counter3++; /* increment counter 3 */ //if (counter3 == 0) /* signal overflow of counter 3 */ //{ // os_evt_set (0x00ff,tsk4); /* to task 4 */ //os_tsk_pass (); //} } }
/*---------------------------------------------------------------------------- * Task 4 'job4': RTX Kernel starts this task with os_tsk_create (job4,1) *---------------------------------------------------------------------------*/ void job4 (void) __task { while (1) /* endless loop */ { //SCI(); //os_evt_wait_or (0x0001, 0xffff); /* wait for signal event */ //counter4++; /* process overflow from counter 3 */ } }
/*---------------------------------------------------------------------------- * Main: Initialize and start RTX Kernel *---------------------------------------------------------------------------*/ int main (void) { /* program execution starts here */ os_sys_init (job1); /* initialize and start task 1 */ }
/*---------------------------------------------------------------------------- * end of file *---------------------------------------------------------------------------*/
What code?
What RTOS?
Have you given the code a reason to run?
Does the high-prio tasks share time?
Do you have any round-robin activated?
View all questions in Keil forum