> I am also thinking of the possibility that the basic > compiler I use may mask interrupts when performing certain > "special" instructions (or rather macros) such as writing to > a LCD display module. This I could find by browsing in the > assembler file... It is quite likely that interrupts are being turned off in some routines. Quickest way to find out is to set up a timer interrupt at the byte rate you expect from the I2C port and just toggle a bit. Any jitter in the width of the pulses will show you just how bad the latency is. You could also toggle a 'debug' bit as part of your I2C service routine. I found that setting a bit at the start, and clearing it just before I returned, gave me a great deal of insight into how well my various ISR routines were handling things, and helped me add additionally polling points as required. Robert -- http://www.piclist.com hint: To leave the PICList mailto:piclist-unsubscribe-request@mitvma.mit.edu