这一类的器件一般将振荡器校准字存储在测试存储器的地址0x2008处,尽管这些值是存在测试存储器的位置,而且与FLASH的编程时序没有关系,但是,仍然会出现丢失和损坏的现象。根据经验,我们列出了下面的可能的原因的清单,以及采取什么样的步骤来防止以后再发生类似的事情。
① 糟糕的连接: 弹簧顶针、编程插座以及编程连接器的连接不可靠。糟糕的连接或者电源中断会导致编程指令被错误执行或者被跳过。错误地读取指针或者编程顺序可能会导致将编程矢量指向测试存储器。----检视和清理编程连接。这一类型的错误往往发生于生产进行了一段时间之后。
② 糟糕的编程器电源:如果在编程的过程中编程器的电源出现中断的话,编程器在器件被擦除后会丢失校准字数据。----修理编程器的电源.
③ 电缆信号完整性: 如果编程波形变形的话,这些命令就会被错误执行或者跳过,这将会导致校准字被损坏。----缩短或者重新走线编程电缆。这种问题往往伴随着比较高的校验错误率。
④ 编程中断:如果在片擦除的过程中出现编程器中断的话,校准字就会丢失。这可能是由电源导致,也可能以为连接或者操作失误。----验证完整的编程时序。
⑤ 过时的固件:对于保存正确的校准字数据,过时的编程器版本所使用的方法的可靠性会更差一些。----更新固件。
⑥ 并行编程:有些客户会使用不支持多器件编程的编程器来对多个器件同时编程,另外,即使使用了多个单独的编程器或者是多器件编程器.......不能对多个器件共享使用同一个编程连接器。----验证编程工序。
⑦ 编程硬件:编程硬件有可能没有使用正确的器件编程规范。----验证编程器是否功能正常,使用从可靠供应商处获得的编程器来验证根本原因
⑧ Vdd上的大电容:有些应用可能需要在Vdd上加大电容,由于这些电容的存在,在加上比较短的Vdd关闭时间,这可能导致器件在编程阶段之间,器件有可能没有能够正常复位。----在编程时在Vdd上加放电电路,或者增加Vdd关闭时间,以保证完全放电。或者干脆减小Vdd上的电容。
① 在线调试时,芯片管脚太少(20pin以下)的需要仿真头
② ICD3的VPP带负载能力比较弱,复位电路建议用10K以上电阻,并保证VPP走线尽可能短。
③ 有反馈ICD3的USB连接性不大可靠,我们建议ICD3的客户都采用最新的MPLAB IDE,USB连接性将大大改善,以便可靠连接ICD3。
程序编译以后,配置位的DEBUG位为0(configure窗口没有显示该选项),但可以看到该值。
解决办法:在程序里将该位置1,如18F45K20, 24FJ128MCXXX, 24FJ128GA010等型号。希望遇到同样问题的可以借鉴,特别是较新的型号。
如果您收到读或写错误:
----您是否点击了Abort (中止)?这会产生读/写错误。
----再次尝试读/写操作。可能是个一次性错误。
----确保目标器件上电且处于器件的正确电压值。请参见器件数据手册以了解需要的器件电压值。
----确保调试器与目标器件的连接正确(连接了PGC 和PGD)。
----对于写故障,请确保在Settings 对话框的Program Memory 选项卡上选择了
---- “Erase all before Program”。
----请确保使用的电缆的长度正确
---- 正确设置配置位,检查是否振荡器不工作,看门狗打开,程序代码保护等。
---- 目标板未上电。检查电源电缆连接。
---- 在Release(发布)模式下编译项目。需在项目工具栏的Build Configuration下拉列表中选择Debug,然后重新编译项目
---- 正确设置配置位,检查是否振荡器不工作,看门狗打开,程序代码保护等。
---- 目标板未上电。检查电源电缆连接。
---- 在Release(发布)模式下编译项目。需在项目工具栏的Build Configuration下拉列表中选择Debug,然后重新编译项目。
ICD3Err0086: Target Device ID does not match expected Device ID. If you experience persistent problems communicating, the ICD 3 test interface can be used to help diagnose the problem.
A:----在IDE 的PROJECT菜单下的SETTING窗口,Configuration选项卡中,点Manual Download,重新加载firmware。
----另外如果ICD3供电,由于ICD3的USB供电电路功耗太大,不太稳定,建议客户目标板供电。
----水晶头那里里是否接触不良
----MPLAB IDE版本太低,建议使用最新版本;
---- MPLAB IDE选择型号与目标板的芯片型号不一致,请确认一遍;
---- VPP上拉电阻建议为10 KΩ;
---- 与目标板连接数据线过长(不大于20CM),数据受到干扰;
烧写的程序里没有包含Config信息,需要在MPLAB IDE里对configbits进行设置,具体步骤:
1、打开MPLAB IDE;
2、通过file->import,打开要烧写的HEX文件;
3、对configbits进行设置;
4、通过file->export,导出HEX文件。
此时的HEX文件才是包含了config 信息的HEX文件,这样再用PICKIT2烧写的话应该就不会提示那个错误了。
ICD3Err0045: You must connect to a target device to use MPLAB ICD 3.
A:---检查目标标是否供电,或IDE里设置ICD3供电。由于ICD3是通过USB供电,所以ICD3供电到目标板的电流不大,建议使用时目标板自己外接电源;
----检查ICD3到目标板的连线顺序,很多客户连接时正好顺序全反;
----检查烧写端口的5根线的是否有接错或者接触不良。