Joined: 07 Nov 2010
|ICD-U40/CCSLoad won't ID a 30F4011, but PICKit 3 does...
|Posted: Sat Mar 17, 2012 11:44 am
|This has got me puzzled...
I'm trying to program a dsPIC 30F4011, on a breadboard. I've disconnected everything except the MCLR resistor, decoupling caps and clock.
CCSLoad repeatedly and unfailingly reports that the device ID is wrong, reading C081 instead of 0101.
I've checked and rechecked everything, and diagnostics reports correct voltages etc. I've updated to the latest CCSLoad and firmware (I was a point behind).
However... if I plug the connector cable into a PICKit 3, then MPLab programs it without error and the program works.
When I plug back into the U40 - still no go as above.
The U40 worked earlier on an 18F452 and dsPIC 30F4013.
I've even tried changing the device ID in the database using chipedit, to make it C081. Then, CCSLoad lets me erase and blank-verify the chip, and program it but the program then fails to verify.
Any ideas folks?
Edit to add more info
I've just carefully pulled the 30F4011 from between the wires on the board, slipped a 30F4013 in its place and swapped over the PGC/PGD connections to where they should be for the 4013. CCSLoad recognises the 4013 instantly. No problem.
I put a different 30F4011 back in place, swapped the wires, and it reads the same as the first one: C081.
I'm at a loss with this - I know the 30F4011 should have an ID of 0x0101 - I've checked the programming specification.
Clearly MPLab/PICKit3 get it right - so what's going on with CCSLoad/ICD-U40?
Another edit - Solution Found:
I'm not sure whether this is caused by a design fault in the dsPIC30F4011 or non-compliant performance of the ICD-U40.
The workaround is to connect a 47pF capacitor between PGC and ground. Then the ICD-U40 reads the correct ID. I've not had chance to try programming yet; I'll do that tomorrow.
Other programmers seem to have had this issue with the 4011 but Microchip's programmers work (of course).