FreeRTOS Support Archive
The FreeRTOS support forum is used to obtain active support directly from Real
Time Engineers Ltd. In return for using our top quality software and services for
free, we request you play fair and do your bit to help others too! Sign up
to receive notifications of new support topics then help where you can.
This is a read only archive of threads posted to the FreeRTOS support forum.
The archive is updated every week, so will not always contain the very latest posts.
Use these archive pages to search previous posts. Use the Live FreeRTOS Forum
link to reply to a post, or start a new support thread.
[FreeRTOS Home] [Live FreeRTOS Forum] [FAQ] [Archive Top] [March 2015 Threads] Handling interruptPosted by pebemspn on March 15, 2015 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 interruptPosted by rtel on March 15, 2015 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 interruptPosted by pebemspn on March 17, 2015 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 interruptPosted by rtel on March 17, 2015 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.
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.
|