MPLAB及ICD2使用总结课案.docx
- 文档编号:11472675
- 上传时间:2023-03-01
- 格式:DOCX
- 页数:24
- 大小:1.57MB
MPLAB及ICD2使用总结课案.docx
《MPLAB及ICD2使用总结课案.docx》由会员分享,可在线阅读,更多相关《MPLAB及ICD2使用总结课案.docx(24页珍藏版)》请在冰豆网上搜索。
MPLAB及ICD2使用总结课案
ICD2和目标板的连接:
1、建议在VPP/MCLR线和VDD之间接一个上拉电阻(通常约为10KΩ左右),这样VPP/MCLR线可置为低电平来复位PICMCU。
2、不是所有的PICMCU都有AVDD和AVSS引脚,但如果目标PICMCU有这些引脚,为使MPLABICD2正常工作,这些引脚必须连接上。
3、PGC/PGD不要接上拉——由于在MPLABICD2中这些线有4.7KΩ的下拉电阻,上拉会分压。
4、PGC/PGD不要接电容——在编程或调试通信期间,它们会阻止在数据和时钟线上电平的快速翻转。
5、MCLR不要接电容——它们会阻止VPP上电平快速翻转。
通常一个简单的上拉电阻就足够了。
6、PGC/PGD不要接二极管——它们会阻止MPLABICD2和目标PICMCU之间的双向通信。
ICD2调试模式:
1、使用MPLABICD2作为调试器有两个步骤。
第一步要求将应用程序烧写到目标PICMCU中。
第二步使用目标闪存PICMCU内部的在线调试硬件来运行和测试应用程序。
2、编程时,目标PICMCU不需要时钟,但必须提供电源。
3、当编程时,MPLABICD2将编程电压加到VPP引脚上,然后给PGC发送时钟脉冲,并通过PGD发送串行数据。
为校验单片机是否已被正确编程,可以给PGC发送时钟,并通过PGD读回数据。
这与PICMCU的ICSP协议一致。
4、目标PICMCU必须有电源和正常工作的振荡器。
5、必须对目标PICMCU的配置字正确编程:
-振荡器配置位应与RC和XT等相对应,具体取决于目标板的设计。
-不要使能目标PICMCU的看门狗定时器。
-不要使能目标单片机的代码保护功能。
-不要使能目标单片机的表读保护功能。
进入调试模式的操作顺序:
如果调试模式的要求都满足,那么当MPLABICD2被设置为当前调试器(Debugger>SelectTool)时,可以进行以下操作:
•当选择Debugger>Program时,应用代码就会通过前面所述的ICSP协议烧写到PICMCU的存储器中。
•一个小的“调试执行”程序被载入到目标PICMC程序存储器的高地址段。
由于调试执行程序必须驻留在程序存储器中,因此应用程序不能使用这段保留的空间。
调试执行程序一般需要0x120字的程序存储空间。
•使能目标PICMCU中的特殊“在线调试”寄存器。
这使得调试执行程序能被MPLABICD2激活。
•通过将VPP/MCLR保持为低电平,使目标PICMCU复位。
操作好的调试模式如下图:
调试执行程序象程序存储器中的应用程序一样运行。
它使用硬件堆栈的某些(通常仅使用一个或两个)地址单元,且通常大约使用14个数据寄存器来存放临时变量。
如果PICMCU不工作——不管什么原因(如没有振荡器、电源连接故障、目标板短路等),则调试执行程序不能传送信息回MPLABICD2,并且MPLABIDE会发出一个错误消息。
编程器模式:
当使用Programmer>Program选项烧写器件时,应该在MPLABIDE中禁止在线调试寄存器,这样MPLABICD2将只烧写目标应用代码和配置位(以及EEPROM数据,如果有并选择的话)到目标PICMCU中,调试执行程序不会被加载。
在这种模式下,MPLABICD2只能通过翻转MCLR线来复位和启动目标器件。
不能设置断点,也不能查看或改变寄存器的内容。
MPLABICD2使用ICSP对目标单片机进行编程。
编程时不需要时钟,并且处理器的所有模式都能被编程,包括代码保护、使能看门狗定时器以及表读保护。
供电:
对MPLABICD2和目标板的供电有多种配置。
以下为配置要点:
•当使用USB连接时,MPLABICD2可由PC供电,但必须给目标板提供一个电源。
•当使用RS-232连接到PC时,MPLABICD2必须接一个外部电源。
•当MPLABICD2有自己的电源时,它可以对较小的目标板在5V电压下提供一定大小的电流,最高可达200mA。
•MPLABICD2不能通过目标板供电。
•应先给MPLABICD2上电,再给目标板上电。
ICD有两种上电顺序:
•MPLABICD2给目标板供电时的上电顺序
•目标板有独立电源时的上电顺序
MPLABICD2给目标板供电时的上电顺序
按照如下顺序来由MPLABICD2为目标板供电。
这种配置只允许在5V电压,最高200mA电流下使用。
1.给MPLABICD2上电。
不要给目标板供电。
2.启动MPLABIDE。
3.在MPLABIDE的Debugger菜单中,选择Connect(连接)。
4.与MPLABICD2建立通信后,选择Debugger>Settings。
5.在Settings对话框中,点击Power(电源)选项卡并确保复选框“PowertargetcircuitfromMPLABICD2(由MPLABICD2向目标电路供电)”被选中。
点击OK。
目标板有独立电源时的上电顺序
按照下列顺序使目标板通过其自身电源供电。
这种配置下,目标板电源电压可为2-5V,电流可比MPLABICD2提供的电流高(>200mA)。
请查看PIC单片机的数据手册来确认所使用器件
的电压范围。
1.给MPLABICD2加电。
不要给目标板供电。
2.启动MPLABIDE。
3.在MPLABIDE的Debugger菜单下,选择Connect。
4.在与MPLABICD2建立通信后,选择Debugger>Settings。
5.在Settings对话框中,点击Power选项卡并确保复选框“PowertargetcircuitfromMPLABICD2”未被选中。
点击OK。
6.给目标系统上电,然后选择Debugger>Connect。
实时执行
当MPLABICD2实时运行时,就像没有调试器的处理器那样执行指令。
在运行模式下,屏幕上显示的寄存器将不被更新。
处理器暂停后,可执行单步模式。
单步模式执行即单步运行处理器或执行Debugger>StepInto。
单步模式执行使你可以一次只执行代码中的一条指令,以查看程序流程,并且查看执行每条指令后寄存器的内容(如对话框中所设置的)。
注:
在单步执行过程中,MPLABICD2可能不会响应中断。
应查看器件的限制来确定器件是否支持单步执行中断服务程序。
如果在程序执行过程中写入数据EEPROM,MPLABIDE的EEPROM窗口将不会反映出更改。
为了更新窗口中的值,需要对EEPROM存储器执行读操作。
如果其他窗口中一些寄存器或存储器的值不正确,注意MPLABICD2还有保留资源。
特殊链接描述文件
MPLABIDE提供了单独的链接描述文件,用于保留MPLABICD2所使用的资源。
每个受支持的器件都有一个单独的链接描述文件。
文件名含有器件的名称,以“i”结尾。
示例:
•18F452i.lkr——用于PIC18F452器件
•18F4580i_e.lkr——用于带有扩展存储器的PIC18F4580器件
使用MPLABICD2的用户应该使用为其所编程的器件提供的链接描述文件,而不是标准链接描述文件。
MPLABICD2连接到目标PICMCU器件环节
如果MPLABICD2的VDD和VSS线没有连接到目标电源和地,它将不能工作。
当MPLABICD2对目标电路供电(通过选中Debugger>Settings对话框的Power选项卡中的“PowertargetcircuitfromMPLABICD2”)时,将提供VDD给目标板(仅<200mA,5V)和这些输出缓冲器。
否则,将使用目标板的VDD。
MPLABICD2检测VDD值来确认电压值是否正确。
如果MPLABICD2在其VDD线(ICD连接插座的第2个引脚)上没有电压,将不能工作。
使用示波器观测,能看到PGC和PGD上的通信有着完整的从目标VDD到VSS的峰-峰波形。
VPP上应显示+12、+5和0V电平,具体值取决于进行的操作。
仅当从MPLAB用户界面执行一个MPLABICD2功能后,才能在这些线上看到信号。
否则,所有这些线都应空闲且没有噪声。
MPLABICD2能在目标PICMCUVDD为2V到5.5V的范围内工作。
目标应用必须由其自己的电源供电。
记住MPLABICD2中PGC和PGD的I/O驱动器是通过目标VDD供电的。
目标振荡器环节
如果目标振荡器起振时间过长,那么MPLABICD2可能会超时并产生错误。
调试执行程序环节
如果目标PICMCU有AVDD和AVSS,确保它们已正确连接。
这两根线应分别与电源(VDD)和
地(VSS)相连。
详细信息请参考器件数据手册。
如果这两根线存在但其中任何一根没有连接,MPLABICD2将不能工作。
确保LowVoltageProgramming(低电压编程)被禁止(Configure>ConfigurationBits)。
在线调试寄存器环节
确保在烧写器件之前,已在MPLABIDE中的MPLABICD2对话框中使能了调试功能。
通过查看Configure>ConfigurationBits对话框,可以确认在线调试寄存器是否已被使能。
标有“Back-groundDebug”的行应为“使能”。
注:
在MPLABIDE8.3中,这一位由软件自动选择,Configure>ConfigurationBits中没有这一位的设置项。
当Debugger选择MPLABICD2时,这一位自动置0,使能在线调试器,此时RB6和RB7专用于在线调试。
在线调试资源环节
在在线帮助中查看器件使用的具体寄存器。
不能使用为MPLABICD2保留的文件寄存器和程序存储空间。
如果使用xxxxxi.lkr链接描述文件(文件名以“i”结尾),那么除非已经修改了链接描述文件,否则这些资源将被标记为保留,将不能在应用中使用。
如果没有使用链接器,在代码中使用CBLOCK或EQU用于存储变量,确保没有使用MPLABICD2需要的寄存器。
如果使能了“codeprotect”(代码保护)或“tablereadprotect”(表读保护),如果看门狗正在运行,或振荡器没有通过配置位设置为正确的模式,在线调试器将不能工作。
如果使用快速中断或CALLFAST指令,MPLABICD2使用影子堆栈,用户将不能从快速中断程序或CALLFAST功能正确地退出。
每个器件都有一个链接描述文件。
这些文件定义各个器件的存储器配置和寄存器名称。
链接描述文件在MCHIP_Tools文件夹下的LKR子文件夹中。
本项目使用名为18F452.lkr的文件。
该文件的完整路径如下:
C:
\ProgramFiles\MPLABIDE\MCHIP_Tools\LKR\18F452.lkr
注:
还有一个名为18F452i.lkr的链接描述文件,在使用MPLABICD2(所以名称中有“i”)时,用于此器件。
该链接描述文件为MPLABICD2保留了存储区。
由于本例将使用软件模拟器,因此不需要使用该链接描述文件。
在MPLABIDE或在代码中设置配置位
可以在代码中设置配置位(即,使用__config命令或初始化代码);也可以使用ConfigurationBits(配置位)窗口(Configure>ConfigurationBits)设置配置位。
虽然可以使用两种方法,但是也许应该仅选择一种方法以避免混淆和改写位值。
如果想要在窗口中更改配置位的值,在开发完成前请不要在代码中更改配置位。
而是等到开发完成以后才将窗口值加入代码,重新编译项目(该过程会将代码值输入窗口)并执行最终运行以确保一切正确。
如果想要在代码中更改配置位的值,请不要对窗口进行任何更改。
每当编译项目时,都会将代码值装入窗口,此时先前对窗口所做的任何更改都将丢失。
保存/清零配置位的值
当关闭/打开工作区时将保存/恢复Configurationbit(配置位)窗口的值。
如果在Settings(设置)对话框(Configure>Settings)的ProgramLoading(程序装载)选项卡中选择了“Clearprogrammemoryuponloadingaprogram”(在装载程序时清空程序存储器)复选框,配置位就会在装载程序(即编译、导入或打开项目)时被清零。
•Animate
单步连续运行使得调试器在运行程序时实际执行单步运行,在运行时会更新寄存器
的值。
Animate比Run功能运行要慢,但是这样做允许在SpecialFunctionRegister窗口
或Watch窗口中查看寄存器值的变化过程。
要暂停单步连续运行,请使用菜单选项Debugger>Halt而不是工具栏上的Halt或快捷键F5。
•StepInto
单步运行整个程序代码。
对于汇编代码来说,此命令执行一条指令(单周期或多周期指令),然后暂停。
在执行了一条指令之后,所有窗口都被更新。
对于C代码来说,此命令执行一行C代码,这可能意味着执行一条或多条汇编指令,然后停止。
在执行完之后,所有窗口被更新。
注:
不要单步跳入Sleep指令。
•StepOver
在当前程序计数器处执行指令。
当遇到CALL指令时,单步跳过调用的子程序并在CALL之后的地址处暂停。
如果单步跳过太长或者显示出已经“挂起”,单击Halt。
•StepOut
单步跳出子程序。
如果正在单步运行子程序代码,可以使用StepOut在完成执行子程序的剩余部分后在CALL之后的地址处暂停。
MPASM交叉汇编器和MPLINK链接器
通常情况下,可使用交叉汇编器和交叉编译器来为项目编写代码。
MPASM是MPLABIDE的一个组件,它与MPLINK配合工作,MPLINK将汇编语言代码段与MPLABC18C编译器生成的代码链接起来。
汇编语言程序适用于要求非常快运行速度或要求在严格定义的时间内运行的小代码段。
注:
尽管编译器生成代码的执行时间可能与使用汇编语言生成的代码几乎相同,但由于编译是一个翻译转换过程,经过这一翻译转换过程后才能生成可直接从汇编语言生成的机器码,因此编译器生成的代码不可能比汇编语言代码执行速度快。
3.7检查安装和编译选项
在编译和测试程序之前,还应该检查安装和项目设置。
语言工具应该安装正确,且设置对于这些第一批代码示例要正确,否则将发生错误。
按照如下所述进行这些检查:
1.选择Project>BuildOptions...>Project,并点击General(常规)选项卡。
如果IncludePath和LibraryPath未如图3-11中所示设置,则使用Browse按钮来在MPLABC18安装目录中找到这些文件夹。
图3-11:
编译选项:
GENERAL
注:
可为一个包含路径或一个库搜索路径输入多个路径,方法是将路径之间用
分号分隔开:
c:
\myprojects\h;c:
\mcc18\h。
2.有一个选项要更改为与默认设置不同。
点击MPLINKLinker选项卡。
如果SuppressCOD-filegeneration复选框没有选中,则选中它:
图3-12:
编译选项:
MPLINK™LINKER
注:
如果不选中这个复选框,链接器会生成MPLABIDE不再使用的老.cod
文件类型。
这个文件格式具有62个字符的文件/路径长度限制,将导致错误
“nameexceedsfileformatmaximumof62characters”
3.8编译和测试
3.8.1编译项目
如果按照指示完成了安装,就可以选择菜单Project>BuildAll或Project>Make来编译项目了。
注:
编译并链接项目中的所有文件称为“make”或“build”。
BuildAll将重新编译项目中的所有源文件,而Make将仅重新编译自上次编译后更改过的源文件,因此Make编译速度较快,尤其是项目中包含许多源文件时。
可不通过菜单选择,而使用快捷键Ctrl+F10和F10来进行编译。
工具栏中也包含这些功能的图标,因此按一下功能键或点击一次鼠标即可编译项目:
图3-13:
BUILDALL和MAKE的图标
项目应正确编译,如Output(输出)窗口中所示:
图3-14:
编译成功后的OUTPUT窗口
如果来自MPLINK(链接器)和MP2HEX(.hex文件转换器)的消息未显示“Errors:
0”,则可能有输入错误。
在Output窗口中找到第一个错误。
如果是输入错误,则在Output窗口中的该错误行上双击来在文件main.c中编辑错误。
3.8.2通过MPLAB®SIM测试程序
要在MPLABIDE中测试这些程序,可使用内置的软件模拟器MPLABSIM。
1.选择Debugger>SelectTool>MPLABSIM来启用模拟器。
更改调试工具后要重新编译项目,因为程序存储区可能被清除了。
2.选择Debugger>Settings并点击Uart1IO选项卡。
应该选中EnableUart1IO(使能Uart1IO)复选框,且Output(输出)应该设置为Window(窗口),如图3-15所示:
图3-15:
软件模拟器设置:
UART1
注:
这个对话框可使来自printf()函数的文本传输到软件模拟器的UART(串行I/O外设),然后传输到MPLABIDE的Output窗口。
选择了软件模拟器后,将在MPLAB菜单下出现DebugToolbar(调试工具栏,图3-16)。
图3-16:
调试工具栏
5.2MPLAB项目编译选项
MPLAB项目管理器中含有控制MPLABC18编译器、MPASM汇编器及MPLINK链接器的设置。
可为整个项目设置项目选项,也可为每个源文件分别调整项目选项。
项目编译选项具有如下选项卡来控制项目的语言工具选项。
•General(常规)——为项目设置路径。
•MPASM/C17/C18Suite(MPASM/C17/C18工具包)——将编译目标设置为标准或库。
•MPASMAssembler(MPASM汇编器)——控制MPASM开关选项,如是否区分大小写、是否启用PIC18XXXX扩展模式、十六进制文件格式、警告及错误消息。
•MPLINKLinker(MPLINK链接器)——确定HEX文件的格式,以及映射文件和调试输出文件的生成。
•MPLABC18——设置general、memorymodel及optimization选项。
注:
可为每个文件分别定制编译设置。
选择Project>BuildOptions...>
MPLABC18对话框具有3个分类,可从Categories(分类)下拉菜单中选择。
•General选项
•MemoryModel选项
•Optimization选项
5.2.1General选项
选择Project>BuildOptions...>Project显示控制整个项目选项的对话框。
MPLABC18
选项卡具有以下设置(见图5-1):
图5-1:
项目的General选项对话框
Diagnosticlevel(诊断级别)——通过以下三个设置控制诊断输出:
-仅输出错误
-输出错误及警告
-输出错误、警告及消息
Defaultstorageclass(默认存储类别)——设置局部变量的默认存储类别。
可通过在定义各局部变量时将其声明为所希望的类别改写。
-Auto(自动)——这是默认设置,允许可重入的代码。
这是在扩展模式中允许使用的惟一存储类别。
-Static(静态)——局部变量和参数将被静态分配,因而存取这些变量和参数所需代码量较小。
仅在非扩展模式中才允许使用。
-Overlay(重叠)——局部变量及参数将被静态分配。
此外,可能的话,局部变量将会与其他函数的局部变量重叠。
仅在非扩展模式中才允许使用。
Enableintegerpromotions(启用整型提升)——ANSIC标准要求算术运算以int精度(16位)或更高精度执行。
禁用此选项有利于缩短应用程序的代码长度。
若要求与ANSIC兼容,应选中此复选框。
Treat‘char’asunsigned(将char视为无符号型)——因为PIC18XXXX器件的数据总线是8位的,因而计算时通常使用0至255(0xFF)之间的值。
正常情况下,char定义一个值在-128至127之间的变量。
将普通的char视为无符号型(unsigned)将只允许在0至255之间的正值,在一些用8位单片机处理长度较短变量的应用中,这样做可能更适合于计算。
Extendedmode(扩展模式)——允许使用PIC18XXXX扩展模式进行编译。
当使用支持扩展模式的PIC18XXXX器件时,必须使用恰当的链接描述文件。
扩展模式链接描述文件的名称以“_e”结尾,如18f2520_e.lkr。
MacroDefinitions(宏定义)——可通过Add(添加)按钮向宏定义段添加宏。
这与《MPLAB®C18C编译器用户指南》中“简介”部分描述的-D命令行选项是等效的。
Inheritglobalsettings(继承全局设置)——当选中此复选框时,文件会继承项目的所有设置。
UseAlternateSettings(使用其他设置)——当选中此复选框时,设置仅适用于当前文件。
允许设置当前MPLAB对话框不支持的其他编译器命令行选项。
更多有关编译器开关选项的信息请参见《MPLAB®C18C编译器用户指南》。
5.2.2MemoryModel选项
该对话框可单独控制编译器的存储模型(见图5-2)。
图5-2:
MEMORYMODEL选项对话框
CodeModel(代码模型)——将程序存储器指针的默认长度设置为16位或24位。
可通过声明该指针为near(16位)或far(24位)改写默认设置。
使用16位指针(小代码模型)可提高代码效率,但如果指针指向的是程序存储器大于64KB的器件中的程序存储数据(romdata),就应该使用24位指针(大代码模型)。
DataModel(数据模型)——默认数据段(idata和udata)位于快速操作RAM(AccessRAM)中(小代码模型)或分区RAM(大代码模型)中。
可通过将各变量声明为near或far并在正确的存
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MPLAB ICD2 使用 总结