常见的调试错误.docx

上传人:b****7 文档编号:9463373 上传时间:2023-02-04 格式:DOCX 页数:6 大小:18.71KB
下载 相关 举报
常见的调试错误.docx_第1页
第1页 / 共6页
常见的调试错误.docx_第2页
第2页 / 共6页
常见的调试错误.docx_第3页
第3页 / 共6页
常见的调试错误.docx_第4页
第4页 / 共6页
常见的调试错误.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

常见的调试错误.docx

《常见的调试错误.docx》由会员分享,可在线阅读,更多相关《常见的调试错误.docx(6页珍藏版)》请在冰豆网上搜索。

常见的调试错误.docx

常见的调试错误

MPLABICD2调试问题的处理

1、ICD2调试时出现“ICD0083:

Debug:

Unabletoenterdebugmode.Pleasedoubleclickthismessageformoreinformation.”

答:

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

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

2、连接ICD2时显示“ICD0021:

UnabletoconnectwithMPLABICD2”

答:

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

3、连接ICD2时显示“ICD0286:

UnabletocommunicatewithICD。

ICD0082:

FailedMPLABICD2operation”

答:

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

4、连接ICD2时显示“ICD0019:

Communications:

Failedtoopenport:

(Windows:

:

GetLastError()=0x2,'系统找不到指定的文件。

')ICD0021:

UnabletoconnectwithMCU.”

答:

通常是ICD2驱动找不到,需重装。

也可能是由于PC的USB口供电不足导致驱动无法正确加载。

5、ICD2自检不通过提示“...FailedSelfTest.SeeICD2Settings(statustab)fordetails”

答:

ICD2自检主要是对TargetVdd、TargetVpp、MCLRGND、MCLRVdd、MCLRVpp五个管脚电压进行检测,任何的一项不正常都会通不过。

出错具体情况可在ICD2的status栏进行查看,找出出错的项,再检查该项的相关硬件连接。

若是PIC18J、PIC24、dsPIC30、dsPIC33系列的器件,是无法从ICD2供电给它们的,要求目标板外接电源,且要注意它们的电压范围。

注:

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

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

Invalidtargetdeviceid(expected=0x89,read=0)”

答:

此时首要任务是检查硬件连接,PGC/PGD有无接错,或PGD/PGC上有容性负载或感性负载。

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

注:

ICD2到目标板的连接线如果是一端水晶头,一端插针的,要注意蓝色才是第一根,白色一般是不用的。

7、ICD2自检通过,但提示没找到目标ID,读到的ID不是‘0’,但和期望的不符合,显示“ICDWarn0020:

Invalidtargetdeviceid(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来说执行“BulkErase”时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:

Targethasaninvalidcalibrationmemoryvalue(Value).Continue?

答:

这是这些器件的程序存储器最后一个单元上的内部RC校准值(retlwxx)被修改了,可用PICkit1重新生成一个值;也可在MPLABIDE的Programmer--settings--calibrationmemory选项卡里把AllowICD2toprogramcalibrationmemory前的勾打上再填一个新的值,烧写后再次连接就没问题了。

10、为什么在配置锁相环(PLL)振荡器时有问题,ICD2被挂起?

答:

这是PICmicro单片机所要求的。

在对PLL振荡器的配置位编程后,电源需要断开然后再加到目标板上。

如果没有这样做,目标PICmicro单片机将没有时钟。

没有时钟,调试模式将不能工作。

同样,如果在切换到PLL模式时,电源没有被断开再连接,器件可能会运行,但没有使用PLL。

11、在调试PIC12F629/675/PIC16F627A/628A/PIC16F630/676/PIC16F648A时,为什么会有Invalidtargetdeviceid警告?

答:

在使用MPLABICD2和ICD2仿真头调试这些器件过程中,这些器件的GP1/RA1引脚不能被拉高,否则会警告Invalidtargetdeviceid。

参见MPLABICD2Header文档。

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

答:

这是使用在线调试器的缺点之一。

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

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

答:

用于高优先级中断和CALLFAST的影子寄存器被MPLABICD2使用了。

这些是保留给MPLABICD2操作的资源。

如果断点设置在CALLFAST子程序内,或者在通过RETURNFAST或RETFIE指令使用了影子寄存器的高优先级中断服务程序内,将会出现问题。

14、dsPIC使用ICD2在线调试的接口选择

答:

在某些情况下,dsPIC默认的编程和调试引脚功能PGC/EMUC和PGD/EMUD,可能与其他外设(如I2CTM、SPI或UART模块等)引脚复用。

在这种情况下,应用能将这些引脚用于编程,但不能用于在线调试。

此时在线调试应该使用备用调试通道,EMUC/EMUD1、EMUC2/EMUD2或EMUC3/EMUD3,具体的电路设计请参考152816.pdf文档。

15、当在程序的起始位置设置一个断点时,为什么它停止在位置0001,而不是位置0000?

答:

MPLABICD2在断点后的指令上暂停。

这意味着设置了断点的位置0000处的指令会被执行,接着当它发现断点时,程序计数器会指向位置0001。

如果用户需要在其代码的第一条指令处暂停,他们必须在位置0000处插入一条NOP指令。

16、调试时出现ICDWarn0015:

Programmemoryhaschangedsincelastprogramoperation?

答:

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

17、连接时出现ICD0152:

Failedtoreadallofrequestedbytes(0x0of0x8)

答:

首先,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窗口中显示“reservedmemory”,且不能手动修改,这是为什么?

答:

这个位置的寄存器可能被ICD2占用了,ICD2在线调试的时候会占用芯片的部分资源,具体的可以参考下面文档:

Microchip\MPLABIDE\ICD2\hlpMPLABICD2.chm\Operation\MPLABICD2Overview\ResourcesUsedByMPLABICD2

21、为什么ICD2在调试的时候中断不正常?

答:

这是因为ICD2在调试的时候占用了一些内部资源,导致不能调试芯片的定时器中断和PIC18系列器件的高优先级中断

22、在用PIC12F629/675/16F630/676/627A/628A/648A仿真头时,需要注意哪些地方?

答:

必须使用内部振荡或外部有源振荡;MCLR脚必须高电平;当GP1/RA1为高电平时将无法进行调试;不能在对GPIO操作的指令上设置断点。

23、ICD2USB驱动程序在哪里?

答:

在MPLABIDE的安装目录下:

ProgramFiles\Microchip\MPLABIDE\ICD2\Drivers\icdw2k.inf(icd2w2kl.inf)

24、ICD2调试的时候ERROR灯突然亮,但调试其它MCU又正常

答:

这可能是ICD2占用了芯片内部资源,程序到一定规模如果发生RAM或ROM资源冲突,就会飞掉,ERROR灯就亮。

25、有些芯片使用时用到了内部晶振和内部复位,如PIC16F630/690等,用ICD2编程时一旦使能内部晶振和内部复位会有警告信息:

ICDWarn0033:

YouhaveselectedInternalMCLRandInternalOscillatorinyourconfigurationsettings.IfyourcodemakesuseofportpinsthatcorrespondtoClockandDatapinsinprogrammingmode,youmaynotbeabletoreprogramyourdevice.Seeon-linehelpforthiswarningformoreinformation.(OK/Cancel)

答:

忽略该信息,初次ICD2可以成功编程该芯片。

但如果芯片中已有配置字是内部晶振和内部复位的程序,且程序中有对ICSPCLK和ICSPDAT管脚的操作,再次编程就会有校验失败的错误提示。

这是因为当使用内部晶振和内部复位时,ICD2一旦和目标板相连,目标芯片即已工作,ICD2对ICSPCLK和ICSPDAT的控制被目标芯片对这两脚的操作打乱,故而进不了编程模式。

这时该考虑其他编程工具,或者在程序开头加2ms以上延时,保证芯片在真正执行程序前进入编程模式

[文档可能无法思考全面,请浏览后下载,另外祝您生活愉快,工作顺利,万事如意!

]

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1