So I have a K150 PIC programmer, and spent about a week just getting the blasted thing to function in Linux. It managed to program a PIC12F675 twice... and then crapped out. Since I intend to abandon these chips before long, I don't want to put any more money into using them, and so I turned to a project that uses an Arduino as a PIC programmer. A couple hours later, bam, got that set up and re-engineered for my slightly different chip. Some of my best work. Except, it doesn't work.

Looong debugging process short, the PIC isn't entering programming mode. The one thing I managed to get onto this chip was just a "hello world" equivalent of turning on an LED, and that's become a shockingly useful tool; if the LED lights up, it's gone into run mode instead. According to the programming manual, VPP needs to be brought to at least ~8.5 volts, then wait no less than 5us, then bring VDD to ~5 volts to activate programming.

I've got 11.7 volts, and I've tried turning things on at precise times with the Arduino, as well as just manually plugging wires into the board (removing the Arduino from the equation entirely). I thought maybe VPP had to start at true 0 via pull-down resistor (despite no one else seeming to need it), but neither strong nor weak pull-downs made a difference. Of course, I've tried several different chips (though only one has the obvious indicator). Everything meets or exceeds the requirements stated in the programming guide - so what's going on? And why doesn't this seem to be a common issue?

  • \$\begingroup\$ A Vpp-only cycle will not work when the MCLR pin is configured (in the configuration flags) as input pin. In that case you will need a Vpp-before-Vdd cycle: keep Vpp, but power down and and up. Consult the programming manual for more details. \$\endgroup\$ – Wouter van Ooijen Jan 11 '15 at 8:42
  • \$\begingroup\$ @WoutervanOoijen So, Vpp high, Vdd high, then low, then high? No change with that, still just runs. I will add it to my programmer code, though, just in case. \$\endgroup\$ – DigitalMan Jan 11 '15 at 8:50
  • \$\begingroup\$ IIRC that is what I use, but check the programming manual for the details. IIRC there was another way to brick some particular PICs, that had to do with configuring a counter to output directly to a pin (which was on of PGC/PGD) - details were on a uChip forum. \$\endgroup\$ – Wouter van Ooijen Jan 11 '15 at 8:59
  • \$\begingroup\$ I looked at the manual and it seems that you have to start with both MCLR and VDD low, then apply Vpp high (11.7v) followed by VDD high (5v). If this does not force the programming cycle, then you need to do the prior steps shown in the logical process diagram because the programming cycle is only one part of the whole logical process. \$\endgroup\$ – Guill Jan 16 '15 at 6:03
  • \$\begingroup\$ I went back to the manual to get the name of the logical diagram. It is called "flowchart." Also, you must issue a load command before entering the programming cycle. \$\endgroup\$ – Guill Jan 16 '15 at 6:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.