It sounds like you need to rationalise the usage of ISR. It's OK to call from an ISR. After all, the ISR itself is just a routine, one that happens to be called by the micro itself. What is different of course is that you have to meet certain conditions in order for the ISR system to work properly - eg make sure the ISR is over before the next IRQ or make provision for pending IRQs and context preservation. Time spent tidying things up is probably better spent than time trying to organise a complete dog's dinner of smaller, harder to predict, sub- programs. I'm sure we've all been there, done that, got the T-shirt -- http://www.piclist.com#nomail Going offline? Don't AutoReply us! email listserv@mitvma.mit.edu with SET PICList DIGEST in the body