|
|
View previous topic :: View next topic |
Author |
Message |
ghanka Guest
|
After write_program_memory(), PIC18F4320 invis to ICD-U40 |
Posted: Wed Jun 23, 2004 9:11 am |
|
|
If I do a write_program_memory(..) on a PIC18F4320, the chip can no longer be detected by an ICD-U40.
Subsequent calls to read_program_memory verify that writes execute correctly. In fact, everything continues to work normally, except for the interface to the ICD-U40.
I have tried using the WRTB, WRTC fuses to protect the configuration words, to no avail.
The problem occurs on a simple program with only three lines:
int8 workspace[64];
write_program_memory(1024, workspace, 64);
while (true);
Help!
Gordon |
|
|
ghanka Guest
|
more info and lousy workaround |
Posted: Fri Jun 25, 2004 9:19 am |
|
|
I have further refined my diagnosis.
A PIC18F4320 will *permanently* lose contact with an ICD-U40 when:
1) The NOMCLR fuse is set.
2) A call to the PCWH subroutine WRITE_PROGRAM_MEMORY(..) is executed.
Afterward, any attempt to reprogram the chip results in a "Could not detect target chip" error.
The chip otherwise continues to function normally, and can perform multiple read_program_memory(..) and write_program_memory(..) instructions correctly.
The only workaround I have found is to set the MCLR fuse. This means, among other things, no use of the MCLR line for IO.
This problem happens with:
1) The latest (June 25, 2004) versions of PCWH, ICD.exe, and ICD firmware.
2) ICSP circuitry as specified by CCS, including 50K MCLR pullup, which has functioned flawlessly for hundreds of chip reprograms.
3) A program that contains only one statement, a call to write_program_memory(..) to write a block of 64 bytes to an unused memory area.
4) Fuses set to protect the config and ID memory areas.
gordon |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|