As a last resort, you could synchronize the LCD-writes (which I assume are low priority, non-interrupt functions,) to the interrupt:
Code:
// LCD byte-write function
LCD_Write( char data, char data_or_ctrl) {
(set up all outputs except '-CS' to LCD)
Sync_Flag = 0; while ( !Sync_Flag); // wait for clearance from interrupt
CS_n = 0; // we have a few microseconds available ..
delay_us(1);
CS_n = 1; // .. so give a .CS-pulse
}
// add this to interrupt-routine
Sync_Flag = 1;
This would make the LCD-writes safe as long as there is time for the CS_n to be asserted between interrupts.: 'a few microseconds' is plenty
I know there's an official computer-sciencese term for such klugery, but I don't know it.
It's something to be avoided, unless it saves you from a re-design