I'm interested in ways to protect my application from the effects of EMI, power supply spikes, lightning, et. I am considering some of the following: Using the WDT to generate resets; re-initializing registers, to prevent the PIC from hanging in a loop in the event the PC is corrupted. Spreading SLEEP instructions between called routines, and testing for invalid resets or WDT timeouts to call a error handler or re-initialization routine. Loading a register with a unique number, according to the routine that the code is executing, and testing for this number in other routines that rely on the calling routines data. Periodicaly generating and testing checksums in register and User EE Rom. Any other idea's or comments? References to good books or application notes from any manufacturer's? Has anyone experienced problems that would justify going to this much trouble? Thanks.