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

RTX51 error

Hello,

We are working on RTX-51 on ATMEL 89C51 with 11.0592M.hz Xtal. we are using two code banks with 64k each. In microcontroller we did't placed any code except a pointer to the bank 0 which is containing (main) function. In main we created os_start_system with priority 0 and created two tasks in the first task. We have enabled the round_robin and placed both tasks in priority 0, but when we used os_wait function the system is hanging up on the hardware. the code before os_wait function is working . but on simulator when we watched performance analyzer it is showing that tasks are running with time slice .

But why the system is hanging up at os_wait on target board ?

#include <reg52.h>
#include <rtx51.h>
#include <inithardware.h>
#include <inithardware.c>

unsigned char xdata lc_status[4];
unsigned char bdata lc,ls;

sbit ext1 = ls ^ 0;
sbit ext2 = ls ^ 1;
sbit ext3 = ls ^ 2;
sbit ext4 = ls ^ 3;
sbit lpsa = ls ^ 4;
unsigned int xdata ext1_task[4];
void extension1 (void)_task_ 2 _priority_ 0
{
unsigned char i;
while(1)
{

EXTERNAL = PERI;
i = LC1_STATUS;
EXTERNAL = XRAM;
lc_status[0] = i;
ls=lc_status[0];
if(ext1==1)
{
fo_led1 =0;
EXTERNAL = PERI;
LED_LATCH = led_latch;
EXTERNAL = XRAM;
}
else
fo_led1 =1;
EXTERNAL = PERI;
LED_LATCH = led_latch;
EXTERNAL = XRAM;
os_wait(K_TMO,2,0);
}
}

void extension1 (void)_task_ 3 _priority_ 0
{

unsigned char i;
while(1)
{

EXTERNAL = PERI;
i = LC1_STATUS;
EXTERNAL = XRAM;
lc_status[0] = i;
ls=lc_status[0];
if(ext1==1)
{
fo_led1 =0;
EXTERNAL = PERI;
LED_LATCH = led_latch;
EXTERNAL = XRAM;
}
else
fo_led1 =1;
EXTERNAL = PERI;
LED_LATCH = led_latch;
EXTERNAL = XRAM;
os_wait(K_TMO,1,0);
}
}

void start_task (void) _task_ 1 _priority_ 1
{

EXTERNAL = PERI;
led_latch = 0xFF;
LED_LATCH = led_latch;
EXTERNAL = XRAM;

os_create_task(2);
os_create_task(3);
os_delete_task(1);

}

void main (void)
{
os_start_system (1);
}

0