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:
https://jestineyong.com/acer-5560-bios-corrupt-after-windows-10-upgrade/
Parasuraman S
November 10, 2020 at 9:38 pm
I feel none can match your perseverance and pursuit for perfection! You have covered a lot of ground, with additions to your knowledge and tools! Excellent and elaborate article packed with tips! Many thanks!
Albert van Bemmelen
November 10, 2020 at 10:47 pm
About covering a lot of ground dear Parasuraman...It took me a couple of weeks to solve a problem on another project I was working on but which kept failing! Building a portable dual channel oscilloscope with mini LCD around an STM32F103 module (very cheap on Aliexpress or eBay, with or without programmer dongle) was no problem at all (project on Instructables by WilKoL and CreativeLau). Because programming the dual channel oscilloscope MCU module also called 'the blue pill' worked right away but programming the STC8C8K64S4A12 for a single channel oscilloscope with the needed STC-ISP programmer software never seemed to work! Until I read today that programming over TxD RxD connection only works AFTER the Vcc on the processor is removed and reattached. THAT WAS THE TRICK I today learned. So I am very happy and will also soon have added 2 new cheap and portable battery operated oscilloscopes to my electronic tools and equipment. Ideal for measurements in the field.
Konstantinos Xatzakis Crete-Greece
November 11, 2020 at 2:31 am
Admirable patience & courage… always perseverance pays off !
Albert van Bemmelen
November 12, 2020 at 2:49 am
There are always moments that I am stuck when for some reason something doesn't work like in the situation I mentioned in my reply to Parasuraman above this post where the STC processor never was recognized although my USB to serial adapter was working fine and the STC-ICP program worked fine too. And I already had connected everything including Vcc (+5V) to the processor but programming the fast STC8A8K64S4A12 processor kept failing why I gave up for a couple of days. But later I picked up where I left after I somewhere read that Vcc must be reattached to activate the programming process. Sadly no one told me. Even the STC MCU seller never gave a hint to try that why it looked as if both my 2 STC controllers were dead. I believe it was on this website that I read about the solution: https://jaycarlson.net/pf/stcmicro-stc8/ So I hope Konstantinos that this saves you this trouble in case you also use the STC-ISP software to program the STC microcontroller.
Albert van Bemmelen
November 12, 2020 at 2:57 am
Here is an article that also tells how to program the STC MCU here:
Which says: In addition, STC Series MCU
ISP monitor program is running on the power up, if you want to download the program code, you need
to restart the MCU, which is the first to disconnect the power supply, and then on the power.
Waleed Rishmawi
November 11, 2020 at 2:47 pm
wow. that is a lot of information to grasp and understand. I am admire your patients and the hard work to get this done. keep up the good work my friend and have a blessed day
Albert van Bemmelen
November 12, 2020 at 2:26 am
I'm glad that with some help from Google and all PE magazine articles I already had printed out for reading about the MicroBridge and the MicroMite paid off Waleed. And to show you what great things already can be made with this within a second powering up superfast microcomputer have a look at this site: https://micromite.org/shop/.
Have a good blessed week!
Yogesh Panchal
November 13, 2020 at 11:00 pm
Good Job! Albert,
Now a days more and more gadgets having programmable chips inside the equipment... now future repair jobs are mainly on this bases. technicians Will have to update with this programming technology or else they are unable to survive in this industry.
Albert van Bemmelen
November 14, 2020 at 12:31 am
You are very right Yogesh! Sadly even if we buy a good programmer like the TL866-II, or the Nand programmer RT809H, thinking we can program most of the known chips with them, we'll only find out that we still can't. certainly not in the parallel programming way. And although ICSP is available most devices still can't be programmed with mentioned programmers because they are not supported like the PICF1455 and the STC8A8K64S4A12 processor. And we have to use other manufacturer dedicated software over ICSP/serial TxD RxD connection. I already own at least 4 different programmers and still also have to use special Jtag programmer interfaces and different manufacturer related programs for my FPGA chips made by Xilinx or from Atmel.
Albert van Bemmelen
November 17, 2020 at 1:42 pm
Addendum: The in PE and Silicon Chip magazine presented ADF4351 4400MHz touchscreen controlled and also in MMBasic programmed frequency selector basic program was yesterday successfully installed on my in this repair article mentioned LCD Backpanel board V3.0, with the PIC32MX170F256D 50 MHz processor on it. It makes a fantastic upto 4400 MHz selectable precision generator!
Andrea Del Corso
November 25, 2020 at 1:35 am
Che meraviglia Albert!Complimenti vivissimi!
======================================
How wonderful Albert! Congratulations!