ICD2 has this kind of problem with chips like 12F629/675 and ICD2 is not behaving correctly when Internal MCLR and Internal Oscillator configuration settings are selected. The work-around is not a work-around after all since for a 8-pin device normally one will use internal MCLR and internal oscillator to have 6 I/O pins (5 I/O plus 1 input only to be precise). There is a trick to get around but it is not so elegant (to add external circuit to delay Vdd) and may not always work. This is precisely I dump ICD2 for 12F629 programming and use PICkit 1. This is one of the limitation of ICD2. For 16F688 probably one can forgo one input only pin and not use the internal MCLR option. >From MPLAB ICD2 help file: " ICDWarn0033: You have selected Internal MCLR and Internal Oscillator in your configuration settings. If your code makes use of port pins that correspond to Clock and Data pins in programming mode, you may not be able to reprogram your device. See on-line help for this warning for more information. (OK/Cancel) When Internal MCLR is used with MPLAB ICD 2 for programming, both Vpp and Vdd are powered together, and then Vpp is pulled high to Vihh to enter programming mode. This means that your code will be running before Vpp goes to Vihh. If that code makes use of port pins that correspond to Clock and Data pins in programming mode, there is a chance their values may not be 0, as necessary to enter programming mode. Therefore, the device could not be reprogrammed. Click OK to continue programming or click Cancel to cancel the programming operation. Work-Around When External MCLR is used, this is not a problem, as Vpp can go directly to Vihh. Also, if External Oscillator is used, the external oscillator can be kept from running, thus keeping the code from running, until Vpp is at Vihh." -----Original Message----- From: Ian Chapman [mailto:pic@chapmip.demon.co.uk] Sent: Friday, July 15, 2005 5:18 AM I'm wondering how an ICD2 (for example) behaves when it is connected to the target system but allows code to run by releasing /MCLR so that it can be pulled high by a resistor to Vdd. I'll have to try some tests. If the programmer always disconnects its own Vdd supply to the target as /MCLR is released, then I think this is safe behaviour in my situation. If my two-way link is set for "programming" (Vdd from programmer) then the PIC will be unpowered, and if it's in the "normal" position (Vdd is 3.3v) then the PIC will run off the 3.3V supply. Either way, the 3.3V- only chip shouldn't see +5V on any of its inputs. I've just read section 3.0 of the PIC12F6XX/PIC16F6XX Memory Programming Specification and it seems to be consistent with this interpretation. Is my reasoning sound? -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist