I'm quite new at the whole RTOS thing. I'm using the AVR32 UC3 port and am getting very frequent exceptions. At present I have only a few tasks to deal with LEDs and user buttons in my hardware. The tasks seem to run but when I add a simple taskYIELD() to a task I get an exception. If I comment it out, the exception goes away. The exception I'm getting here is "_handle_Supervisor_Call".
Additionally I have an ISR that monitors a port change of the buttons. The service routine for that simply looks at which button caused the interrupt and sets a bit accordingly then leaves - it invokes no FreeRTOS functionality but yet when I press a button and the ISR is serviced I get yet another exception.
I tried increasing my heap size and increasing the tasks' stack sizes with no change. Any thoughts on what I might be doing wrong?
Hi all - still struggling with this. Here's a little more information. I stepped through the code to see where it was getting caught up. In vTaskDelayUntil():
/* Force a reschedule if xTaskResumeAll has not already done so, we may
have put ourselves to sleep. */
if( !xAlreadyYielded )
As soon as it calls portYIELD_WITHIN_API(); I get the following exception in the INTC module:
// Supervisor Call.
The exception is: 4 _handle_Supervisor_Call() C:SimpleSystem Controller 32srcSOFTWARE_FRAMEWORKDRIVERSINTCexception.x:184 0x8000bb00
Thanks for any advice you might have to shed a sliver of light on this.