Short version (for those who just need the solution)
If you get the error message that your PICkit3's firmware is out-of-date, go get MPLAB 8 (only for Windows) and let it upgrade the firmware automatically (clickProgrammer -> Select Programmer -> PICkit3
). Then go back to MPLAB X and program your device (of course, select correct target chip). I cannot believe this solution either. But it is from Microchip's support team. Full story
I will be team-teaching Embedded System class next semester, with another faculty member who offered this class previously, using Microchip's PIC24 architecture. However, my first contact with PIC24 is very frustrating.Microchip released a new IDE, MPLAB X, for developing and downloading programs for their chips. Unlike previous one, it supports Linux (whereas ATMEL and Texas Instruments have done years ago). I ordered PICkit3 (the downloader or hardware programmer) and Explorer 16 (the dev kit) from Microchip in the hope to use their technical support later.
Out-of-date firmware in PICkit3
However, downloading programs using PICkit3 and MPLAB X frustrated me a lot. The error message didn't help or the information was not consistent with what happened.When I first finished a hello-world program and tried to download, I got a self-contradictory error:
Connecting to MPLAB PICkit 3... Firmware Suite Version.....01.22.08 Firmware type..............dsPIC33F/24F/24H Your PICkit 3 firmware version is too old. You must have firmware version 01.22.08 or higher to use MPLAB X. Connection Failed.
What?
I tried again and it seems that MPLAB X helped me update the firmware:
Connecting to MPLAB PICkit 3... Firmware Suite Version.....01.22.08 Firmware type..............dsPIC33F/24F/24H Downloading Firmware... Downloading bootloader Bootloader download complete Programming download... Connection Failed.
So I tried again and but even the firmware was messed up:
Connecting to MPLAB PICkit 3... Firmware Suite Version.....01.22.08 Firmware type..............Unknown Firmware Type Downloading Firmware... Downloading RS... RS download complete Programming download... Connection Failed.
Since the firmware was never updated, I contacted Microchip's technical support.
Troubleshooting
After a week, they replied and gave me a very weird solution: updating the firmware using an older version (8) of MPLAB on Windows. I tried and I even got error messages on Windows.Just when I was about to send the Pickit3 back, I plugged it back to my Linux box for last try and some miracle happened. (I guess what happened was that MPLAB 8 on Windows upgraded the firmware to a version from which MPLAB X kept upgrading.)
Connecting to MPLAB PICkit 3... Firmware Suite Version.....01.28.90 Firmware type..............PIC18F Downloading Firmware... Downloading AP... AP download complete Programming download... Firmware Suite Version.....01.28.92 Firmware type..............dsPIC33F/24F/24H Target detected Device ID Revision = 3044 The following memory area(s) will be programmed: program memory: start address = 0x0, end address = 0x3ff Programming... Programming/Verify complete
Conclusion
It took me 2 weeks just to run a hello-world program. I have to say that Microchip does not pave a way for fresh people to learn their stuff. Just a few example:- Why did they send me hardware with firmware greatly out-of-date anyway? And this cannot be solved in their latest software. Instead, I need a previous version to do that. This is a broken solution.
- The user guide for Explorer16 freezes at its 2005 version whereas the hardware programmer and IDE have changed a lot since then. For example, I didn't know how to connect the Explorer16 with PICkit3. There are two ways and one might burn your circuit.
- The "official" PIC24 textbook, written by a Microchip engineering, has wrong example programs. Like the very early one below:
int main(void) { PORTA=0xff; TRISA = 0; return 0; }
How can you output data to Port A before it is set as an output? The first two lines need to be swapped. You won't get the correct value even in software-emulated debugger.
- The unreliability issue of the hardware programmer PICkit3. I will mention it in another post.
Hence, my first contact with Microchip's solution was not pleasant.