资源预览内容
第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
亲,该文档总共5页全部预览完了,如果喜欢就下载吧!
资源描述
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即可;再还有可能是配置位设置不当引起的,查看ConfigConfiguration 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 指令使用了影子寄存器的高优先级中断服务程序内,将会出现问题。14、 dsPIC 使用ICD2在线调试的接口选择答:在某些情况下,dsPIC默认的编程和调试引脚功能PGC/EMUC和PGD/EMUD,可能与其他外设(如I2CTM、SPI或UART模块等)引脚复用。在这种情况下,应用能将这些引脚用于编程,但不能用于在线调试。此时在线调试应该使用备用调试通道,EMUC/EMUD1、EMUC2/EMUD2或EMUC3/EMUD3,具体的电路设计请参考152816.pdf文档。15、 当在程序的起始位置设置一个断点时,为什么它停止在地址0001 ,而不是地址0000 ?答:MPLAB ICD 2 在断点后的指令上暂停。这意味着设置了断点的地址0000 处的指令会被执行,接着当它发现断点时,程序计数器会指向地址0001。如果用户需要在其代码的第一条指令处暂停,他们必须在地址0000 处插入一条NOP 指令。16、 调试时出现ICDWarn0015: Program memory has changed since last program operation?答:程序修改之后没有再重新编译、烧写到芯片里。17、 连接时出现ICD0152: Failed to read all of requested bytes (0x0 of 0x8)答:首先,ICD2是用USB还是串口跟电脑连接的?如果是串口连接的,改一下串口属性,具体步骤如下:右击我的电脑-属性-硬件-设备管理器-端口(COM)-COM1(如果用其他COM,则选择相应的COMx)-属性-端口设置,在这里要做两个设置:1,流控制方式-选择硬件2,点击“高级”按纽-使用FIFO缓冲区。前面那个钩去掉。 设置完后可能还需要重启电脑。 其次,升级一下IDE版本。18、 安装USB接口时,选择的是从指定位置安装,第一次提供的是ICD2W2K1.INF,安装完后又重复让安装,提供的是ICD2W2KL.INF,这是怎么回事?答:这是正常的,它需要安装两次。19、 为什么软件上无法选择由ICD2向目标板供电?答:对于PIC18FXXJXX、PIC24、dsPIC30F、dsPIC33F系列的器件,MCHP为了保护开发工具,禁止了该项操作,调试或烧写的时候目标器件需要独立供电。20、 在内存中看见70h为RR,在watch窗口中显示“reserved memory”,且不能手动修改,这是为什么?答:这个地址的寄存器可能被ICD2占用了,ICD2在线调试的时候会占用芯片的部分资源,具体的可以参考下面文档:MicrochipMPLAB IDEICD2hlpMPLABICD2.chmOperationMPLAB ICD2 OverviewResources Used By MPLAB ICD221、 为什么ICD2在调试的时候中断不正常?答:这是因为ICD2在调试的时候占用了一些内部资源,导致不能调试芯片的定时器中断和PIC18系列器件的高优先级中断22、 在用PIC12F629/675/16F630/676/627A/628A/648A仿真头时,需要注意哪些地方?答:必须使用内部振荡或外部有源振荡;MCLR脚必须高电平;当GP1/RA1为高电平时将无法进行调试;不能在对GPIO操作的指令上设置断点。23、 ICD2 USB驱动程序在哪里?答:在MPLAB IDE的安装目录下:Program FilesMicrochipMPLAB IDEICD2Driversicdw2k.inf(icd2w2kl.inf)24、 ICD2调试的时候ERROR灯突然亮,但调试其它MCU又正常答:这可能是ICD2占用了芯片内部资源,程序到一定规模如果发生RAM或ROM资源冲突,就会飞掉,ERROR灯就亮。25、 有些芯片使用时用到了内部晶振和内部复位,如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 progra
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号