My initial thoughts are no and are how could this possibly be true as interrupts still have direct access to registers. However I have been seeing some interesting situations where the LED does not change state or sometimes misses its state change altogether.
E.g. If I were to trigger an interrupt every 200ms and change the state of the port every interrupt cycle, I should see the led flash 3 times every 6 port changes. I know that this code is operational because I have the following output which acts as a decrement counter:
Error 3 22 21T 20 19T 18 17T 16 15T 14 13T 12 11T 10 9 8 7 6 5 4 3 2 1
Please ignore the amount of numbers, however, the 'T' is outputted EXACTLY next to the port change of state, such that:
Uart_PutChar('T'); if (PORTC & (1<<PC1)) PORTC &= ~(1<<PC1); else PORTC |= (1<<PC1);
Majority of the time, the LED's will flash correctly until a large amount of data is transmitted through my other UART and a timer interrupt that does a lot of processing. Though the above is still displayed such that I think the LED's should still flash correctly and I can still see that the UART output streams out with delays between it.
Any ideas on what I may be doing wrong?