pic interrupt reentrancy
Answer is same as previous:
• ISRs cannot return a value.
• ISRs cannot be passed parameters.
• On many processors/compilers, floating-point operations are not necessarily re-entrant. In some cases one needs to stack additional registers. In other cases, one simply cannot do floating point in an ISR.
• Furthermore, given that a general rule of thumb is that ISRs should be short and sweet, one wonders about the wisdom of doing floating-point math here
• In a vein similar to the third point, printf() often has problems with reentrancy and performance. So avoid it ISR.
Added after 4 minutes:
Beside above answer few things can be added for reentrancy is:
In the embedded world a routine must satisfy the following conditions to be reentrant:
1. It uses all shared variables in an atomic way, unless each is allocated to a specific instance of the function.
2. It does not call non-reentrant functions.
3. It does not use the hardware in a non-atomic way.
Added after 57 minutes:
Also design your ISR such that whenever it runs, disable all other interrupts.