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 :
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 );
}
}
}
}
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?
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 ?