PICKIT3 Programmer Repair After MPLAB Deadflashed It
This article is about fixing a deadflashed original PICKIT3 programmer. This programmer was ‘destroyed’ completely unexpected by just pressing on the Selftest warning symbol in the MPLAB 8.91 program. I clicked on it thinking it would show me a message why the Selftest shouldn’t be activated on the PICKIT3. But instead it was a warning NOT to click on it. Which is just made really stupid by Microchip! Because afterwards my far over 50 Euro costing device no longer was active on its USB connection. And my computer no longer was able to see the programmer.
How really important firmware is and how bad the PICKIT devices function with some of the PIC microcontrollers shows when they simply refuse to program over their PICKIT ICSP connection. To make it worse it even looks like the old PICKIT3 only works with the older ‘pickit3_programmer_application_v3.10’ program. Because only that program still supports controlling and programming the with the PICKIT3 included 44 pins PIC18F45K20 demo board. And no matter what Windows OS or computer I choose, it simply only works with that old version! Which is a bad and again unexpected thing! But even the new PICKIT4 fails to program those special PIC microcontrollers like the very affordable USB controller PIC16F1454/5/9 PICs over ICSP in the new MPLAB-X software! And I sadly needed to buy this PICKIT4 just to fix the by Microchip’s MPLAB 8.9x deadflashed PICKIT3. So I had to open my now ‘defect’ PICKIT3 programmer. See photo below.
J2 is the ICSP connector that needed to be connected to my new PICKIT4 programmer. I did’t even had to solder any connector or wire to it because I just used the wires that we can buy for Arduino and other experimenter’s boards. Next photo shows that I just pricked in the 5 wires into the J2 connector of my PICKIT3 programmer.
And after some searching on forums I found a file that contained the IMAGE_PK3_012510.hex file (962 kB) to re-flash the firmware back into my PICKIT3 with the to MPLAB-X’s added easy to use MPLAB IPE program. Because that new MPLAB-X version (1,1GB packed!) was necessary to support my new PICKIT4.
So although all versions of MPLAB and MPLAB IPE see our connected PICKIT devices they certainly do not always operate trustworthy because ICSP programming often simply fails and why it does is difficult to find out! It can be all sort of things, too low Vdd voltage, programming LVP not working, HVP programming not working. The only diagnostic we can get is a log function we can activate that is no real help in solving these problems either.
And we need these PICKIT programmers because only they are capable in programming the entire PIC microcontroller family! Not even my RT809H, my TL866A, or any other programmer I have for that matter, is capable in programming ALL those PIC controllers. And they also have an ICSP programming connector but just do not support all PICs! Even the new TL866-II with the ICSP connector only programs the 8 sop PIC24C ‘Bios’ chips! And in my PICKIT3 it is a PIC24FJ256GB106-I/PT chip that controls its firmware that I needed to restore!
It is again like the chicken and egg situation because we need a good programmer to make new – or restore – old programmers! The PICKIT3 is no longer supported by Microchip but identically looking PICKIT3 clone programmers are now easily available for just about 11 dollar/euro on Aliexpress. After I was finally able to re-program the firmware into my PICKIT3 next result was visible.
My PICKIT 3 was again showing! Thanks to my PICKIT4! See below screencopy of the successful programmed PICKIT3.
Before my PICKIT3 was fixed it showed all leds constantly lit! And it was unvisible to my computers. After it was firmware fixed only the green led lit, which also the PICKIT4 does after it successfully programmed any PIC. Nice thing about the PICKIT4 is that it not only programs ICSP PICs but also programs over 2 wire JTAG and has a SD card option. And it supports chips up to as low as 1.2V.
And the PICKIT4 also programs upto 6.6V!
To continue I also needed the mentioned PIC16F1455 programmed as USB controller to run my PE magazine MicroMite fast PIC controlled Basic operated mini computer (See: Geoff’s Projects – Programming PIC Microcontrollers) on my new PE (and Silicon Chip) magazine’s MICROMITE LCD BACKPACK V3 board. And that chip is then called a MicroBridge chip. Because the universal Micromite boards are ideal to control these new 2.8 and 3.5 LCD screens to make new touch controlled portable devices. And my LCD Backpack v3 board also has a 3V3 regulator onboard to supply the VDD voltage for both the PIC15F1455 and the 28 pins PIC32MX170F256D chips. Which is obtained out of the +5V from the USB to serial cable connection (with the RxD and TxD plus GND wire) or from the microUSB connector that also connects to a computer USB COM port.
My new PICKIT4 was perfectly able to program the PIC32MX170F256D (about 8 dollar including shipping) DIL chip over ICSP with the Micromite MKII MMBasic ver 5.05.03 hex firmware file that is free downloadable on Geoff’s great Micromite and MicroBridge website. As can be seen on following screencopy of the in MPLAB’s IPE v5.45 programmed PIC.
MicroBridge is de PIC16F1455 when programmed as an USB controller. And this is the part where it gets tricky. Because programming the PIC16F1455 ICSP after days of trying every programmer circuit and given option turned out to be just impossible. Because both my PICKIT’s never recognized my chip and never were able to program it! And forums confirmed this problem too. No idea if it maybe has to do with Microchip’s software or with my connected circuit’s. But know that I tried every option possible but maybe never the right one!
I knew that on Geoff’s website they use the programmed PIC32MX170F256 chip to program with a basic program the PIC16F1455 to make it a MicroBridge USB controller chip. But at first I didn’t want to use this method as it seemed to much trouble compared to the easy PICKIT ICSP programming method. But because that kept failing I resorted to Geoff’s “MicroBridgeProg.BAS” programming method. That (also free!) method uses the USB to serial communication connection to my PC and a (also free) Terminal program called Teraterm (I used version 4.102) to type in the commands to instruct the MMBASIC in the already programmed PIC32MX170F256D. In order to program my still ‘empty’ PIC16F1455 microcontroller with MicroBridgeProg.bas I just need to PASTE this .bas file into the Teraterm window. But first type in the AUTOSAVE command to make MMBASIC accept this file as if it is typed very fast in by a typist.
On next photo you can see my over RxD and TxD to my PC connected MICROMITE LCD BACKPACK V3 board that is going to program the MicroBridge USB firmware into my on an experimenter’s board placed PIC16F1455 chip. The Micromite LCD Backpack v3 board has still several empty left open positions for future IR sensor,SRAM, an RTC clock, and other options.
Below screencopy shows the Teraterm window with the already running MKII MMBasic version in my PIC32MX170F256D chip. Now we just past the MicroBridgeProg.bas file into this window after we typed in the AUTOSAVE command. (Do not forget to select the as BIN file option in the popup window that follows!). Also set the BAUD rate of your connection to 38.400 else it won’t work!
And we close the AUTOSAVE command after the complete .bas text file is read. And then type CTRL-Z on our PC keyboard which saves this file to Fast Ram in our programmed fast 50 Mhz MMBASIC PIC chip. This program always stays in our processor also after we disconnect the +5V supply voltage.
Removing this program from Fast RAM memory is possible by holding the SHIFT 1 = the ! key combination while powering up our processor. It will show that the program is removed from RAM. We can use several other commands like the LIST command, and they are all mentioned in a downloadable instruction manual also free on Geoff’s website.
However to now program our PIC16F1455 USB controller PIC processor we just press F2 (RUN) and follow the instruction that our Teraterm window gives. But before we do that we need to connect our ‘empty’ PIC that is inserted on a quick experimenter’s board as in following circuit is shown.
And if we do this right our chip gets processed into becoming our USB controller for MicroMite or other boards that need an USB PC connection. As next screencopy shows. It only took 23.882 seconds what in days never worked with MPLAB and my PICKIT programmers! Below the example from Geoff’s website. Next my even faster results when only 23.261 seconds were needed!
Below my already second successfully programmed PIC16F1455 chip!
So to finish this success story I was so happy that programming the special PIC16F1455 now finally worked that I immediately programmed 3 more one after the other!
It no doubt must have occupied many other PICKIT and PIC users why this resulted in making this workaround option by using the Basic programming method written by Peter Mather on Sept 2016. Which really is a fantastic way to solve a strange problem. And looking into the MicroBridgeProg program apparently the program is also capable to recognize the chip’s ID from these PIC controllers. So it is also capable in programming the PIC16F1454 and PICFL1454!
As follows out of this part of the program in our fantastic working .bas file:
Maybe I still will find out why my PICKIT programmers kept failing to recognize and program the PIC16F1455 USB controller. But for now I am glad that my PICKIT3 is fixed and my MMBasic board with four new programmed USB controllers are ready to be inserted in new projects. And thanks to the programmed PIC16F1455 controller the Micromite board from now on is easy USB upgradable on any computer. Anyway, for me it is impossible to fix any existing bug in Microchip’s products that apparently even Microchip is unable to fix! And probably why they stopped supporting the PICKIT3.
And what makes these USB PIC controllers so special is that besides being cheap and small they do not need any quartz crystals because they depend their operating speed from the USB connected host. Also the MMBasic programmed PIC32MX170F256D doesn’t need any quartz either!
Most important is also that I’m again able to make new programmed chips for new interesting projects! In short making new electronic tools that help us out when they are desperately needed!
Like here where the PICKIT failed but the with my PICKIT4 programmed MicroMite chip did the job!
And hereby I am sorry for the many times I used the PIC word in this just 9 Page long article (which apparently was 82 times! ). Next time I will try to PICk another word! (lol)
Albert van Bemmelen, Weert, The Netherlands.
Please give a support by clicking on the social buttons below. Your feedback on the post is welcome. Please leave it in the comments.
P.S- If you enjoyed reading this, click here to subscribe to my blog (free subscription). That way, you’ll never miss a post. You can also forward this website link to your friends and colleagues-thanks!
Note: You can read his previous repair article in the below link: