Mega128 port / vTaskDelayUntil doesn't work

nobody wrote on Wednesday, February 07, 2007:

Hi there,
I wanted to test what an RTOS can do for me. I am running an autopilote project for a beginner RC airplane model.

My MCU is a Mega128, I am using avr-gcc on Linux.

I modified the avr323 port. The demo didn’t work. I created a smaller version of the demo with only one task which toggles an IO pin, delayed using vTaskDelayUntil. I also added a Tick Hook.

Now I can see on the oscilloscope that the tick hook works perfectly.
The problem is that the task is looping like crazy, toggeling its IO.

I moved the all stuff on Windows, so I could use the orignal makefile. I get exactly the same result.
I loaded it in AVR Studio and ran in the debbugger: everything works fine, until the call to vTaskDelayUntil. When entering the function, the
xTimeIncrement has value 0 !!
I tried to use vTaskDelay as used in the API manual as well, but it gives the same result. The parameter is also 0.

I guess I have a stack problem somewhere.

Did somebody experience the same problem ?

Martial Châteauvieux

nobody wrote on Wednesday, February 07, 2007:

Try putting a break point in the timer interrupt.  It might be that the tick is not firing if the timers are different between the 32 and 128 parts.  There are some 128 ports around, for example, check to see if they setup the timer differently to create the tick interrupt.

nobody wrote on Wednesday, February 07, 2007:

Ooops, I though that was clear.
I toggle an IO pin within the tick hook. On the Oscillo, the frequency is exactly what I set in the FreeRTOSConfig.h, whatever I set it to. This works fine.

I toggle another IO Pin in the task itself. In between, I call vTaskDelayUntil( &lasttick, 10)
I would expect to see the pin toggling 10x slower as the pin of the tick hook. It toggle a lot quicker…

I’ll look at this port. Any other mega128 ports around, especially one for GCC ?