Given your detailed explanation of what is happening and your hardware/software design, I'd say you either have a problem in the hardware or in the software, or both. That should narrow it down nicely for you.
Seriously, do you imagine we have some kind of crystal ball here?
cheers,
george.