View previous topic :: View next topic |
Author |
Message |
Hans Wedemeyer
Joined: 15 Sep 2003 Posts: 226
|
Beware ICD-U40 will destroy chips. |
Posted: Mon Aug 02, 2004 11:28 am |
|
|
I have been using the ICD-U40 on a 3.3V project for some time.
Yesterday I needed to program some protection fuses, and later I changed my mind...
It is not possible to erase the fuses if the target is 3.3V it has to be a 5 Volt Target.
So, two PIC18F6720 chips bite the dust...
CCS tech. support confirms (by email) this is a problem.
Conclusion : When it comes to changing fuses, treat the chip as a OTP device.
This stinks... the ICD-U40 is sold as a 3.3V and 5Volt unit... |
|
|
Mark
Joined: 07 Sep 2003 Posts: 2838 Location: Atlanta, GA
|
|
Posted: Mon Aug 02, 2004 12:06 pm |
|
|
Are you using Low Voltage ICSP programming? |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Mon Aug 02, 2004 1:03 pm |
|
|
I'm not sure this is a CCS issue. According to the 18F6720
programming specification, Bulk Erase is the only way to re-program
the Code Protect bits. (Section 3.1) Also, Bulk Erase must be
done with VDD at 5v nominal. This is shown in parameter D111
in the AC/DC Timing requirements section.
http://ww1.microchip.com/downloads/en/DeviceDoc/39583b.pdf
So if your circuit is designed to use a VDD = +3.3v for the PIC,
and has no way to temporarily change that to +5v, then I don't
think you can do a Bulk Erase.
I don't own the CCS ICD, but they have a Trouble-shooting guide
available for download here: http://www.ccsinfo.com/ccs_icd_trblsht.zip
To answer Mark's question, on page 2 of the guide, it says:
Quote: | The ICD does not use the Low Voltage Programming mode. |
Here's some more information from the Microchip user forum.
User tjdiamond is also running a 18F6720 at +3.3v. His Promate
programmer can't erase the protection bits. Apparently, he is
using the Promate to supply +3.3v power to the board. So he
concludes that he must set the Promate to +5v and erase the
PIC. He hopes that the 250ms erase time at +5v will not damage
the other chips on the board. He didn't post an update to
say if it worked. But if you login to the forum, you should be
able to email him. He was still active on the forum as of June 15, 2004.
http://forum.microchip.com/tm.asp?m=34395 |
|
|
Guest
|
|
Posted: Mon Aug 02, 2004 1:59 pm |
|
|
PCM programmer wrote: | I'm not sure this is a CCS issue. According to the 18F6720
programming specification, Bulk Erase is the only way to re-program
the Code Protect bits. (Section 3.1) Also, Bulk Erase must be
done with VDD at 5v nominal. This is shown in parameter D111
in the AC/DC Timing requirements section.
http://ww1.microchip.com/downloads/en/DeviceDoc/39583b.pdf
So if your circuit is designed to use a VDD = +3.3v for the PIC,
and has no way to temporarily change that to +5v, then I don't
think you can do a Bulk Erase.
I don't own the CCS ICD, but they have a Trouble-shooting guide
available for download here: http://www.ccsinfo.com/ccs_icd_trblsht.zip
To answer Mark's question, on page 2 of the guide, it says:
Quote: | The ICD does not use the Low Voltage Programming mode. |
Here's some more information from the Microchip user forum.
User tjdiamond is also running a 18F6720 at +3.3v. His Promate
programmer can't erase the protection bits. Apparently, he is
using the Promate to supply +3.3v power to the board. So he
concludes that he must set the Promate to +5v and erase the
PIC. He hopes that the 250ms erase time at +5v will not damage
the other chips on the board. He didn't post an update to
say if it worked. But if you login to the forum, you should be
able to email him. He was still active on the forum as of June 15, 2004.
http://forum.microchip.com/tm.asp?m=34395 |
They are selling the ICD-U40 for 3Volt systems...
I'm mad about this because it would take about 5 minutes to program a dialog telling the user that the fuses cannot be erased.
I had the same crap wit the ICD-U40 reporting wrong Vdd for this 3.3V system. After complaining I was told it cannot read the Vdd of the target.... My reply was simply, then don't make that feature available.
They took my advice and added a message.
There should also be a LARGE text notice to all ICD-U40 users to "NOT PROGRAM the fuses on 3.3Volt systems" because they cannot be erased...
I may be cabbage looking but I'm not completely green.... Not way will I risk putting 5Volt on the remaining components (Blue tooth, GPS most critical) My solution was remove the chip and replace it.
Now I need to wire up a pcb to bulk erase the chips on a 5V system, what a waste of time... maybe I'll just trash can these... |
|
|
Mark
Joined: 07 Sep 2003 Posts: 2838 Location: Atlanta, GA
|
|
Posted: Mon Aug 02, 2004 2:03 pm |
|
|
Don't suppose you could cut a trace to the power as a short term solution? A long term would be to provide a jumper or a means to isolate the 5V from the other components. |
|
|
Darren Rook
Joined: 06 Sep 2003 Posts: 287 Location: Milwaukee, WI
|
|
Posted: Mon Aug 02, 2004 2:24 pm |
|
|
Doesn't ICD-2 have the same problem? |
|
|
bdavis
Joined: 31 May 2004 Posts: 86 Location: Colorado Springs, CO
|
|
Posted: Mon Aug 02, 2004 3:18 pm |
|
|
I'm also using 3.3 Volts for Vdd and the ICD-U40, but the boards aren't completed yet, so I haven't gotten to try it out yet.
The ICD-U40 should put 12 to 13 volts on /MCLR (Vpp) when programming, and you should be able to clear or reset the fuses due to this. In our design, we put a schottky diode between /MCLR and Vdd to protect Vdd from 13V supply of the ICD-U40. CCS recommends a 47K ohm resistor to limit the current (and protect your chips). Did you put a 47K ohm resistor between /MCLR and Vdd ?
I have had a difficult time finding information on 3.3V stuff, since so few use it, and I haven't built a prototype running at 3.3V yet.
This is what I found out so far - please let me know if I heard wrong on any of this:
-> Vdd of 3.3V should be connected to RJ-12 Target Pin 2 (the FAQ said +5V, which is wrong if your design is running below 5V). The PIC isn't 5V tolerant when running at 3.3V, so the chip may be damaged.
-> FAQ states RJ-12 Target Pin 1 should have a pullup of +5V - I think this is also wrong if running at 3.3V and using the ICD-U40 - should be 3.3V.
-> I could not find out what the jumper is for inside the ICD-U40 - if you know, please share the knowledge. (Maybe programming the internal PIC or to enable/disable sourcing Vdd to your target ?).
-> The ICD-U40 does not require power from the target - it gets it from the USB interface. (Can the ICD-U40 provide power to your target ?)
-> The RJ-12 Target Pin 2 is used to source pullups on RB6 and RB7.
-> CCS posted a new (EXCELLENT ) pdf on using and troubleshooting the ICD. (in the download section - highly recommended).
-> Any other issues of working with 3.3V that some guru's are aware of? |
|
|
bdavis
Joined: 31 May 2004 Posts: 86 Location: Colorado Springs, CO
|
|
Posted: Mon Aug 02, 2004 3:32 pm |
|
|
Programming Voltage -
Another thing I found very confusing:
- The ICD-U40 uses High Voltage Programming - Good for me, it's faster and can clear or change the fuses and use block programming. (I'm planning on using this to program all parts with a bootloader using ICSP).
- The Low Voltage Programming may be used by setting a fuse, and setting one of the pins on Port B low. (I'm not planning to ever use this, and it is NOT used by the ICD-U40, even if running Vdd at 3.3V)
- The bootloader does NOT use Low Voltage Programming mode, but can write to program memory (flash) when powered at 3.3V. That is what I found the most confusing. Also, the bootloader or any code can't change the fuses when running at Vdd less than about 5V. I'm planning on having FW upgrades or updates downloaded via RS-232 (using a bootloader) while the PIC is running at 3.3V.
Does anyone see any issues with this? |
|
|
Guest
|
|
Posted: Mon Aug 02, 2004 4:14 pm |
|
|
Mark wrote: | Don't suppose you could cut a trace to the power as a short term solution? A long term would be to provide a jumper or a means to isolate the 5V from the other components. |
Not on this board. However when I make another board I can plan for it. |
|
|
Guest
|
|
Posted: Mon Aug 02, 2004 4:29 pm |
|
|
bdavis wrote: | I'm also using 3.3 Volts for Vdd and the ICD-U40, but the boards aren't completed yet, so I haven't gotten to try it out yet.
The ICD-U40 should put 12 to 13 volts on /MCLR (Vpp) when programming, and you should be able to clear or reset the fuses due to this. In our design, we put a schottky diode between /MCLR and Vdd to protect Vdd from 13V supply of the ICD-U40. CCS recommends a 47K ohm resistor to limit the current (and protect your chips). Did you put a 47K ohm resistor between /MCLR and Vdd ?
I have had a difficult time finding information on 3.3V stuff, since so few use it, and I haven't built a prototype running at 3.3V yet.
This is what I found out so far - please let me know if I heard wrong on any of this:
-> Vdd of 3.3V should be connected to RJ-12 Target Pin 2 (the FAQ said +5V, which is wrong if your design is running below 5V). The PIC isn't 5V tolerant when running at 3.3V, so the chip may be damaged.
-> FAQ states RJ-12 Target Pin 1 should have a pullup of +5V - I think this is also wrong if running at 3.3V and using the ICD-U40 - should be 3.3V.
-> I could not find out what the jumper is for inside the ICD-U40 - if you know, please share the knowledge. (Maybe programming the internal PIC or to enable/disable sourcing Vdd to your target ?).
-> The ICD-U40 does not require power from the target - it gets it from the USB interface. (Can the ICD-U40 provide power to your target ?)
-> The RJ-12 Target Pin 2 is used to source pullups on RB6 and RB7.
-> CCS posted a new (EXCELLENT ) pdf on using and troubleshooting the ICD. (in the download section - highly recommended).
-> Any other issues of working with 3.3V that some guru's are aware of? |
I have a 22K ... and that has protected the other chips... |
|
|
bdavis
Joined: 31 May 2004 Posts: 86 Location: Colorado Springs, CO
|
|
Posted: Tue Aug 03, 2004 7:04 am |
|
|
Can you swap out the 22K for a 47K resistor? |
|
|
Guest
|
|
Posted: Tue Aug 03, 2004 7:21 am |
|
|
bdavis wrote: | Can you swap out the 22K for a 47K resistor? |
There is no magic about 47K.... even 10K would have protect the rest of the circuit.... |
|
|
bdavis
Joined: 31 May 2004 Posts: 86 Location: Colorado Springs, CO
|
|
Posted: Tue Aug 03, 2004 8:44 am |
|
|
If the 22K (or 47K) can protect your PIC from the 13V Vpp, what is frying the chip? I'm a little concerned about a board that will be going to production soon. |
|
|
Darren Rook
Joined: 06 Sep 2003 Posts: 287 Location: Milwaukee, WI
|
|
Posted: Tue Aug 03, 2004 9:54 am |
|
|
The chip isn't being fried. You just can't bulk erase a chip when it's running at 3.3V. And the only way to erase a chip fuse settings is to do a bulk erase. You can take your pick - blame the PIC or the ICD. |
|
|
Guest
|
The blame game |
Posted: Tue Aug 03, 2004 5:31 pm |
|
|
Darren Rook wrote: | The chip isn't being fried. You just can't bulk erase a chip when it's running at 3.3V. And the only way to erase a chip fuse settings is to do a bulk erase. You can take your pick - blame the PIC or the ICD. |
I prefer to blame myself for being silly enough to trust the ICD :-)
The ICD is sold as workig with 3 Volt systems, it should also be clearly stated that with 3 volt operartion there are limitations.
It would be a better public relations exercise for CCS to take proactive steps to avoid this kind of hassle for the customers.
It would take me about 15 minutes to add code to check the fuses, if they have changed and if the target is a 3Volt system, warn the operator about the problem.
The warning box could have a "check box" for thoses that don't like warnings to "not display this message in the future" and then when they "destroy" the chip they have themselves to blame....
I use the term "destroyed" simply becasue it's not that easy to bulk erase this kind of chip. It's 64 pin TQFP and not everyone has the equipment to safely remove them without the addional risk of destroying the PCB. To bulk erase these chips I would have to solder them to a special PCB that has a 5 Volt supply and then unsolder them for future use...
Frankly that will stress the chip so much it is hardly worth using for anything.
So the term "destroyed" is still valid...
With ICSP one does NOT expect to remove a chip for bulk erasing...
However someone pointed out a jumper scheme for isolating the chip could be a solution. I don't like that idea, but it may be OK for prototypes.
If there is blame to be heaped upon anyone, I'd say Microchip are a prime candidate... Why make a chip that can operate at 2 Volts and them require 5 Volts to erase the fuses.
If the rest of the registers can be programmed with VPP then the Fuses should have the same option. |
|
|
|