技术热线: 4007-888-234

ICD2烧录器部分错误问题总汇

更新时间: 2019-01-05
阅读量:3070

1、 调试时出现ICDWarn0015: Program memory has changed since last program operation?

答:程序修改之后没有再重新编译、烧写到芯片里。

2、 连接ICD2时显示“ICD0019: Communications: Failed to open port: (Windows::GetLastError() = 0x2, ‘系统找不到指定的文件。’) ICD0021: Unable to connect with MCU.”

答:通常是ICD2驱动找不到,需重装。也可能是由于PC的USB口供电不足导致驱动无法正确加载。

3、ICD0019:Failed to open port:ICD0021:Unable to connect with MPLAB ICD2

答:先请确认,

1)ICD2是否通过USB连接到PC,且设置中的POWER设置是否正确;

2)驱动是否正确安装,或者由于PC的USB口供电不足导致驱动无法正确加载。

如果热插拔ICD2的USB线,很容易出现以上提示,关掉MPLAB IDE,过一会再重新打开软件并连接即可。

4、 ICD2自检通过,但提示没找到目标ID,读到的ID是‘0’,显示“ICDWarn0020: Invalid target device id (expected=0x89, read=0)”

答:此时首要任务是检查硬件连接,PGC/PGD有无接错,或PGD/PGC上有容性负载或感性负载。若是PIC18J器件,请确认vddcore是使能且该脚接了0.1-10uF的低ESR电容。注:ICD2到目标板的连接线如果是一端水晶头,一端插针的,要注意蓝色才是第一根,白色一般是不用的。

5、ICDWarn0020:Invaild target device id (expected=0x……, read=……)。

A2:1)如果读出来的ID不是0或者全1,则为软件上选择的芯片与实际芯片不符合。

2)如果读出来ID为0, ICD2主机与芯片之间的6芯扁平电缆的水晶头与卡座之间由于经常需要拔插的缘故比较容易松动而导致接触不良,大部分的0020警告都是由于这个原因产生的。请检查六芯线是否接触不良,芯片与芯片座是否接触不良,芯片与六芯线连接是否正确。

另外,电源地未连接好,包括目标板电源负载不足导致供电不足,也可导致此提示。常见为只连接了一组的电源地到六芯线处,请把所有电源地均连接好,包 括AVDD,AVSS。

若是PIC18J器件,请确认vddcore是使能且该脚接了0.1-10uF的低ESR电容。

6、 ICD2自检通过,但提示没找到目标ID,读到的ID不是‘0’, 但和期望的不符合,显示“ICDWarn0020: Invalid target device id (expected=0x89, read=0x71)”。

答:首先检查芯片型号选择是否正确;如果是Debug模式下出现该提示,要先确认所选的MCU是否需要header才可通过ICD2调试。如果用了header出现该提示,那么检查header上用来设置ADC的enable/disable的跳线,这个跳线也会影响目标device的ID。

7、 连接ICD2时显示“ICD0021: Unable to connect with MPLAB ICD 2”。

答:请检查一下ICD2与电脑连接的通讯口是否设置正确(USB or COM)。

8、 有些芯片使用时用到了内部晶振和内部复位,如PIC16F630/690等,用ICD2编程时一旦使能内部晶振和内部复位会有警告信息:ICDWarn0033: You have selected Internal MCLR and Internal Oscillator in your configuration settings. If your code makes use of port pins that correspond to Clock and Data pins in programming mode, you may not be able to reprogram your device. See on-line help for this warning for more information. (OK/Cancel)

答:忽略该信息,初次ICD2可以成功编程该芯片。但如果芯片中已有配置字是内部晶振和内部复位的程序,且程序中有对ICSPCLK和ICSPDAT管脚的操作,再次编程就会有校验失败的错误提示。这是因为当使用内部晶振和内部复位时, ICD2一旦和目标板相连,目标芯片即已工作,ICD2对ICSPCLK和ICSPDAT的控制被目标芯片对这两脚的操作打乱,故而进不了编程模式。这时该考虑其他编程工具,或者在程序开头加2ms以上延时,保证芯片在真正执行程序前进入编程模式。

9、 用ICD2调试或烧写PIC16F630/676,PIC12F629/675等带内部RC的器件,连接ICD2时警告“ICDwarn0044:Target has an invalid calibration memory value (Value). Continue?”

答:这是这些器件的程序存储器最后一个单元上的内部RC校准值(retlw xx)被修改了,可用PICkit 1重新生成一个值;也可在MPLAB IDE的Programmer—settings—calibration memory选项卡里把Allow ICD2 to program calibration memory 前的勾打上再填一个新的值,烧写后再次连接就没问题了。

10:ICDwarn0044。

答:这只是一个警告,只有含内部校准的MCU在调试编程的时候才会出现,不用理会。一般情况下ICD2默认是禁止插除内部校准值,不要去使能相关设置。

11:ICD0054。

A11:USB连接的话请尝试重新安装驱动,驱动安装过程中会装两次,请仔细观察,不同的系统可能会自动调换驱动的提示顺序。

 驱动安装正确的前提下,请检查一下ICD2与电脑连接的通讯口是否设置正确(USB or COM)。

 不同的电脑,MPLAB IDEV810下,MPLAB ICD2 的默认通讯方式可能不一样,如果发生0054的提示,除了检查USB驱动,

  也请注意通讯方式是否是USB口。

  MPLAB IDEV762,无论如何,默认总为USB连接。232连接请修改串口属性。

12、出现0082该怎么办?

答:点击 “Download ICD2 Operating System”,如果还是不行,请返厂检修。

13:提示ICDWarn0083无法进入调试模式。

答:(1)0083一般是晶振电路出问题。或者是晶振未起振,或者是软件上选择的晶体类型与实际目标板的不符合。

  请采用如下方法判断目标板晶振是否起振,写一个简单的测试代码,如单个IO驱动LED周期性亮暗变化,烧写到芯片,

  看LED是否可以亮暗变化或者用示波器测量IO引脚的输出波形。

  请不要用示波器测量MCU振荡脚来判断晶振是否起振,

  某些情况下,有可能因示波器本身电容导致振荡电路匹配电容改变而改变振荡状态。

2)复位电路不按调试规范连接,比如有二级管,电容过大,也会早成此原因。出问题时请注意复位管脚只保留一个10K上拉电阻。

3)另外,管脚小与等于20PIN的芯片,如果没有使用调试头,也会有此提示。请参考《PIC少管脚MCU调试注意》。

4)作为调试器,很多功能是受到限制的,如WDT,LVP,BOR,能DISABLE的都要DISABLE。

5)汇编第一行没有加NOP指令。

6)C语言,PICC/PICC18等,编译选项中没有将COMPILE FOR ICD的钩打上。

7)目标板VDD对地有等效大电容。

8)没有断开PGD/PGC的电路。

9)程序代码过大,与ICD2保留的程序空间冲突。ICD2会保留最后256条指令空间。

10)RAM用到了ICD2保留空间。

11)编译之后没有下载(请认真看说明书,新手常犯的错误)。

12)调试24/33系列的芯片,请检查CFG里面的通信线是否选对。

14、 连接时出现ICD0152: Failed to read all of requested bytes (0x0 of 0x8)

答:首先,ICD2是用USB还是串口跟电脑连接的?如果是串口连接的,改一下串口属性,具体步骤如下:

右击我的电脑—属性—硬件—设备管理器—端口(COM)—COM1(如果用其他COM,则选择相应的COMx)—属性—端口设置,在这里要做两个设置:

1,流控制方式—选择硬件

2,点击“高级”按纽—使用FIFO缓冲区。。。前面那个钩去掉。 设置完后可能还需要重启电脑。其次,升级一下IDE版本。

15、经常有人用MCHP的ICD2,PLUS烧写,然后校验的时候提示错误0161

答:这就表示烧写没烧成功,很多时候这是串口属性没设置引起的,修改后就OK了。

   还有的可能比如工具底层固件突然崩溃。

   PLUS的底层尤其脆弱。

   解决也很简单——重新DOWNLOAD一下底层固件,也就是工具的OPERATING SYSTEM。

   另外,如果由于电源比较异常,也可能引起0161的问题。

16、ICD0161: Verify failed (MemType = MemType, Address = Address, Expected Val = MPLAB MemoryVal, Val Read = TargetVal) 提示烧写检验失败。

A4:出现此情况,一般是由于用户烧写电流不足导致烧写失败,常见动作是选择了从ICD2向目标板供电导致,

请在软件上选择从目标板供电。

注意:某些特殊的芯片(例如PIC16F627A),在同时使用了内部振荡和内部复位的情况下,

烧写成功后也将会提示CONFIG区校验失败的信息。这是正常的表现:由于同时使用了内部振荡和内部复位,

一旦烧写成功,芯片将直接运行用户程序,此时由于无法进入烧写模式,校验必然是不正确的。

详情请参看相关的帮助文件。

17、 连接ICD2时显示“ICD0286: Unable to communicate with ICD。ICD0082: Failed MPLAB ICD 2 operation”

答:这可能是操作系统有误,此时手动下载操作系统即可