OK sorry I must have filed it wrong. I'm a n00b :). I have no evidence that there is a bug in FreeRTOS. What I'm seeing is unexplainable, at least to me, so I was hoping to draw from the broader user community that might have seen something similar. I will of course share any findings on my part. Can you please leave this as an open discussion, even if it's not a BR/FR? thanks!
seems like I found what caused the problem, even though I'm not quite sure why. I set a couple of GPIO interrupt priority values to the same as configKERNEL_INTERRUPT_PRIORITY, meaning the lowest prio, in my system = 7. Once I set the GPIOs to 6 the problem went away. (ARM Cortex, so prio 6 > prio 7) NEVER MIND - spoke too soon. This "fix" delayed the problem but it's still there. Stumped.
seems like I found what caused the problem, even though I'm not quite sure why. I set a couple of GPIO interrupt priority values to the same as configKERNEL_INTERRUPT_PRIORITY, meaning the lowest prio, in my system = 7. Once I set the GPIOs to 6 the problem went away. (ARM Cortex, so prio 6 > prio 7)
ulTaskNotifyTake returns 0 without blocking
You're right that I didn't understand it so thanks for your insights. I measured the overhead. Of course it depends on your hardware, but on my cortex M4 I saw 69 +/- 4 usec, which is acceptable for my needs. I still unfortunately need to malloc in ISR. The reason is that I'm using a 3rd party stack that makes a callback from the radio reception ISR where it expects the return value to be a pointer to allocated memory. I've solved that with a memory pool. I wouldn't suggest that it's the best practice...
Hi Richard, thanks for your response. I'm using xTimerPendFunctionCallFromISR() for some initialization code triggered by GPIO. This is very handy when the decision is simply "if button N is pushed, run function X". For other functions it can be trickier. For example during reception, I get a descriptor pointer from the lower layer. I then need to add some information like timestamp, to which task to forward the descriptor, and a few more parameters. xTimerPendFunctionCallFromISR() only allows a...
Feature Request: Heap from ISR + Dynamic queues