Yes, I see. I guess that’s why you earn the big bucks.
And while I have fearless and successfully used interrupts, my first and second and third approach is to code around any perceived need to do. Therefore quite rarely.
So good thing this isn’t my problem. This is a case where I would discover the problem because my solution didn’t work, whereas a few minutes of competent thinking it through would reveal the flaw.
I am confused by the idea of what “global environment” is in effect during the interrupt service period. The ISR has access to any global variables, so would the same statements in a function with the same lines. Other than that, what could be different?
In fact trying to think about it raises a question for the OP and anyone who’s a bit further along with this - why the objection to suppressing interrupts when you don’t want them to happen? Is that undesirable unfashionable or illegitimate?