Handling interrupt

Dears, I want to have ISR which is out of freeRTOS scope (not handled by rtos – interrupt whose priority level is greater than configMAXSYSCALLINTERRUPT_PRIORITY), I sync it with a task in rtos. Since I do computation (math/filtering) within this ISR on periodic base I need to keep ISR variables over time. My ISR is high frequency rate ISR. My question is what/how variable should I use (local,static,global)? What is the limitation on variable use for this ISR which is out of rtos? Under preemptive scheduling do I have either time different stack? Thank you. peb

Handling interrupt

This is a C question, not a FreeRTOS question. In C a variable declared as a local variable inside a function will be allocated to either the stack, or a register. In either case the value of the variable will not persist across calls to the function – no matter if that function is executed in an interrupt or not. If the variable is declared inside the function as a static variable, then it will not be on the stack and its value will persist across calls to the function. Likewise if the variable is global it will always be accessible and its value will not change unless changed by your code. Regards.

Handling interrupt

Thank you for your answer, what you wrote is quite understandable. I am starting to use rtos so questions are quite entry level. My ISR is out of freeRTOS, I use local variables there and if there is a preemptive scheduler which switch stacks per task, does it affect my local ISR variables? The ISR local variables is allocated on stack, so which particular one if each task his its own stack? Thank you.

Handling interrupt

Tasks are software controlled and interrupts are a feature of the hardware – a task can never preempt an interrupt, but an interrupt can preempt a task – so you do not need to worry about a task switch interfering with the stack of an interrupt. Regards.