2010-04-04 21:47:38 阅读6 评论0 字号:大中小
源自于:
ICD2 调试时出现“ICD0083: Debug: Unable to enter debug mode. Please double click this message for more information.”
通常这说明ICD2或MCD2不能和调试执行程序通讯,这有可能是目标时钟或电源问题使得ICD2或MCD2不能和调试执行程序通讯,保证晶振的管脚和OSCKI/OSCKO充分接近,4MHz以上晶
振推荐使用HS模式,如果是外部32K低频晶振,重新“connect”一下可执行调试指令,也有可能内部或外部晶振使能了PLL 功能而进不了Debug模式的,关掉PLL即可;再还有可能
是配置位设置不当引起的,查看Config>Configuration Bits,确保看门狗被禁止,代码保护、掉电检测等被关闭
---------------------------------------------------------------------------------------------------------------------------------
连接ICD2时显示“ICD0021: Unable to connect with MPLAB ICD 2”?
请检查一下ICD2或MCD2与电脑连接的通讯口是否设置正确(USB or COM)。
---------------------------------------------------------------------------------------------------------------------------------
连接ICD2时显示“ICD0286: Unable to communicate with ICD
ICD0082: Failed MPLAB ICD 2 operation”
这可能是操作系统有误,此时手动下载操作系统即可。
---------------------------------------------------------------------------------------------------------------------------------
连接ICD2或MCD2时显示“ICD0019: Communications: Failed to open port: (Windows::GetLastError() = 0x2, '系统找不到指定的文件。') ICD0021: Unable to connect with MCU.”
通常是ICD2或MCD2驱动找不到,需重装。如果MPLAB IDE V7.0以上版本,重装前要先运行C:\Program Files\Microchip\MPLAB IDE\Utilities\MPUsbClean下的MPUsbClean.exe 彻
底删除
---------------------------------------------------------------------------------------------------------------------------------
ICD2或MCD2自检不通过提示“... Failed Self Test. See ICD2 Settings (status tab) for details”
ICD2或MCD2 自检主要是对
行查看,找出出错的项,再检查该项的相关硬件连接。若是PIC18J、PIC24、dsPIC30、dsPIC33系列的器件,是无法从ICD2或MCD2供电给它们的,要求目标板外接电源,且要注意它
们的电压范围。
注:可能有些芯片会提示Vpp High 从而导致自检通不过,这是ICD2的固件中检测Vpp电压时所设的上限阈值偏小所致,通常可忽略,ICD2还是能正常编程和调试的
当使用USB连接MCD2主机与PC时需要注意:此时MCD2主机不能给目标板提供电源,必须把随产品附带的电源接到目标板上或者MCD2主机上(确保使能了目标板从MCD2主机上获取电源),建议把电源直接接到目标上。
---------------------------------------------------------------------------------------------------------------------------------
ICD2或MCD2自检通过,但提示没找到目标
标板的连接线如果是一端水晶头,一端插针的,要注意蓝色才是{dy}根,白色一般是不用的。
Microchip原厂生产的ICD,线的顺序应该是:白色--VPP、 黑色-- VCC 、红色--GND 、绿色--PGD 、黄色--PGC 、蓝色--不用,MCD2也沿用这种排列方式。然而,白色是VPP还是
蓝色是VPP,不必太关心,只要六根线不交叉就可以了。
---------------------------------------------------------------------------------------------------------------------------------
ICD2自检通过,但提示没找到目标ID,读到的ID不是‘0’,但和期望的不符合,显示“ICDWarn0020: Invalid target device id (expected=0x89, read=0x71)”
首先检查芯片型号选择是否正确;如果是Debug模式下出现该提示,要先确认所选的MCU是否需要header才可通过ICD2或MCD2调试。如果用了header 出现该提示,那么检查header上
用来设置ADC的enable/disable的跳线,这个跳线也会影响目标device的ID。
---------------------------------------------------------------------------------------------------------------------------------
ICD2编程时提示编程成功但校验失败
首先检查PGC/PGD有无外电路干扰,再看看Vdd有没有达到4.5V以上(PIC18J/PIC24/dsPIC33F系列除外),ICD2或MCD2对芯片编程时首先要全擦,对大部分PIC来说执行“Bulk
Erase”时Vdd最小电压是4.5V。这就要求即使是LF版的PIC在用ICD2编程时Vdd至少是4.5V,当然编完程后还是可以在低电压下(3V)使用ICD2调试的。
如果芯片有AVdd和AVss脚, 请在ICSP编程时分别接到Vdd和Vss, 否则也会出现这样的错误。
有些芯片使用时用到了内部晶振和内部复位,如PIC16F630/690等,用ICD2或MCD2编程时一旦使能内部晶振和内部复位会有警告信息:
ICDWarn0033: You have selected Internal MCLR and Internal Oscillator in your configuration settings. If your co
Clock and Da
忽略该信息,初次ICD2可以成功编程该芯片。但如果芯片中已有配置字是内部晶振和内部复位的程序,且程序中有对ICSPCLK和ICSPDAT管脚的操作,再次编程就会有校验失败的错
误提示。这是因为当使用内部晶振和内部复位时, ICD2或MCD2一旦和目标板相连,目标芯片即已工作,ICD2对ICSPCLK和ICSPDAT的控制被目标芯片对这两脚的操作打乱,故而进不
了编程模式。这时该考虑其他编程工具,或者在程序开头加2ms以上延时,保证芯片在真正执行程序前进入编程模式。 也有可能是ICD2占用了部分资源引起的。
即将推出的MCD2烧写模块(购买MCD2时赠送产品)有专门为解决这个问题做精心设计。
---------------------------------------------------------------------------------------------------------------------------------
用ICD2 调试或烧写PIC16F630/676,PIC12F629/675等带内部RC的器件,连接ICD2时警告“ICDwarn0044:Target has an invalid calibration memory value (Value). Continue? ”
这是这些器件的程序存储器{zh1}一个单元上的内部RC校准值(retlw xx)被修改了,可用PICkit 1重新生成一个值;也可在MPLAB IDE的Programmer--settings--calibration
memory选项卡里把Allow ICD2 to program calibration memory 前的勾打上再填一个新的值,烧写后再次连接就没问题了。
---------------------------------------------------------------------------------------------------------------------------------
为什么在配置锁相环(PLL)振荡器时有问题,ICD2被挂起?
这是PICmicro单片机所要求的。在对PLL振荡器的配置位编程后,电源需要断开然后再加到目标板上。如果没有这样做,目标PICmicro单片机将没有时钟。没有时钟,调试模式将不
能工作。同样,如果在切换到PLL模式时,电源没有被断开再连接,器件可能会运行,但没有使用PLL。
---------------------------------------------------------------------------------------------------------------------------------
ICD2或MCD2在调试PIC12F629/675或PIC16F630/676时,为什么会有Invalid target device id警告?
在使用MPLAB ICD2和ICD2或MCD2仿真头调试这些器件过程中,这些器件的GP1/RA1 引脚不能被拉高,否则会警告Invalid target device id。参见MPLAB ICD 2 Header文档。
---------------------------------------------------------------------------------------------------------------------------------
ICD2或MCD2单步执行时,定时器为什么运行不正常?
这是使用在线调试器的缺点之一。由于代码实际上是在调试执行程序中运行,在调试执行程序运行期间,即使用户的应用程序被中止,定时器也会继续运行。
---------------------------------------------------------------------------------------------------------------------------------
ICD2通过RETFIE 指令来使用高优先级中断时,为什么 W 、 STATUS 和BSR寄存器的值会改变?
用于高优先级中断和CALL FAST 的影子寄存器被MPLAB ICD 2 使用了。这些是保留给MPLAB ICD 2 操作的资源。如果断点设置在CALL FAST 子程序内,或者在通过RETURN FAST 或
RETFIE 指令使用了影子寄存器的高优先级中断服务程序内,将会出现问题。
---------------------------------------------------------------------------------------------------------------------------------
dsPIC 使用ICD2或MCD2在线调试的接口选择,
在某些情况下,dsPIC默认的编程和调试引脚功能PGC/EMUC和PGD/EMUD,可能与其他外设(如I2CTM?、SPI或UART模块等)引脚复用。在这种情况下,应用能将这些引脚用于编程,
但不能用于在线调试。此时在线调试应该使用备用调试通道,EMUC/EMUD1、EMUC2/EMUD2或 EMUC3/EMUD3,具体的电路设计请参考152816.pdf文档。
---------------------------------------------------------------------------------------------------------------------------------
ICD2或MCD2当在程序的起始位置设置一个断点时,为什么它停止在地址0x0001 ,而不是地址0x0000 ?
MPLAB ICD 2 在断点后的指令上暂停。这意味着设置了断点的地址0000 处的指令会被执行,接着当它发现断点时,程序计数器会指向地址0001。如果用户需要在其代码的{dy}条指
令处暂停,他们必须在地址0000 处插入一条NOP 指令。
---------------------------------------------------------------------------------------------------------------------------------
ICD2或MCD2通信不上;
有可能操作系统有误,此时需要寄到原厂重新下载;也有可能是升级模块跟主板没有接触好。
---------------------------------------------------------------------------------------------------------------------------------
ICD2或MCD2调试时出现ICDWarn0015: Program memory has changed since last program operation?
程序修改之后没有再重新编译、烧写到芯片里
---------------------------------------------------------------------------------------------------------------------------------
ICD2或MCD2连接时出现ICD0152: Failed to read all of requested bytes (0x0 of 0x8)?
首先,ICD2或MCD2是用USB还是串口跟电脑连接的?如果是串口连接的,改一下串口属性,具体步骤如下:
右击我的电脑--属性--硬件--设备管理器--端口(COM)--COM1(如果用其他COM,则选择相应的COMx)--属性--端口设置,在这里要做两个设置:
1,流控制方式--选择硬件
2,点击“高级”按纽--使用FIFO缓冲区。。。前面那个钩去掉。 设置完后可能还需要重启电脑。其次,升级一下IDE版本。
---------------------------------------------------------------------------------------------------------------------------------
PICKit2烧写完程序时出现Warning - No configuration word found in hex file?
那是因为烧写的程序里没有包含Config信息,需要在MPLAB IDE里对configbits进行设置,具体步骤:
1、打开MPLAB IDE;
2、通过file->imp
3、对configbits进行设置;
4、通过file->export,导出HEX文件。
5、此时的HEX文件才是包含了config 信息的HEX文件,这样再用PICKIT2烧写的话应该就不会提示那个错误了。