MPLAB ICD2使用的常见问题
1.ICD 2 响应“Target not in debug mode”这是什么意思?通常这说明MPLAB ICD 2 不能和调试执行程序通讯。只能通过选择Debugger>Program 菜单,对用户应用中的目标PICmicro单片机编程,来下载调试执行程序。也可能是其它原因使得调试执行程序不能通讯,如目标时钟或电源问题。查看配置位,查看Config>Configuration Bits...,确保看门狗被禁止,代码保护被关闭,并且振荡器设置正确。
2.为什么我在配置锁相环(PLL )振荡器时有问题?MPLAB ICD 2 被挂起。这是PICmicro 单片机所要求的。在对PLL 振荡器的配置位编程后,电源需要断开然后再加到目标板上。如果没有这样做,目标PICmicro 单片机将没有时钟。没有时钟,调试模式将不能工作。同样,如果在切换到PLL 模式时,电源没有被断开再连接,器件可能会运行,但没有使用PLL。
3.当我尝试安装时,为什么找不到驱动,即使当我能在驱动文件夹中看到它们,并且我在驱动向导中指向了正确的文件夹也不行?这个问题可以这样解决:退出驱动安装向导,再到控制面板选择“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...”按钮时,进入驱动文件夹,并选择正确的驱动。
4.单步执行时,定时器为什么运行不正常?这是使用在线调试器的缺点之一。由于代码实际上是在调试执行程序中运行,在调试执行程序运行期间,即使用户的应用程序被中止,定时器也会继续运行
5.在使用PIC12F629/675 或PIC16F630/676 时,为什么会有警告和错误?在使用MPLAB ICD 2 过程中,这些器件的GP1/RA1 引脚不能被拉高。参见MPLAB ICD 2 Header (DS51292)文档,获得更多关于对这些器件使用ICD 2 的信息。
6.当我在程序的起始位置设置一个断点时,为什么它停止在地址0001 ,而不是地址0000 ?
MPLAB ICD 2 在断点后的指令上暂停。这意味着设置了断点的地址0000 处的指令会被执行,接着当它发现断点时,程序计数器会指向地址0001。如果用户需要在其代码的第一条指令处暂停,他们必须在地址0000 处插入一条NOP 指令。
7.通过RETFIE 指令来使用高优先级中断时,为什么 W 、 STATUS 和BSR 寄存器的值会改变?用于高优先级中断和CALL FAST 的影子寄存器被MPLABICD 2 使用了。这些是保留给MPLAB ICD 2 操作的资源。如果断点设置在CALL FAST 子程序内,或者在通过 RETURN FAST 或RETFIE 指令使用了影子寄存器的高优先级中断服务程序内,将会出现问题。