I am trying to get an application working with two user threads. The first reads a sensor over I2C every time the sensor asserts an interrupt pin. The second runs a periodic calculation which does not yield to the kernel for 200ms or so. The sensor thread has real time priority. The calculation thread has normal priority. Round robin is turned off.
When the calculation starts, the I2C read is blocked. I don't understand this. The interrupt still fires, and events are placed in the sensor message queue, but waiting on the queue does not return until after the calculation thread goes back to sleep.
I tried turning on the round robin. This sort of works, but only reads the sensor intermittently, and then locks up completely pretty quickly.
I'm pretty sure this was all working correctly under RTX4. I upgraded because I thought the CMSIS RTOS2 API was better. I must be doing something wrong.
All suggestions appreciated.