一、 开发环境的安装
本章讨论了如何安装PICkit 3 编程器/ 调试器系统。
1 MPLAB IDE开发环境的安装
要安装MPLAB IDE 软件,首先从CEPARK畅学系列-PIC核心板光盘中找到存放MPLAB IDE 软件的开发环境的文件夹,然后从中获取最新版本的MPLAB IDE 安装可执行程序(MPLAB Tool v8.90.exe),然后运行该可执行程序并按照屏幕指示来安装MPLAB IDE,具体操作如下所示:
首先点击Setup.exe,出现下图所示界面:
点击Next
选择同意,然后点击Next
选择Complete,点击Next
选择安装路径(一般为默认路径),然后点击Next
选择同意,然后点击Next
选择同意,然后点击Next
点击Next
点击Next之后,出现下图所示的安装界面
安装完成,点击Finish
点击关闭按钮,直接关闭这个窗口就可以了
2 HI_TECH_PICC9.8编译环境的安装
在开发环境文件夹中找到HI_TECH_PICC9.8(安装软件+破解)文件,然后找到HCPIC-pro-9.80,双击开始安装。具体安装步骤如下所示。 点击Next
在方框中输入安装软件的型号,可以随便输入五位数字。
输入完成后选择离线激活,并点击Next。
选择同意接受,并点击Next。
选择安装路径,并点击Next。
选择信息使用的语言为英语,并点击Next。
进入安装状态,如下图所示。
安装完成,点击Finish。
3 激活HI_TECH_PICC9.8软件
在开发环境文件夹中选择HI_TECH_PICC9.8(安装软件+破解)文件夹, XP和win7 32位系统的破解,选择XP的破解文件夹。
双击打开,双击HI-TECH图标进行破解。
点击Open
在PICC的安装路径下找到HI-TECH Software文件夹,点击PICC,然后点击9.80文件夹,双击打开后出现如下图所示的界面,选择最后一个选项。
点击Activate激活
激活成功后,在PICC默认安装路径下:C/program files/HI-TECH Software/PICC/9.80文件夹下,会出现一个名称为HCPICP-11111111-activation-response.txt的文件。 说明激活成功!
三、 工程项目设置
安装好软件之后,开始编辑程序以及对程序进行下载调试,具体操作接下来详细介绍。
1 创建新工程
首先,双击桌面上的MPLAB IDE v9.80软件,打开后的界面如下图所示。
点击Project,选择Project Wizard
选择器件的型号,我们使用的是PIC16F877A单片机,选择PIC16F877A并点击下一步。
出现下面的界面,这里我们来选择编译器为PICC,按照如图所示设置,设置完成后点击下一步。
创建工程文件,选择工程保存的路径。 需要特别注意:路径中不能有中文!
设置好的路径如下图所示,并点击下一步。
点击下一步,这一步我们可以在工程中添加已经写好的.c或者.h文件。 从左半部分的窗口中选择已经写好的.c或者.h文件,然后点击add按钮添加到工程中。 当然,如果你还没有写好的任何可添加文件,这一步直接跳过,点下一步。
点击完成
工程建立完成后,出现如下图所示的界面。
点击菜单选项中的Project,然后选择Build Option中的Project,出现如下界面。,并点击确定。
2 编写程序
我们应该还记得,刚才创建工程的时候,还没有向工程中添加文件呢。现在我们先新建一个空的文件。 选择File菜单中的New,建立程序编辑窗口
在上面的窗口中编辑程序,并保存。初学者可以直接复制配套程序中的内容。
将建立好的main.c文件。 在工程窗口中,右击source files文件夹,选择Add files….命令
选择添加刚才保存的main.c文件到Source File 文件中
添加好源文件的工程如图所示
3 程序编译
对程序进行编译,点击红色按键。
编辑按钮 编辑完成后,Output的输出界面
将单片机核的心板接上电源,出现如下界面,并点击OK。
4 连接PICKIT3
在MPLAB IDE软件中的菜单栏中,点击Programmer,选择编程工具selece programmer,然后选择PICKIT3
如果能够正确连接上kit3,则Output中出现如下提示,连接完成。
PICKIT3 连接完成后,在菜单栏中出现下图所示的按钮。其中的programming是对芯片烧写编译好的程序。
5 程序的下载调试
点击Programing可以对芯片进行程序烧写,如果烧写正常,Output 输出界面提示烧写成功。
四、 故障诊断第一步
1 需最先回答的5 个问题
1) 使用的是何种器件?
答:要支持新的器件,通常要求将MPLAB IDE 升级到较新的版本。也就是说,黄灯 = 未经测试的支持。
2) 您使用的是Microchip 的演示板还是您自己设计的电路板?
答:您是否遵守了通信连接的电阻/ 电容的连接准则? 请参见第2 章“工作原理”。
3) 您是否已为目标板供电?
答:调试器无法为目标板提供大于30 mA 的电流。
4) 在安装过程中您是否使用了USB 集线器?
答:它是否已上电? 如果仍有问题,请尝试不使用集线器来连接调试器和PC,而是将调试器直接插入PC。
5) 您是否使用了随调试器一起提供的标准通信电缆(RJ-11)?
答:如果您使用了更长的电缆,则会导致通信错误。
2 不能调试的头10 个原因
1) 振荡器不工作。检查与振荡器有关的配置位设置。 2) 目标板未上电。检查电源电缆连接。 3) 调试器已断开与PC 和/或目标板的物理连接。检查通信电缆的连接。 4) 器件受到代码保护。检查与代码保护有关的配置位设置。 5) 您正在尝试在Release (发布)模式下重新编译项目。在项目工具栏的BuildConfiguration 下拉列表中选择Debug,然后重新编译项目。 6) 在MPLAB IDE 中,调试器选择作为编程器而非调试器。 7) 调试器与PC 的通信已中断。在MPLAB IDE 中重新连接到调试器。 8) 目标应用程序已损坏或包含错误。请尝试重新编译和重新编程目标应用程序。然后启动目标器件的上电复位。 9) 其他配置设置影响调试操作。任何会阻止目标器件执行代码的配置设置也会阻止调试器将代码置于调试模式。 10) 调试器无法总是执行所请求的操作。例如,如果目标应用程序目前正在运行,则调试器无法设置断点。
3 要考虑的其他事项
1) 错误也许是个一次性问题。再次尝试操作。 2) 通常情况下,可能是编程问题。我们来进行一个实验,切换到编程器模式并使用最简单的应用程序(例如用来点亮LED 的程序)来对目标器件进行编程。如果程序未运行,那么就可以知道是目标设置出了问题。 3) 有可能目标器件因某种原因受损(例如过电流)。开发环境难以与器件兼容。请考虑尝试其他目标器件。 4) Microchip Technology Inc. 提供了许多演示板来支持其大多数单片机。考虑使用这些已知正常工作的应用中的一个来检查PICkit 3 编程器/ 调试器的功能是否正确。 5) 查看调试器的调试操作以确保应用设置正确(第2 章“工作原理”)。 6) 如果问题仍然存在,请联系Microchip。
六、常见问题解答
1 如何工作
• 芯片中的什么部件允许它与PICkit 3 编程器/ 调试器通信? PICkit 3 编程器/ 调试器可通过ICSP 接口与闪存芯片通信。它使用下载到程序存储器或测试存储区中的调试执行程序。 • 必须运行调试执行程序会如何影响处理器的吞吐量? 运行模式下,调试执行程序并不运行,所以在运行代码时不会降低吞吐量,即调试器不会“占用”目标器件的任何周期。 • PICkit 3 编程器/ 调试器与其他在线仿真器/ 调试器相比有何区别? • 在MPLAB ICE 2000/4000 调试器中,为了对数据执行复杂触发必须将该数据移出总线。在PICkit 3 编程器/ 调试器中是否也需要这样做?例如,我是否可以根据变为高电平的标志来暂停? MPLAB ICE 2000/4000 调试器使用特殊调试器芯片(-ME)进行监视操作。在 PICkit 3 编程器/ 调试器中没有-ME,所以没有用于外部监视的总线。对于PICkit3 编程器/ 调试器,可以使用调试引擎的内置断点电路而非外部断点——在该设备内部监视总线和断点逻辑。 • PICkit 3 编程器/ 调试器是否具有像MPLAB ICE 2000/4000 一样的复杂断点?是的。您可以根据数据存储单元或程序地址单元中的值进行中断。更多信息可参见 • PICkit 3 是否需要光电或电气隔离? 不。不能对当前系统施加浮动电压或高电压(120V)。 • 对标准电缆有何限制? 标准ICSP RJ-11 电缆不允许时钟速度大于约15 Mbps。 • PICkit 3 是否会降低程序运行速度? 不会,器件将以数据手册中指定的任何器件速度运行。 • 是否可以调试以任何速度运行的dsPIC DSC? PICkit 3 能够以器件数据手册中指定的任何器件速度进行调试。 • 引脚6 (即LVP 引脚)有何功能? 引脚6 是为LVP (低电压编程)连接保留的。
2 出现的问题
• 我的PC 进入掉电/休眠模式,且现在调试器无法工作。发生了什么事情? 当长时间使用调试器,特别是作为调试器使用时,请确保在PC 操作系统的PowerOption (电源选项)对话框窗口中禁止了Hibernate (休眠)模式。请转到Hibernate 选项卡并清除或取消选中“Enable hibernate”(启用休眠)复选框。这会确保在所有的USB 子系统组件上保持所有通信。 • 我将外设设置为不要在暂停时冻结,但是它突然冻结了。怎么办? 对于dsPIC30F/33F 和PIC24F/H 器件,外设控制寄存器中的保留位(通常是bit 14或bit 5)用作调试器使用的冻结位。如果您对整个寄存器执行写操作,就可能改写此位。(在调试模式下用户可访问此位)要避免这个问题,可以只写想要为应用程序更改的位(BTS 和BTC),而不是写整个寄存器(MOV)。 • 在使用16 位器件时,发生了意外复位。我该如何判断产生该操作的原因? 可以考虑以下几个方面: - 要确定复位源,请检查RCON 寄存器。 - 处理中断服务程序(Interrupt Service Routine, ISR)中的陷阱/ 中断。应该包含trap.c 形式的代码,即: void __attribute__((__interrupt__)) _OscillatorFail(void); void __attribute__((__interrupt__)) _AltOscillatorFail(void); void __attribute__((__interrupt__)) _OscillatorFail(void) { INTCON1bits.OSCFAIL = 0; //Clear the trap flag while (1); } void __attribute__((__interrupt__)) _AltOscillatorFail(void)
{
INTCON1bits.OSCFAIL = 0; while (1); } • 我已经完成了代码调试。现在也已编程了器件,但是它不运行。出了什么问题? 可以考虑以下几个方面: - 您是否选择该调试器作为编程器然后尝试编程仿真头板? 答:仿真头板包含器件的-ICE/-ICD 版本,它们也许不能像实际器件一样工作。调试器作为编程器时,只能编程常规器件。常规器件包括具有内置ICE/ICD 电路的器件,而非仿真头板上的特殊-ICE/-ICD 器件。 - 您是否选择该调试器作为调试器然后尝试编程生产器件? 答:当该调试器用作调试器时,编程器件会将调试执行程序烧写到程序存储器中并为调试设置其他器件功能。要烧写最终(发布)代码,应选择将该调试器用作编程器。 - 您是否从Build Configuration 下拉列表或项目菜单中选择了“Release”? 答:对于最终(发布)代码,您必须这样做。重新编译项目、重新编程器件,并尝试再次运行代码。