英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 14965|回复: 9
打印 上一主题 下一主题

MPLAB ICD2 使用方面技术解答,问题详解(DV164005,DV164007)

[复制链接]
跳转到指定楼层
1#
发表于 2009-4-19 02:58:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Microchip C 编译器      C编译器软件(hI_TECH)\使用参考
使用ICD2支持dsPIC注意事项

使用ICD2调试dsPIC时需要注意以下内容:
1、  调试线不能太长,建议20cm以内;
2、  调试dsPIC时应先连接ICD2,然后再对用户板上电,否则有可能出现ICDWarning20或烧写失败提示
在使用某些旧版本ICD2调试dsPIC过程中可能会出现重新烧写项目时烧写失败的提示,解决方案如下:
1、  拆开ICD2机壳,在主机板上找到R23、R36(180欧,0603);
2、  将R23、R36更换为0欧0603的电阻,或使用焊锡将其短路即可;
如果用户不希望作以上更改也可以采用如下方式解决:
1、使用ICD2提供电源时,将调试线从用户板取下再插上(用户板下电),然后重新连接ICD2即可进行调试;或点击Debugger->Debugger Settings->power设置为使用用户板电源,点“应用”,然后改回使用ICD2电源,再次点“应用”然后重新连接ICD2即可进行调试。
2、使用用户板电源时,应去掉用户板电源,连接ICD2一次,然后再对用户板上电。此时重新连接ICD2即可进行调试。

开发工具ICD2使用方面需要注意的问题。
答:按照第5 章,故障诊断中所述,检查PGC、PGD 和VPP 连接以及电压,诊断故障。确保目标PICmicro 单片机已上电。如果目标PICmicro 单片机有AVSS 和AVPP 引脚,确认这些引脚都已正确连接。
1.2 问: 为什么我需要 ICD 转接头?
答:对于MPLAB ICD 2 支持的低引脚数器件,如果在线调试引脚被保留,将不能有效地使用这些器件。试想一下,对于8 个引脚的器件, 6 个I/O 引脚失去其中3 个的情形。为此,生产了特殊的外合(bond-out) PICmicro 单片机,这种单片机能通过一个转接头来仿真这些低引脚数器件,这使得能在目标应用中使用所有引脚。外合(bond-out) PICmicro 单片机具有在线通讯引脚与MPLAB ICD 2 接口。这样做的优点是可以用MPLAB ICD 2 开发低引脚数器件。缺点是,对于这些器件,为进行在线调试,不能只在目标应用中采用一个ICD 2 连接插座,还要使用外合(bond-out) PICmicro 单片机。这些外合(bond-out) PICmicro 单片机类似于仿真器芯片,能支持多种器件。在ICD 转接头电路板上有跳线来配置芯片,以与开发使用的器件相匹配。这些低引脚数器件可通过通用编程适配器,或者在目标应用上放置一个ICD 2 连接插座来连接这些器件的VPP、PGC 和PGD,来采用MPLAB ICD 2 编程。
1.3 问: 无法连接到MPLAB ICD 2 。我现在该怎么做?
答:MPLAB ICD 2 的电源灯亮了吗?这个LED 应该是明亮的。如果它比较暗,可能只连接了USB,用户可能需要连接一个电源。PC 的RS-232 口不能为MPLAB ICD 2 提供电源,不过USB 口可以。注意有些USB 集线器不能提供电源。请针对当前的故障线索,查看在线帮助。USB 驱动安装正确吗?在Windows 设备管理器对话框(如图6-1 所示)中应该可以看到MPLAB ICD 2 的USB 驱动。一些USB 集线器不能给连接的USB 设备提供电源。使用这些集线器时,需要在MPLAB ICD 2 上接一个电源。
1.4 问: ICD 2 响应“Target not in debug mode error. ”这是什么意思?
答:通常这说明MPLAB ICD 2 不能和调试执行程序通讯。只能通过选择Debugger>rogram 菜单,对用户应用中的目标PICmicro单片机编程,来下载调试执行程序。也可能是其它原因使得调试执行程序不能通讯,如目标时钟或电源问题。查看配置位,确保“Background Debug”使能。查看Config>Configuration Bits...,确保看门狗被禁止,代码保护被关闭,并且振荡器设置正确。
1.5 问: MPLAB ICD 2 能和一个低电压运行的目标器件一起工作吗?
答:是的。只要目标PICmicro 单片机支持低电压运行,它就能在VDD 低至约2V 的情况下运行。在MPLAB ICD 2 的输入/ 输出缓冲器中有电平转换器。这些输入/ 输出缓冲器通过目标器件的VDD 供电。另外, MPLAB ICD 2 会检测目标器件的工作电压,并正确地调整其功能来处理低电压操作,即使用正确的FLASH 擦除算法。在MPLAB ICD 2 的“Settings”对话框中, VDD 需选择为“From Target”,并且在目标板上要有一个电源用于低电压运行。

1.6 问: MPLAB ICD 2 支持低电压编程(LVP )吗?
答:不支持。但这并不表示当目标器件运行在低电压VDD 时,MPLAB ICD 2 不能正常工作。只是表示施加到VPP 上的编程电压应总是+12V。
1.7 问: 为什么我在配置锁相环(PLL )振荡器时有问题?MPLAB ICD 2 被挂起
答:这是PICmicro 单片机所要求的。在对PLL 振荡器的配置位编程后,电源需要断开然后再加到目标板上。如果没有这样做,目标PICmicro 单片机将没有时钟。没有时钟,调试模式将不能工作。同样,如果在切换到PLL 模式时,电源没有被断开再连接,器件可能会运行,但没有使用PLL。   
1.8 问: 当我尝试安装时,为什么找不到驱动,即使当我能在驱动文件夹中看到它们,并且我在驱动向导中指向了正确的文件夹也不行?
答:这个问题可以这样解决:退出驱动安装向导,再到控制面板选择“Add New Hardware (添加新硬件)”。在系统搜索新硬件后,选择“No, the device isn’t in the list.”,然后选择“No, I want to select the hardware from a list.”,再选择“Universal Serial Bus Controller,”。当出现“Have Disk...”按钮时,进入驱动文件夹,并选择正确的驱动。
1.9 问: 我能使用MPLAB ICD 2 实现代码保护吗?
答:不能。代码保护,特别是程序存储器中任何区域的表读保护会妨碍MPLAB ICD 2 正常工作。当使用MPLAB ICD 2 调试时,不要使用任何代码保护或表读保护的配置设置。当烧写器件进行测试时,如果没有连接MPLAB ICD 2,可以使能代码保护。
1.10 问: 单步执行时,定时器为什么运行不正常?
答:这是使用在线调试器的缺点之一。由于代码实际上是在调试执行程序中运行,在调试执行程序运行期间,即使用户的应用程序被中止,定时器也会继续运行。
1.11 问:在使用PIC12F629/675 或PIC16F630/676 时,为什么会有警告和错误?
答:在使用MPLAB ICD 2 过程中,这些器件的GP1/RA1 引脚不能被拉高。参见MPLAB ICD 2 Header (DS51292)文档,获得更多关于对这些器件使用ICD 2 的信息。
1.12 问: 什么使电源和忙信号LED 闪烁?
答:这可能表示目标板上MPLAB ICD 2 连接插座的接线顺序反了(与接线图相反)。灯闪烁表示由于有大电流, MPLAB ICD 2 正在关闭。下面的测试表明目标板上接线顺序反了:
• 查找闪烁的Power 和Busy 信号LED (电源可能都关断了)。
• 执行一次“Self Test”,查找“MCLR=VPP”上的小错误
(所有其它测试可能都会通过)。
• 使用目标单片机的默认地址范围,执行一次编程。引脚1
(VPP)上7-8V 的电平太低了。
注意,如果目标板接线顺序相反, MPLAB ICD 2 中的保护电路会防止对模块造成破坏。当目标板正确连线时,可以看到其正常运作。
1.13 问:MPLAB ICD 2 中的“Self Test ”起什么作用?
答:“Self Test”按钮有助于确定MPLAB ICD 2 模块或目标板连接的问题。目标VDD如果选择了“Power from ICD2”,则测试由MPLAB ICD 2 提供的VDD 〔仅5 V〕。如果选择了“Power from target”,则测试由目标板提供的VDD 〔2 至6V〕。Pass/Fail 码:错误表示在Advanced 对话框中“Power”设置不正确,或者目标板的VDD 高于/ 低于规定值。模块VPP测试在编程过程中由MPLAB ICD 2 提供给目标板VPP/MCLR 引脚
的编程电压(VPP)。Pass/Fail 码:出现错误表明目标板VPP/MCLR 引脚接线不正确。MCLR=Gnd测试MPLAB ICD 2 为复位目标单片机,提供地电平给目标VPP/MCLR 引脚的能力。Pass/Fail 码:出现错误表明VPP/MCLR 引脚接线不正确。
00 = Pass VDD 在指定的范围内
01 = Min error VDD 低于指定的范围
80 = Max error VDD 高于指定的范围
00 = Pass VPP 在指定的范围内
01 = Min error VPP 低于指定的范围
80 = Max error VPP 高于指定的范围
00 = Pass 地电平可以提供给目标VPP/MCLR 引脚
80 = Max error 地电平对于目标VPP/MCLR 引脚太高
MCLR=VDD
测试正常工作〔如‘Run’〕期间, MPLAB ICD 2 提供VDD 给目标VPP/MCLR 引脚的能力。
Pass/Fail 码:
出现错误表明在Advanced 对话框中“Power”设置不正确,或者目标的VDD 高于/ 低于规定值。
MCLR=VPP
测试在编程过程中MPLAB ICD 2 提供VPP 给目标VPP/MCLR 引脚的能力。
Pass/Fail 码:
出现错误表明VPP/MCLR 引脚接线不正确。
1.14 问: 通过RETFIE 指令来使用高优先级中断时,为什么 W 、 STATUS 和BSR 寄存器的值会改变?
答:用于高优先级中断和CALL FAST 的影子寄存器被MPLABICD 2 使用了。这些是保留给MPLAB ICD 2 操作的资源。如果断点设置在CALL FAST 子程序内,或者在通过 RETURN FAST 或RETFIE 指令使用了影子寄存器的高优先级中断服务程序内,将会出现问题。
00 = Pass VDD 可提供给目标VPP/MCLR 引脚
01 = Min error VDD 对于目标VPP/MCLR 引脚太低
80 = Max error VDD 对于目标VPP/MCLR 引脚太高
00 = Pass VPP 可提供给目标VPP/MCLR 引脚
01 = Min error VPP 对于目标VPP/MCLR 引脚太低
80 = Max error VPP 对于目标VPP/MCLR 引脚太高
1.15 问: 当我在程序的起始位置设置一个断点时,为什么它停止在地址0001 ,而不是地址0000 ?
答:MPLAB ICD 2 在断点后的指令上暂停。这意味着设置了断点的地址0000 处的指令会被执行,接着当它发现断点时,程序计数器会指向地址0001。如果用户需要在其代码的第一条指令处暂停,他们必须在地址0000 处插入一条NOP 指令。
1.16 问: 为什么我的校准存储器显示已擦除的值?
答:MPLAB IDE 正在显示默认的存储器值。要显示器件上的实际值,必须使用MPLAB ICD 2 进行一次器件读操作。
1.17 问: 单步执行代码时,我的定时器超时了,但为什么我的定时器中断服务程序没有执行?
答:单步执行时,在线调试器不允许PICmicro 单片机响应中断。如果允许的话,当用户有外部中断时,那么单步执行将几乎总是在中断服务程序中结束。要调试中断,应在中断服务程序中设置断点并运行,这样在产生中断后执行到断点。
1.18 问:MCHP的工具串口属性都要做调整
答:右击我的电脑——属性——硬件——设备管理器——端口(COM)——COM1(如果用其他COM,则选择相应的COMx)——属性——端口设置,好现在开始两个步骤的设置。
1,流控制方式——选择硬件
2,点击“高级”按纽——FIFOxxxxx....前面那个钩去掉。
不管用PLUS,还是ICD2用串口调试/烧写时,都要做以上动作。设置完,可以考虑重新启动电脑,因为有的电脑需要重新启动后对串口的修改才能生效,有的是不需要。拨特率,细心的客户可能会发现MCHP做的东西要嘛是19200,要嘛是57600,但电脑默认是9600,那么电脑的COM属性要做匹配调整吗,答案是——不需要。
1.19:问:经常有人用MCHP的ICD2,PLUS烧写,然后校验的时候提示错误0161
答:这就表示烧写没烧成功,很多时候这是串口属性没设置引起的,修改后就OK了。还有的可能比如工具底层固件突然崩溃。PLUS的底层尤其脆弱。解决也很简单——重新DOWNLOAD一下底层固件,也就是工具的OPERATING SYSTEM。另外,如果由于电源比较异常,也可能引起0161的问题。
1.20:问:MCHP的PLUS烧16C57
答:MCHP的PLUS烧16C57,记得把芯片的26脚与烧写座脱离接触。可以翘起来,烧完翘回去,当然,还可以在加一个28PIN座,把座子的26脚废了,那芯片与PLUS的烧写座26脚就实际上脱离了接触。还有的人,打开了PLUS,断开了26脚,搞了个跳线,平时连通,需要烧57的时候把跳线拔掉,本质上也是做到脱离接触。
1.21:问:经常有这样的事情发生,仿真OK,烧写失败
其中一点,烧写方法有误导致的烧写失败。烧PIC的片子,除非你用的是MCHP设计的工具,比如ICD2,ICE2000/4000,用任何的第三方设计的仿真工具,请执行按以下动作烧写,以保证烧写OK。 1,在仿真器下调试通过的源代码,拿到MCHP的编译器MPLAB IDE下(现在最高版本V7.31),再次编译。这时候可能需要建立必要的项目,而且必须对芯片类型,CONFIG BITS,进行相应的设置。 2,此时生产的HEX文件才是必然包含config 信息的HEX文件,是值得信赖的烧写文件。可以从FILE——EXPORT——导出HEX文件,提交烧写的专人。 3,用FILE——IMPORT导入HEX文件,检查检查芯片设置和CONFIG,然后烧写。
我们公司的2004,2002软件环境下生成的HEX文件是不包含config信息,一个同事用过wave的某款仿真器,也发现可能有类似的问题,最后拿到MPLAB IDE下一编译再烧写,天下太平。
由于我们公司仅代理制造PLUS,ICD2,PIKIT2,遇到其他MCHP的烧写工具问题,请咨询相关的代理商或MCHP的FAE。
1.22:问:PIC MCU 中有A結尾和沒A結尾的兩中型號有什區別?
答:带A的便宜。不带A的行将停产,又贵。877到877A,内部资源增加,工艺改变。627到627A,内部资源不动,工艺改变。
PICSTART PLUS 常见问题解答
注意:PICSTART PLUS 是开发型的编程器,适用于研发阶段的小批量试生产,不适用于量产生产,若需要大批量烧写芯片,请选择本公司的量产型专用编程器-PICPRO 系列。
PLUS_U 使用注意事项(着重于初次使用者):常见操作使用问题
1、  不能找到串口
a)         确定硬件未损坏
b)        com设置是否正确
2、  串口通讯失败
a)         确定FIFO是否关闭
b)        硬件连接是否正常
3、  connect 时提示“需要更高版本才能支持”
a)         请查看软件和烧写器硬件版本是否支持该芯片
b)        确认升级是否成功
4、  烧写后芯片不运行
a)         注意cfg设置是否正确
5、  在烧写某些空白芯片时提示非空
a)         使用时请注意软硬件版本的匹配问题,最新购买的烧写器请使用7.0版本以上的软件。
6、  18系列部分芯片在烧写时提示出错
18系列的部分芯片如18Fxx31等有AVDD和AVSS管脚,这两个管脚必须分别与VDD和Vss短接,否则可能会影响烧写
特殊管脚芯片烧写注意:
1、10F2xx
   10F2xx目前有2种封装:6-pin SOT 23和8-pin
   
   DIP6-pin SOT 23:(1)需要Programmer Adapter:AC163020
                    (2)需要PIC10F2xx SOT-23 to DIP-8 Programmer Adapter :AC163021
   
   8-pin DIP:(1)将芯片的第1脚对应烧写器上烧写座的第9脚放置,可直接烧写
              (2)需要Programmer Adapter:AC163020
   *以上提到的Programmer Adapter请直接向芯片供应商或者MCHP公司查询。
2、rfPIC12C509Ax
   需自制烧写座:芯片的1-4脚对应plus烧写座的1-4脚,芯片5-8对应plus烧写座的37-40脚,这样就可以烧写芯片的PIC12C509A部分。
3、PIC16C55A/C57C/F57
   
   这3款芯片在烧写时由于OSC2会对RB6产生干扰,所以在校验时会出现错误,在检查空白芯片时,读上来的数据为0xBFF,因此要正常烧写,需将芯片的26脚(OSC2)屏蔽掉。可以用一个28脚或40脚的烧写座,将烧写座的26脚去掉,然后用烧写座来烧写。
4、PIC16F818/819
   烧写这2款芯片时,需在MCLR 和 GND脚之间加一个1k的电阻。
5、PIC18C658/858和PIC18F6x20/8x20

*连接芯片上所有的VDD/VSS脚,连接示意图如下:

(Note: You must connect all VDD/VSS lines on the devices, as all are needed to power the chip correctly.)
PIN     PICSTART        PIC18C658         PIC18C658
        Plus 64-pin     package 68-pin    package
---     --------        --------------    --------------
VDD     11              10, 26, 38, 57    2, 20, 37, 49
VSS     12              9, 25, 41, 56     19, 36, 53, 68
MCLR    1               7                 16
RB6     39              42                54
RB7     40              37                48
 
PIN     PICSTART        PIC18C858         PIC18C858
        Plus            80-pin package    84-pin package
---     --------        --------------    --------------
VDD     11              12, 32, 48, 71    2, 24, 45, 61
VSS     12              11, 31, 51, 70    23, 44, 65, 84
MCLR    1               9                 20
RB6     39              52                66
RB7     40              47                60
 
PIN     PICSTART        PIC18F6X20        PIC18F8X20
        Plus            64-pin package    80-pin package
---     --------        --------------    --------------
VDD     11              10,19,26,38,57    12,25,32,48,71
VSS     12              9,20,25,41,56     11,26,31,51,70
MCLR    1               7                 9
RB6     39              42                52
RB7     40              37                47

6、PIC18F2331/2431
   注意第7脚和11脚之间需加跳线
详情请查看最新版本MPLAB IDE安装目录下READMES\Readme for PICSTART Plus.txt文件Section7-12.所有信息以PICSTART Plus.txt文件为准。

MPLAB PM3 是Microchip 的单片机器件编程器。通过可更换的编程插座模块, MPLAB PM3 使您可以快速方便地对Microchip 的所有单片机进行编程。 MPLAB PM3 可在所支持的Windows 操作系统上运行,与MPLAB IDE 配合使用,也可以作为独立编程器使用。

************************************************
************************************************

ICD2烧录器部分错误问题总汇
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”
答:这可能是操作系统有误,此时手动下载操作系统即可
2#
 楼主| 发表于 2009-4-25 17:45:26 | 只看该作者
…………续上
常见问题解释
1、 ICDWarn0020: Invalid target device id (expected=0x70, read=0x0)
出现这项提示时,是ICD2 主机与目标芯片之间通信不正常,可检查:
?? 目标板上的芯片是否正确,电源“Power”设置是否正确。
?? 芯片的调试引脚线路连接是否错误,引脚上是否有电容或电感等元件。
?? 如果读回的ID 不是00,但与期望的ID 不符合,则为软件选择的芯片型号与实际的目
标芯片型号不符合。
?? 如果读回的ID 为00,则为ICD2 主机与芯片之间通信有问题,检查六芯线与芯片的连
接是否可靠。由于水晶头与卡座之间经常需要插拔比较容易松动而导致接触不良,大
部分的0020 警告都是由于这个原因产生的。
?? 另外电源地线未连接好,包括目标板电源供电不足,也可导致此提示。常见为只连接
了一组的电源地到六芯线,请把所有电源地均连接好,包括AVDD,AVSS。
2、 ICD0019: Communications: Failed to open port: (Windows::GetLastError() = 0x2, '
系统找不到指定的文件。')
ICD0021: Unable to connect with MPLAB ICD 2
出现这二项提示时,是PC 与ICD2 之间通信不正常,可检查:
?? ICD2 是否已连接到PC,用232 串口连接的,检查供电和“Power”设置是否正确。
?? 驱动是否正确安装,或者由于PC 的USB 口供电不足导致驱动无法正确加载。
?? 如果热插拔ICD2 的USB 线,很容易出现以上提示,关掉MPLAB IDE,过一会再重新启
动IDE 软件并联接即可。
3、 ICD0161: Verify failed (MemType = Program, Address = 0x40, Expected Val = 0x0, Val
Read = 0x3FFF)
出现该提示时,是由于目标板芯片烧写不正确导致检验失败,可检查:
?? 目标芯片的MCLR/VPP 引脚上没有除ICD2 接口外的其他电路,常见复位电路请采用跳
线进行隔离。
?? ICD2 与芯片的接口线路中有没有连接电感或电容特性的电路。
?? 如果选择由ICD2 向目标板供电,则有可能由于ICD2 不能向目标板提供足够的工作电
流,导致烧写不稳定出现烧写失败。此时应该采取目标板独立供电。并在软件上不要
选择从ICD2 向目标板供电。
?? 注意:某些特殊的芯片(例如PIC16F627A),在同时使用了内部振荡和内部复位的情
况下,烧写成功后也将会提示CONFIG 区校验失败的信息。这是正常的表现,由于同时
使用了内部振荡和内部复位,一旦烧写成功,芯片将直接运行目标程序,此时由于无
法进入烧写模式,校验必然是不正确的。
4、 ICD0083: Debug: Unable to enter debug mode. Please double click this message for
more information.
无法进入调试模式,出现该错误时,一般为振荡不正常。确认MPLAB IDE软件上设置的振荡
类型与实际的目标板是否符合,或者目标板振荡是否起振。
?? 4MHz 以上晶振推荐使用HS 模式,如果是外部32K 低频晶振,重新“connect”一下可
执行调试指令。
?? 内部或外部晶振使能了PLL 功能而进不了Debug 模式的,关掉PLL 即可。
?? 配置位设置不当引起的,查看Configure→Configuration Bits,确保看门狗被禁止,
代码保护、掉电检测等被关闭。
?? 复位引脚和芯片的接口线路中有没有连接电感或电容特性的电路。
5、 ICDWarn0015: Program memory has changed since last program operation? Continue
with Debug operation?
调试时出现该提示,是程序修改之后没有再重新编译、烧写到芯片里。
6、 ... 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 还是能正常编程和调试的。
7、 ICDwarn0044:Target has an invalid calibration memory value (Value). Continue?
用ICD2 调试或烧写PIC16F630/676..等带内部RC 的器件时,这些器件的程序存储器最后一
个单元上的内部RC 校准值已被修改,可用PICkit 1 重新生成一个值,也可用MPLAB IDE 的菜
单命令Programmer→settings,在打开的窗口里,选“calibration memory”页,在“Allow ICD2
to program calibration memory ”前打勾,再填一个新的值,烧写后再次连接就没问题了。
8、 当在程序的XX 位置设置一个断点时,为什么它停止在地址XX+1 处,而不是地址XX 处?
ICD2 在断点后的指令上暂停。这意味着设置了断点地址XX 处的指令会被执行,接着当它发
现断点时,程序计数器会指向地址XX+1。如果需要在其代码的XX 指令处暂停,必须在地址XX
处插入一条NOP 指令。
9、 单步运行时,定时器为什么运行不正常?
这是使用在线调试器的缺点之一。由于代码实际上是在调试执行程序中运行,在调试执行
程序运行期间,即使用户的应用程序被中止,定时器也会继续运行。
10、为什么ICD2 在调试的时候中断不正常?
这是因为ICD2 在调试的时候占用了一些内部资源,导致不能调试芯片的定时器中断和PIC18
系列器件的高优先级中断。
11、在内存中看见70h 为RR,且不能手动修改,这是为什么?
说明这个地址的寄存器已被ICD2 占用,ICD2 在线调试的时候会占用芯片的部分资源,具体
的可以参考下面文档:Microchip\MPLAB IDE\ICD2\hlpMPLABICD2.chm\Operation\MPLAB ICD2
Overview\Resources Used By MPLAB ICD2 帮助文件中查看,在内存中查看标为RR 时不可用。
12、通过RETFIE 指令来使用高优先级中断时,为什么W、STATUS 和BSR 寄存器的值会改变?
用于高优先级中断和CALL FAST 的影子寄存器被ICD2 使用了。这些是保留给ICD2 操作的
资源。如果断点设置在CALL FAST 子程序内,或者在使用RETURN FAST 或RETFIE 指令时使用
了影子寄存器的高优先级中断服务程序,将会出现问题。
13、为什么有时软件上无法选择由ICD2 向目标板供电?
对于PIC18FXXJXX、PIC24、dsPIC30F、dsPIC33F 系列的器件,MCHP 为了保护开发工具,禁
止了该项操作,调试或烧写的时候目标器件需要独立供电。
14、在用PIC12F629/675/16F630/676/627A/628A/648A 仿真头时,需要注意哪些地方?
必须使用内部振荡或外部有源振荡;MCLR 引脚必须为高电平。当GP1/RA1 为高电平时将无
法进行调试,不能在对GPIO 操作的指令上设置断点。
15、在调试PIC12F629/675/PIC16F627A/628A/PIC16F630/676/PIC16F648A 时,为什么会有
Invalid target device id 警告?
在使用ICD2 仿真头调试这些器件的过程中,器件的GP1/RA1 引脚不能被拉高,否则会有警
告Invalid target device id。参见MPLAB ICD2(DS51292)文档,获得更多关于对这些器件
使用ICD2 的信息。
16、有些芯片使用时用到了内部晶振和内部复位,如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 以上延时,保证芯片在真正执行程序前进入编
程模式。
17、连接时出现ICD0152: Failed to read all of requested bytes (0x0 of 0x8)
如果ICD2 是串口连接的,需修改串口属性,具体步骤如下:
右击我的电脑→属性→硬件→设备管理器,在端口(COM)→COM1(如果用其他COM 口,则
选择相应的COMx)→属性→端口设置,在这里要做两个设置:
1 流控制方式:选择为硬件
2 点“高级”按纽,在“使用FIFO 缓冲区..”把前面的勾去掉。设置完后重启电脑。
18、为什么需要ICD 转接仿真头?
对于ICD2 支持的低引脚器件,如果在线调试引脚被保留,将不能有效地使用这些器件。试
想一下,对于8 个引脚的器件,6 个I/O 引脚失去其中3 个的情形。为此,生产了特殊的转接
头来仿真这些低引脚器件,转接仿真头是单片机加上与ICD2 的在线通讯接口引脚,这使得能在
目标应用中使用所有的引脚。
这样做的优点是可以用ICD2 开发低引脚器件。缺点是对于这些器件,在进行在线调试时,
不能在目标应用中采用ICD2 的ICSP 连接口,而要使用仿真头来开发使用。
19、dsPIC 使用ICD2 在线调试的接口选择。
在某些情况下,dsPIC 默认的编程和调试引脚功能PGC/EMUC 和PGD/EMUD,可能与其他外设
(如IIC、SPI 或UART 模块等)引脚复用。在这种情况下,应用中可将这些引脚用于编程,但
不能用于在线调试。此时在线调试应该使用备用调试通道,EMUC/EMUD1、EMUC2/EMUD2 或
EMUC3/EMUD3,具体的电路设计请参考152816.pdf 文档。
20、为什么在配置锁相环(PLL)振荡器时ICD2 被挂起?
这是PICmicro 单片机所要求的。在对PLL 振荡器的配置位编程后,电源需断开后再加到目
标板上。如果不这样做,目标PICmicro 单片机将没有时钟,调试模式将不能工作。同样,如果
在切换到PLL 模式时,电源没有被断开再连接,器件可能会运行,但没有使用PLL。
21、ICD2 调试时ERROR 灯突然点亮,但调试其它MCU 又正常。
这可能是ICD2 占用了芯片内部资源,程序到一定规模如果发生RAM 或ROM 资源冲突,就会
引起错误,ERROR 灯就亮。
22、在PICMATE2004/2002 下编译通过的程序,通过MPLAB IDE 编译失败。
这种情况大多是由于符号的大小写敏感选项未正确设置造成的。按如下步骤进行设置:建
立一个项目,添加源文件,到Project→Build Option→Project 打开窗口,在MPASM Assembler
页的Disable case sensitivity 选项, 默认为不打勾,区分大小写,打勾则不区分大小写。
23、在第三方设计的仿真工具上调试仿真正常的代码文件,写入芯片后不能运行。
这种情况是第三方工具软件编译保存的格式不同,或是不包含CONFIG 配置字信息所至。
使用File→Import 导入第三方工具软件编译的hex 文件,检查芯片设置和CONFIG 配置字
正确后,然后再烧写。
或使用MPLAB IDE 编译器,对在第三方仿真器下调试通过的源代码再次编译。这时候需要
建立必要的项目,而且必须对芯片类型,CONFIG 配置字进行相应的设置。此时产生的hex 文件
是包含配置字信息的hex 文件。可用File→Export 命令导出保存,用于对芯片的烧写。
24、安装USB 接口时,选择的是从指定位置安装,第一次提供的是ICD2W2K1.INF,安装完后又
重复安装,提供的是ICD2W2KL.INF,这是怎么回事?
这是正常的,它需要安装两次。
25、ICD2 的USB 驱动程序在哪里?
在MPLAB IDE 的安装目录下: Program Files\Microchip\MPLAB IDE\ICD2\Drivers\
icdw2k.inf(icd2w2kl.inf) 。
26、当安装时,为什么找不到驱动,即使能在驱动文件夹中看到它们,并且在驱动向导中指向
了正确的文件夹也不行?
这个问题可以这样解决:退出驱动安装向导,再到控制面板选择“Add New Hardware (添
加新硬件)”。在系统搜索新硬件后,选择“No, the device isn’t in the list.”,然后选择
“No, I want to select the hardware from a list.”,再选择“Universal Serial Bus
Controller,”。当出现“Have Disk...”按钮时,进入驱动文件夹,并选择正确的驱动。
27、网上有人说无论是自搭电路或是使用适配器,只要接入相应的晶体即可同时构成烧写和仿真
双功能,Vpp 接脚无须任何处理,会自动在二者间切换(此功能世上独此一家),不像其他的ICD2
需要更改Vpp 电路(通常是在仿真时将芯片的MCLR 端和ICD 的Vpp 连接断开,再通过一个4.7k
电阻接到VDD).这是怎么回事?
误导初学者。用户通过MPLAB IDE 的下拉菜单,均可方便地让ICD2 在烧写和仿真功能之间
任意切换,根本无需更改Vpp 电路!!!

如果需要使用C 语言来编程,那么还需
要设置语言工具的路径。
点击主菜单的Project→Set Language
Tool Locations 来设置语言工具路径。在系
统弹出的“Set Language Tool Locations”
(设置语言工具位置)对话框里选择相应的
语言工具,本例中选择的是HITECH PICC 编
译器。在相应的语言选项的子树
“Executables”(可执行文件)树下点击相
应的选项,使用“Browse”(浏览)来设置
对应的可执行文件。如图所示。
在本例中,将“HI-TECH Assembler”、“HI-TECH Complier”和“HI-TECH Linker”都设置
指向为D:\HT-PIC\bin\picc.exe,这是PC 上的HITECH PICC 编译器路径,应该根据实际安装
情况来设置。
如果只使用汇编语言进行编程,那么他们可以不设置这项,直接使用默认设置。
回复 支持 反对

使用道具 举报

3#
 楼主| 发表于 2009-4-25 17:47:22 | 只看该作者
…………续上
使用ICD2支持dsPIC注意事项!
使用ICD2调试dsPIC时需要注意以下内容:1、
调试线不能太长,建议20cm以内;
2、
调试dsPIC时应先连接ICD2,然后再对用户板上电,否则有可能出现ICDWarning20或烧写失败提示
在使用某些旧版本ICD2调试dsPIC过程中可能会出现重新烧写项目时烧写失败的提示,解决方案如下:
1、
拆开ICD2机壳,在主机板上找到R23、R36(180欧,0603);
2、
将R23、R36更换为0欧0603的电阻,或使用焊锡将其短路即可;
如果用户不希望作以上更改也可以采用如下方式解决:
1、使用ICD2提供电源时,将调试线从用户板取下再插上(用户板下电),然后重新连接ICD2即可进行调试;或点击Debugger->Debugger Settings->power设置为使用用户板电源,点“应用”,然后改回使用ICD2电源,再次点“应用”然后重新连接ICD2即可进行调试。
2、使用用户板电源时,应去掉用户板电源,连接ICD2一次,然后再对用户板上电。此时重新连接ICD2即可进行调试。
回复 支持 反对

使用道具 举报

4#
 楼主| 发表于 2009-5-18 10:34:52 | 只看该作者
回复 支持 反对

使用道具 举报

5#
发表于 2009-6-24 11:53:47 | 只看该作者
在我们这边客户反映的问题中,大部分涉及目标板的电路问题,pgd和pgc以及vpp引脚切忌要按规定
回复 支持 反对

使用道具 举报

qwe610221094 该用户已被删除
6#
发表于 2014-9-25 19:29:45 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-12-24 07:40 , Processed in 0.062996 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表