Please Help!
The OS and everything completely crashes and stops running.
Here is the scenario:
Task A uses the SPI bus.
Task B also uses the SPI bus.
Again with Task C.
Task A can take the semaphore, no problems. Always works.
If Task B or Task C tries to take the semaphore, the whole OS crashes. Every time, even is Task A is not doing anything at the moment.
Please Help!
Make sure that you have released the semaphore in Task-A. xSemaphoreGive( xSemaphore );
Have a look @ user documnetaion in www.freertos.org
Example usage:
xSemaphoreHandle xSemaphore = NULL;
void vATask( void * pvParameters )
{
// Create the semaphore to guard a shared resource. As we are using
// the semaphore for mutual exclusion we create a mutex semaphore
// rather than a binary semaphore.
xSemaphore = xSemaphoreCreateMutex();
if( xSemaphore != NULL )
{
if( xSemaphoreGive( xSemaphore ) != pdTRUE )
{
// We would expect this call to fail because we cannot give
// a semaphore without first "taking" it!
}
// Obtain the semaphore – don’t block if the semaphore is not
// immediately available.
if( xSemaphoreTake( xSemaphore, ( portTickType ) 0 ) )
{
// We now have the semaphore and can access the shared resource.
// …
// We have finished accessing the shared resource so can free the
// semaphore.
if( xSemaphoreGive( xSemaphore ) != pdTRUE )
{
// We would not expect this call to fail because we must have
// obtained the semaphore to get here.
}
}
}
}
Regards,
Prithwee
Please Help!
I will put the code in to check, but I do give it back in all instances.
Any idea why the whole OS crashes though?
Please Help!
Did you locked your SPI Read/Write properly?
Post your sample code here…. It may help you!!!
Please Help!
I will put the code in to check, but I do give it back in all instances.
Any idea why the whole OS crashes though?