Do you think there is a way to write it so that is could:
cli() <- disable all interrupts
*secret sauce* <- enable the interrupt for the IRRemote. If the user interrupts, let's not worry about FAST_SPI and let's just figure out what the user is trying to say. Then we can go back to FAST_SPI
do the magic for the TM1809
sei() <- enable all interrupts
If the user is trying to input via the remote, it's not important what FAST_SPI is trying to push to the LEDs, it's important to capture that information. Then after we know what button the user has pressed, we can make some change to some global variable, and then go back to running FAST_SPI.
Sorry I don't really know much about why this can/can't work.
I feel like there must be a way to ignore all interrupts except for when the IRRemote wants to do something, and at those rare instances it's acceptable for FAST_SPI to momentarily 'fail'
Please tell me what I'm totally wrong about.