Semaphore doesn't wait for blocktime

chaabanemalki wrote on Wednesday, February 18, 2015:


I have a semaphore that at some point returns pdFALSE (0) immediately without waiting for the defined blocked time.

This is how my code looks like

while ( condition )
    // Send DATA1
   if (xSemaphoreTake( GSM_Rdy2Snd_bSemphore, FTP_TO ) == pdPASS )
    // Treat response;


FTP_TO is TickType_t type. and is initialized before starting the scheduler .

First I send DATA1, so the semaphore wait “FTP_TO” seconds before returning pdFALSE. The code will send again DATA1 and the semaphore at this point will return 0 immediately without waiting FTP_TO ? I’m not sure what might be the issue here ?

I’m using PIC32MX port and FreeRTOS V8.0.0.
Below is the trace log view of the weird behavior I described above

Image and video hosting by TinyPic


rtel wrote on Wednesday, February 18, 2015:

How is the trace log being generated? Are you using trace macros? If so, what is the behaviour if you remove the trace macros - the same or different? (by remove I mean don’t define them so they get defined away to nothing an don’t generate any code)


chaabanemalki wrote on Thursday, February 19, 2015:

I use FreeRTOS+Trace library to generate this trace log.
I’ll try to disable it and try to see what would happen.