0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PIC单片机的在线调试说明

454398 来源:网络整理 作者:网络整理 2019-12-06 11:25 次阅读

在线调试器(ICD)是一种非常强大且有效的工具,可以在硬件级别对基于微控制器的系统进行实时调试,它允许您在目标微控制器运行,停止和单步执行程序被嵌入到实际电路中。暂停后,可以实时检查和修改程序变量,特殊功能寄存器(SFR),RAM和EEPROM的位置,从而帮助设计人员一起调试固件和硬件。在本文中,我将描述PIC单片机中的在线调试技术,并通过使用PIC16F887单片机的测试项目演示调试过程。尽管大多数ICD的操作是相似的,但在这里我将结合使用mikroICD器件的mikroElektronika的PICFlash以及用于PIC编译器的mikroC Pro进行说明。

PIC单片机的在线调试说明

ICD在调试PIC编程

理论

ICD是硬件连接在PC和目标微控制器之间的设备,可以快速,轻松地调试实时应用程序。 ICD由PC上运行的调试应用程序工具控制。调试工具允许设计人员通过将断点插入到程序0r中来单步执行程序,从而减慢微控制器的运行速度。在执行了一条指令或一组指令之后,可以检查程序变量和内部寄存器的值,并在需要时进行修改。这有助于快速识别源代码中的错误和错误,从而加快项目的开发过程。

PICMicro中的ICD

在PIC单片机中,可通过与在线串行编程(ICSP)相同的引脚(即ICSPDAT(或PGD),ICSPCLK(或PGC),V PP)来实现在线调试。 sub》/MCLR(编程模式电压),V DD (电源电压)和V SS (地)。这使制造商可以将ISCP编程和在线调试功能集成到单个设备中。在调试过程中,ICD设备会向目标微控制器的程序存储器中添加额外的代码块(以及用户应用程序),该代码块与调试应用程序进行交互。并通过同一条编程电缆将变量值,内部寄存器值和其他详细信息发送到PC。

例如,MicrochipMPLAB ICD2和ICD3既是选定PIC MCUdsPIC DSC的编程器又是实时调试器。 ICD的功能由PC上运行的MPLAB集成开发环境(IDE)应用软件控制。在调试期间,可通过MPLAB IDE界面以交互方式访问目标微控制器的所有可用功能。这些功能使您能够以单步模式运行程序,将断点插入程序,检查寄存器和变量,并根据需要修改它们。

尽管ICD是一种非常有价值的调试工具,但它并不是不惜一切代价。 ICD的两个主要缺点是:1)它使用目标微控制器的一些内存,并且2)它占用目标微控制器的一些I/O引脚以与PC通信。因此,在调试时,目标微控制器的PGD,PGC和MCLR引脚不能用于任何其他目的。

带有mikroICD的PICFlash

带有mikroICD的PICFlash是用于PIC12,PIC16和PIC18系列微控制器的编程器和在线调试器。它由mikroElektronika制造,并受其所有PIC编译器(mikroC,mikroBasic和mikroPascal)支持。设备通过USB接口与PC通信,该接口还为ICD提供必要的电源。它通过PGC,PGD,V PP /MCLR和电源引脚连接到目标PIC微控制器。当该器件用作独立编程器时,在将HEX文件加载到目标PIC微控制器之后,释放前三个引脚。但是,如果将其用于在线调试,则这三个引脚用于与PC进行通信,因此不能用于任何其他目的。

带有mikroICD的PICFlash :程序员+在线调试器

使用mikroICD安装PICFlash的软件

您可以找到详细信息有关此信息,请参见mikroICD手册。设置该器件的最简单方法是首先下载PIC编译器。请注意,此设备无法与任何其他方的编译器一起使用,因此您需要使用mikroElektronika编译器之一才能使其正常工作。以下步骤介绍了用于mikroC Pro for PIC编译器的带有mikroICD的PICFlash的软件安装和设置。

首先,从HERE下载适用于PIC编译器的mikroC Pro并将其安装在PC上。/span》

安装完成后,它将询问您是否要安装mikroProg Suite for PIC。同意,然后安装。

下一步,它将询问您是否要安装驱动程序formikroProgprogrammer。说是,然后选择适合您的操作系统的驱动程序文件,然后安装它。您完成了!

使用带有mikroICD的PICFlash进行调试

第一步使用mikroICD正在用所选的编译器编写应用程序,例如mikroC Pro for PIC。编译器的IDE提供了调试功能,例如逐步运行程序,使用断点暂停程序执行,检查内部寄存器的状态,跟踪程序中变量的值等。请阅读mikroICD手册以获取更多详细信息。我将在我们的测试项目中说明调试过程,该项目使用PIC16F887微控制器和LM34DZ传感器测量环境温度并将其显示在LCD上。该项目的电路图如下所示,这是不言自明的。每次读取温度时,它的工作方式都是如此。按下开关,微控制器从LM34DZ读取温度样本并将其显示在LCD上。您可以看到,在默认情况下,开关输出为高,按下开关时输出为低。我正在为此实验设置使用mikroElektronika的PIC Ready 1板。它是用于28和40引脚PIC微控制器的快速原型板。该开发板配有PIC16F887微控制器,预装了串行引导加载程序,但实际上不适用于我们的情况。但是,该开发板也确实包含带有mikroICD的PICFlash连接器。 PIC Ready 1板上的用户手册描述了有关板上连接的更多信息。

用于调试PIC16F887单片机系统的电路图

实验设置:带有mikroICD的PIC-Ready1板和PICFlash

所以让我再次简要描述整个场景,以便更清楚地了解我们正在尝试在这里做。我们有一个PIC16F887微控制器电路,该电路可以读取LM34DZ传感器的模拟输出,将其转换为温度(°F),并在LCD上显示。该微控制器通过ICSP引脚连接到mikroICD(PIC编程器+ ICD)。 mikroICD也通过USB端口连接到PC。 mikroICD调试工具已嵌入PIC编译器的mikroC Pro中,因此可以从那里进行操作。我们将使用调试工具对加载到微控制器中的程序进行单步调试,并观察变量值。同时,随着每条指令的执行,其效果也可以在真实的硬件电路中观察到。

mikroICD调试过程

首先,使用以下源代码创建一个新项目,以读取LM34DZ输出并在LCD屏幕上显示测得的温度。如果您是首次使用mikroC编译器,请阅读在mikroC Pro for PIC中创建第一个项目,以了解如何在mikroC Pro for PIC中创建新项目。编译之前,请转到“编辑项目”窗口,然后将生成类型选择为ICD Debug。该选项将使mikroICD将调试代码与用户应用程序一起加载到微控制器中。

/*

* Project name:

Testing mikroICD debugging tool with PIC16F887

* Copyright:

(c) Rajendra Bhatt

* Test configuration:

MCU: PIC16F887

Oscillator: HS, 10.0000 MHz

*/

// LCD module connections

sbit LCD_RS at RC3_bit;

sbit LCD_EN at RC2_bit;

sbit LCD_D4 at RC4_bit;

sbit LCD_D5 at RC5_bit;

sbit LCD_D6 at RC6_bit;

sbit LCD_D7 at RC7_bit;

sbit LCD_RS_Direction at TRISC3_bit;

sbit LCD_EN_Direction at TRISC2_bit;

sbit LCD_D4_Direction at TRISC4_bit;

sbit LCD_D5_Direction at TRISC5_bit;

sbit LCD_D6_Direction at TRISC6_bit;

sbit LCD_D7_Direction at TRISC7_bit;

// End LCD module connections

char txt[] = “Temp = F”;

char *temp = “000.0”;

sbit PressSwitch at RC0_bit;

unsigned int ADC_Value;

void main() {

ANSEL = 0x01; // Configure RA0 as Analog input

ANSELH = 0x00;

TRISA = 0xff;

C1ON_bit = 0; // Disable comparators

C2ON_bit = 0;

TRISC = 0x01; // RC0 is input

TRISD = 0x00;

TRISB = 0xFF;

txt[11] = 223; // ASCII value for degree symbol

Lcd_Init(); // Initialize LCD

Lcd_Cmd(_LCD_CLEAR); // Clear display

Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off

Lcd_Out(1,1,txt); // Write text in first row

do {

if (!PressSwitch) { // Detect logical 0

Delay_ms(300);

ADC_Value = ADC_Read(0);

ADC_Value = ADC_Value*4.88; // Convert to temperature in F

temp[0] = adc_value/1000 + 48;

temp[1] = (adc_value/100)%10 + 48;

temp[2] = (adc_value/10)%10 + 48;

temp[4] = adc_value%10 + 48;

Lcd_Out(1,7,temp);

}

} while(1); // Endless loop

}

下载mikroC项目文件

为构建类型选择ICD调试可进行在线调试

您保存此方案,然后单击 Build + Program (或按F4键)来编译编程并将其加载到目标微控制器中。 mikroICD必须连接到PC的USB端口以及目标微控制器。它会自动启动 PIC的mikroProg Suite ,这是PC上将HEX文件传输到micrcontroller中所需的应用程序软件。现在已经加载了应用程序和调试代码,是时候使用调试功能了,看看它如何工作。

要开始调试,请从菜单中选择 Start Debugger 选项。 运行下拉菜单或使用功能键[F9]。现在,您可以通过按[F8]键逐行执行程序。在执行过程中,默认情况下将以蓝色突出显示下一步执行的程序行(请参见下图)。

要执行的下一条指令将以蓝色突出显示

可以在监视窗口上监视程序的实时执行。您可以选择要监视的任何寄存器和变量,并将它们添加到监视窗口。转到查看-》调试Windows-》监视窗口选项以获取“监视”窗口。从变量列表中选择要观察的变量,然后通过单击显示的+号将它们添加到窗口中。在下图中,我正在调试期间监视四个变量。它们是 ADC_Value,PressSwitch,ADRESH 和 ADRESL 。 ADC_Value 是用户定义的整数变量,用于存储10位A/D结果。 PressSwitch 是输入端口RC0,因为轻触开关处于打开状态,所以它为高。 ADRESH 和 ADRESL 是8位内部寄存器,用于存储10位A/D转换结果。最低有效8位存储在 ADRESL 中,其余2个最高有效位存储在 ADRESH 中。

将寄存器和变量添加到监视窗口

正如我之前提到的,在在线调试中,只要执行一条指令,在实际的硬件电路中也会观察到其效果。例如,当执行 LCD_Init()例程时,LCD屏幕上会出现一个闪烁的光标。这表明您 LCD_Init()例程和您的LCD硬件接口都正常工作。

当LCD_Init例程处于运行状态时,会出现一个闪烁的光标。执行

按住[F8]键,直到执行 Lcd_Out(1,1,txt),您将看到显示的“ txt”字符串在液晶显示屏上。继续按下[F8]功能键,单步执行将继续直到达到 if(!PressSwitch)条件。默认情况下,读取温度开关处于打开状态,而 PressSwitch 为“ 1”,因此不满足 If条件。因此,如果再次按下[F8]键,执行将跳至 while(1)语句。它将继续在 if 和 while 语句之间来回移动,直到您按下电路板上的Read Temp开关。

等待直到按下Read Temp键

当 if(!PressSwitch)指令以蓝色突出显示时,按 Read Temp 切换并点击[F8],执行将进入if语句内。按[F8]键将再次执行单步执行。当执行 ADC_Read(0)时, ADC_Value , ADRESH 和 ADRESL 的值也会改变。 监视窗口。

在if语句中的执行从按下“读取温度”按钮(PressSwitch = 0)开始执行

监视窗口中的ADC_Value显示ADC结果

接下来,显示 ADC_Value 和 temp Lcd_Out(1、7,temp)时,将更新em》变量并在LCD上以°F为单位显示温度。

运行到光标 [F4]和 breakpoint 功能,以加快调试过程。使用[F4]功能键,可以让程序执行直到到达光标位置。类似地,使用断点允许将故意停止放置在所需的程序行上。下表显示了mikroICD中各种调试功能键的摘要。此外,在调试过程中,您还可以从监视窗口修改程序变量的值。 用户手册中描述了mikroICD调试工具的更高级功能。

mikroICD调试工具中的主要功能键
责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6035

    文章

    44553

    浏览量

    634722
  • PICMicro
    +关注

    关注

    0

    文章

    27

    浏览量

    12409
收藏 人收藏

    评论

    相关推荐

    单片机Debug工具性能对比 单片机调试常用命令

    单片机(Microcontroller Unit, MCU)调试是嵌入式开发中的一个重要环节,它帮助开发者发现和修复代码中的错误,优化程序性能。不同的单片机和开发环境可能使用不同的调试
    的头像 发表于 12-19 09:56 149次阅读

    单片机Debug与仿真区别

    单片机的开发是一个复杂的过程,涉及到硬件设计、软件开发和测试等多个环节。为了确保单片机能够按照预期工作,开发者需要使用Debug和仿真技术来检测和修正代码中的错误。 Debug(调试) Debug
    的头像 发表于 12-19 09:47 99次阅读

    单片机调试常见问题与解决方法

    单片机调试是嵌入式系统开发中的一个重要环节,它涉及到对单片机程序的测试和优化,以确保系统能够正常工作。在调试过程中,开发者可能会遇到各种问题。 1. 程序无法烧录到
    的头像 发表于 11-01 14:11 666次阅读

    PICmicro®中档单片机系列参考手册

    PIC单片机中文资料
    发表于 10-09 10:44 1次下载

    PIC单片机的优势和不足之处

    PIC单片机系列,作为美国微芯公司的杰出产品,凭借其卓越的性能和广泛的应用领域,在单片机市场上占据了举足轻重的地位。该系列分为基本级、中级和高级三个级别,旨在满足不同层次的应用需求。 PIC
    的头像 发表于 09-25 17:22 359次阅读

    单片机基本io功能调试过程

    单片机基本IO功能的调试过程涉及多个步骤,旨在确保IO口能够正确地执行输入和输出操作。以下是一个调试过程,涵盖了从准备阶段到实际测试的关键步骤: 一、准备阶段 确定单片机型号和IO口
    的头像 发表于 09-14 14:38 561次阅读

    调试SsitaraAM2x单片机注意事项

    电子发烧友网站提供《调试SsitaraAM2x单片机注意事项.pdf》资料免费下载
    发表于 09-11 14:13 0次下载
    <b class='flag-5'>调试</b>SsitaraAM2x<b class='flag-5'>单片机</b>注意事项

    keil可以读出单片机的程序吗

    Keil是一款广泛应用于单片机程序开发的软件,它提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案。然而,关于Keil是否能直接“读出”单片机的程序,这一
    的头像 发表于 09-02 10:32 922次阅读

    单片机烧录程序的基本步骤是什么

    单片机烧录程序的基础,它包含了单片机芯片、电源、接口等基本元件。在选择单片机开发板时,需要考虑以下几个方面: (1)单片机型号:根据项目需求选择合适的
    的头像 发表于 09-02 09:47 1002次阅读

    几种常用单片机在线升级能力比较

    电子发烧友网站提供《几种常用单片机在线升级能力比较.pdf》资料免费下载
    发表于 03-24 09:39 2次下载

    应用单片机开发的ST LINK调试器设计制作

    调试ST单片机的过程中,ST-LINK是一个很好使用的调试工具。今天,我们就根据网络上的设计方案进行简化,设计制作一个ST LINK调试器,用于之后的
    发表于 03-06 10:26 1112次阅读
    应用<b class='flag-5'>单片机</b>开发的ST LINK<b class='flag-5'>调试</b>器设计制作

    单片机的最小系统由什么组成 单片机的最小系统包括哪些

    Unit,CPU)、存储器、输入输出接口电路等核心功能,常见的单片机有以8051为代表的8位单片机PIC系列单片机和AVR系列单片机等。
    的头像 发表于 02-02 11:27 1.1w次阅读

    PIC单片机振荡电路中如何选择晶体?

    PIC单片机振荡电路中如何选择晶体? 在PIC单片机振荡电路中选择晶体是一个重要的步骤,它直接影响到系统的稳定性和性能。本文将详细介绍如何选择适合的晶体以确保
    的头像 发表于 01-31 09:28 621次阅读

    Microchip推出PIC16F13145系列单片机

    随着嵌入式应用的日益复杂,对定制化硬件解决方案的需求也在不断增长。为了满足这一需求,Microchip Technology Inc.(微芯科技公司)近日推出了PIC16F13145系列单片机(MCU),为用户提供高度定制化的硬件选择。
    的头像 发表于 01-25 17:00 1197次阅读

    示波器测单片机输出波形怎么测

    示波器是一种用来测量和显示电压信号波形的仪器,广泛应用于电子设备的调试和测试中。在单片机开发中,示波器可以用来测量单片机的输出波形,帮助开发者进行故障排除和性能优化。本文将详细介绍如何使用示波器测量
    的头像 发表于 12-28 14:53 4250次阅读