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

RTX Kernel Port M3

Hello,

I am porting the RTX Kernel to a Cortex-M3 device and ran into a difficulty.

I have set up 2 tasks to toggle 2 LEDs to see if my tasks are running as expected.
As below.

/*---------------------------------------------------------------------------- * Task 4 'blink_P2': Blink LED P2 *---------------------------------------------------------------------------*/
__task void blink_P2 (void)
{ os_itv_set (40); for (;;) { os_itv_wait (); Toggle_P2(); }
} /*---------------------------------------------------------------------------- * Task 5 'blink_P3': Blink LED P3 *---------------------------------------------------------------------------*/
__task void blink_P3 (void)
{ os_itv_set (40); for (;;) { os_itv_wait (); Toggle_P3(); }
}

If the time delay is set the same for both tasks then there is no problem.
Both tasks toggle each LED at 40mS. This works.

However if I change the time delay on one task,(for example the second task to 50mS) then both tasks now take several seconds to toggle the LEDs.

I have ported the RTX kernel previously to an ARM7 core without difficulty but cannot see the problem on the Cortex-M3 ?

Can someone advise please ?

thanks!

Parents
  • Sorry I missed that.
    So you mean 40 * 1000uS = 40ms.

    This would mean your LEDs are toggling very fast and it may not be noticeable to the eye. Could that be the issue?

    A systick of 1ms is very fast (and I think uncommon) try a systick of 10ms.
    Also, don't use 0 as the priority set both priorities to 1 (or greater).

Reply
  • Sorry I missed that.
    So you mean 40 * 1000uS = 40ms.

    This would mean your LEDs are toggling very fast and it may not be noticeable to the eye. Could that be the issue?

    A systick of 1ms is very fast (and I think uncommon) try a systick of 10ms.
    Also, don't use 0 as the priority set both priorities to 1 (or greater).

Children
  • I'm using a scope on the LEDs so I can see exactly the switch time.
    I can't attach an image unfortunately, but they toggle every 40ms as expected when both delays are the same. As soon as I change one of the delay times, both become in the order of seconds instead of milliseconds.

    Changing the priority to 1 gives the same result.