常见的调试错误

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MPLAB ICD2 调试问题的处理

1、 ICD2调试时出现“ICD0083: Debug: Unable to enter debug mode. Please double click this message for more information.”

答:通常这说明ICD2不能和调试执行程序通讯,这有可能是目标时钟或电源问题使得ICD2不能和调试执行程序通讯,保证晶振的管脚和OSCKI/OSCKO充分接近,4MHz以上晶振推荐使用HS 模式,如果是外部32K低频晶振,重新“connect”一下可执行调试指令,也有可能内部或外部晶振使能了PLL功能而进不了Debug模式的,关掉PLL即可;再还有可能是配置位设置不当引起的,查看Config>Configuration Bits,确保看门狗被禁止,代码保护、掉电检测等被关闭。

也有可能是复位引脚接了电容或二极管之类引起的。

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

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

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

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

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

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

5、 ICD2自检不通过提示“... Failed Self Test. See ICD2 Settings (status tab) for details”

答:ICD2自检主要是对Target Vdd、Target Vpp、MCLR GND、MCLR Vdd、 MCLR Vpp五个管脚电压进行检测,任何的一项不正常都会通不过。出错具体情况可在ICD2 的status栏进行查看,找出出错的项,再检查该项的相关硬件连接。若是PIC18J、PIC24、dsPIC30、dsPIC33系列的器件,是无法从ICD2供电给它们的,要求目标板外接电源,且要注意它们的电压范围。

注:可能有些芯片会提示Vpp High 从而导致自检通不过,这是ICD2的固件中检测Vpp电压时所设的上限阈值偏小所致,通常可忽略,ICD2还是能正常编程和调试的。

6、 ICD2自检通过,但提示没找到目标ID,读到的ID是‘0’,显示“ICDWarn0020: Invalid target device id

(expected=0x89, read=0)”

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

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

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

8、 ICD2编程时提示编程成功但校验失败

答:首先检查PGC/PGD有无外电路干扰,再看看Vdd有没有达到4.5V以上(PIC18J/PIC24/dsPIC33F系列除外),ICD2对芯片编程时首先要全擦,对大部分PIC来说执行“Bulk Erase”时

Vdd最小电压是4.5V。这就要求即使是LF版的PIC在用ICD2编程时Vdd至少是4.5V,当然编完程后还是可以在低电压下(3V)使用ICD2调试的。

如果芯片有AVdd和AVss脚, 请在ICSP编程时分别接到Vdd和Vss, 否则也会出现这样的错误。

其次,也有可能是由于从ICD2向目标板供电,使烧写电流不足导致的,此时建议从目标板供电。

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、为什么在配置锁相环(PLL)振荡器时有问题,ICD2被挂起?

答:这是PICmicro单片机所要求的。在对PLL振荡器的配置位编程后,电源需要断开然后再加到目标板上。如果没有这样做,

目标PICmicro单片机将没有时钟。没有时钟,调试模式将不能工作。同样,如果在切换到PLL模式时,电源没有被断开再连接,器件可能会运行,但没有使用PLL。

11、在调试

PIC12F629/675/PIC16F627A/628A/PIC16F630/676/PIC16F648A 时,为什么会有Invalid target device id警告?

答:在使用MPLAB ICD2和ICD2 仿真头调试这些器件过程中,这些器件的GP1/RA1 引脚不能被拉高,否则会警告Invalid target device id。参见MPLAB ICD 2 Header文档。

12、单步执行时,定时器为什么运行不正常?

答:这是使用在线调试器的缺点之一。由于代码实际上是在调试执行程序中运行,在调试执行程序运行期间,即使用户的应用程序被中止,定时器也会继续运行。

13、通过RETFIE 指令来使用高优先级中断时,为什么 W 、STATUS 和BSR寄存器的值会改变?

答:用于高优先级中断和CALL FAST 的影子寄存器被MPLABICD 2 使用了。这些是保留给MPLAB ICD 2 操作的资源。如果断点设置在CALL FAST 子程序内,或者在通过RETURN FAST 或RETFIE

相关文档
最新文档