Hi,
I use FreeRTOS 7.0.2 on the PIC18F4685.
I create a simple task that get data from the serial port. If I send data slowly
on the port of the PIC, it work well, but if I send a big amount of data, I
have stackoverflow/underflow.
If I put usStackDepth of 200, the problem disapear, but why ?
This is the code of my task :
[quote]static portTASK_FUNCTION( vComRxTask, pvParameters )
{
signed char cByteRxed;
/* Just to stop compiler warnings. */
( void ) pvParameters;
for( ;; )
{
/* Block on the queue that contains received bytes until a byte is
available. */
if( xSerialGetChar( xPort, &cByteRxed, comRX_BLOCK_TIME ) )
{
if( cByteRxed == '1' )
{
vParTestSetLED( 2, pdTRUE );
}
else
{
vParTestSetLED( 2, pdFALSE );
}
}
}
}[/quote]
Thanks
_____________________________________________________________________________________
You are receiving this email because you elected to monitor this topic or entire forum.
To stop monitoring this topic visit:
https://sourceforge.net/projects/freertos/forums/forum/382005/topic/4828172/unmonitor
To stop monitoring this forum visit:
https://sourceforge.net/projects/freertos/forums/forum/382005/unmonitor
[quote]If I put usStackDepth of 200, the problem disapear, but why ?[/quote]
Well you haven't said what you changed it from, but I would guess because when
you have it lower than that you are overflowing the stack?
Regards.
Sorry I change it at the creation of the task :
[quote]xTaskCreate( vComRxTask, ( signed char * ) "COMRx", 200, NULL, uxPriority,
( xTaskHandle * ) NULL );[/quote]
[quote]Well you haven't said what you changed it from, but I would guess because
when you have it lower than that you are overflowing the stack?[/quote]
Yes but why is there an overflow. There is a buffer for the input data of the
serial link. If too much data is incoming, I would understand that the OS don't
take all the data, but why an overflow appear ?
With 200, it work, but what is the genrel way to estimate the value of this
stack ?
Thanks.