找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9234|回复: 0
打印 上一主题 下一主题
收起左侧

Proteus教程第三部分:VSM虚拟系统模型

[复制链接]
跳转到指定楼层
楼主
ID:290266 发表于 2018-4-5 02:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本系列完整的pdf版本教程下载(共150页pdf)
http://www.51hei.com/bbs/dpj-111690-1.html

VSM 虚拟系统模型

介绍

本部分教程的目的是向您介绍如何使用 Proteus VSM 和 VSM Studio IDE 对带有微控制器的系统进行交互式仿

真。本部分教程的重点将放在仿真器和 IDE 的实际使用上,针对每一个主题的详细说明请参考帮助文档中的内 容。本部分教程不包含原理图的绘制,如果你对 ISIS中的原理图绘制不熟悉,你应该先花时间学习第一部分教 程中的内容。


我们将使用预先画好的微芯(Microchip)公司的 F1 评估板原理图来学习本教程的内容,如下所示。


通过本教程,我们不仅可以掌握 VSM Studio IDE 的基本仿真功能,还可以了解 Proteus VSM 中的各种调试和 测试工具。要学习本教程你将需要:

          必须安装 Proteus 8.0 版本或更高版本的软件。如果没有购买专业版的软件,可以从 Labcenter 的网站 上免费下载这个软件的试用版本,或者联系 Proteus 软件的大中华区总代理-广州市风标电子技术有限公司

-获取支持。
          必须安装 9.8 版本或以上的 Hi-Tech PIC16 编译器软件。在 Proteus 软件(VSM Studio IDE)中就可以进 行这个编译器的下载和安装,下载和安装的过程将在本教程后面的工程设置部分进行介绍。


即使你没有安装符这些符合要求的软件,我们仍然建议你读完本教程。因为所有关于调试技术的知识都是通用
的,你如果使用旧版本的软件来进行设计开发,这些知识可能也会有帮助。


建立工程


我们需要做的第一件事是建立 Proteus 8 的工程,由于我们使用预先绘制好的原理图,即一块虚拟开发板,因
此建立工程的过程就变得非常简单:

从 Proteus 的主页启动新建工程向导,选择“从开发板”选项,在“微控制器系列”列表框中选择 PIC16,然 后从“开发板”列表框选择 F1 评估板(F1 Releas),点击完成导入工程。




导入项目之后,在 Proteus 中可以看到两个选项卡:F1 评估电路板的原理图模块和包含 Microchip 标准硬件驱 动源代码的 VSM Studio IDE,如下图所示:



我们先来编译源代码,将生成的固件(firmware)进行仿真调试。


编译器配置


Microchip 提供的源代码是使用 Hi-Tech PIC16 编译器编写的,因此为了能够成功编译并生成固件,我们需要安
装这个工具。切换到 VSM Studio 选项卡,从“系统”菜单启动“编译器配置”对话框。





这个对话框列出了所有支持的编译器,并指示是否被安装和配置。按下对话框底部的“检查全部”按钮,Proteus
将扫描你的计算机,查找安装好的编译器。如果找到 Proteus 支持的编译器,Proteus 将自动进行配置并在
Proteus 中调用这些编译器编译源代码。

开源的编译器能够直接从 Labcenter 的服务器上下载和安装。需要收费的编译器,Proteus 将提供链接到相应供 应商网站的下载页面。在这个例子里,使用的是 Hi-Tech 编译器,如果还没有安装,则需要从微芯的网站下载:


1.              点击编译器旁边的“打开网站”按钮;

2.              下载并安装编译器,如果没有购买,可以使用 Lite mode,或者选择使用 45 天的评估版,如下图所示:


3.              安装完成后点击对话框底部的“检查全部”按钮,Proteus 将自动重新检查所有的编译器并进行配置, 使得它能够在 Proteus 中编译源代码。




运行这个命令以后,你应该注意到对话框中的 Hi-Tech 编译器被标记成已安装。在 IDE 底部的输出窗口也会报
告编译器检查的结果。





到了这里,编译器、源代码和原理图已全部准备好了,使用 VSM Studio“构建”菜单下的“构建工程”命令(或 构建图标)编译固件。


编译器的输出将显示在 IDE 的底部面板中,编译完成以后,你能得到一个编译成功的信息。



接下来运行仿真,在虚拟硬件上测试编译后的代码。

VSM Studio 会自动配置常见的编译器选项用于正确编译你的工程。如果你需要调整这些编译器设置
(例如链接到外部库),你可以通过“构建”菜单下的“工程设置”对话框进行调整。


运行仿真


只需要简单的按下 Proteus 左下角“仿真控制面板”中的运行按钮就可以运行仿真。



现在,软件将自动切换到原理图页码进行仿真,原理图中的 LCD 面板将显示默认的时间。


F1 评估板的示例程序可以显示三种模式,时间,一温度,和电位器的 ADC 采样值。可以通过按下原理图中的 控制按钮来循环切换显示模式,进行交互式仿真。



当处于温度显示模式时,你可以在 MCP9800 传感器上通过点击递增或递减按钮来调整温度值。当前的温度值 是通过 I2C 总线传输到 PIC 处理器中,经过处理以后显示在 LCD 上的。




当处于电压显示模式时,可以调节电位器,处理器将转换后的电压值显示在 LCD 上。




这个 PIC16 微控制器有一个 10 位的 ADC,所以采样得到的数据的显示范围是 0 到 1023,对应的电压范围是
0-3.3V。最后,按下动画控制面板的停止按钮可以停止仿真。




注意事项


当我们在 Proteus 中运行仿真时,仿真结果可能不会立刻显现,但在你能看到的仿真结果背后,Proteus 软件进
行了大量的处理和计算工作:

首先,Proteus 原理图中的微控制器执行编译后的固件文件与真实世界中的 PIC 执行编程的固件完全一样。使 用 VSM Studio IDE 只是把烧写 PIC 芯片的过程,变成把编译成功后得到的文件发送给原理图。


其次,你可能会注意到,原理图中几乎所有导线都使用了终端来结尾,并且终端都有一个名字。在原理图中, 相同名字的两个终端被认为是相连的(像有一根虚拟的导线)。例如,温度传感器旁边的 RC3 和 RC4 终端连 接到了 PIC 处理器中的 I2C 接口的两个引脚上。我们喜欢使用这种方式进行原理图连线,因为可以避免导线的交叉,并且可以将原理图分割成容易识别的逻辑块。如果你要了解更多关于这种连接方式的信息,可以阅读 ISIS 的参考手册。


最后,在 Proteus 软件底部的状态栏显示了仿真运行的时间。仿真很可能不是实时的,这取决于你的计算机的
性能、处理器的速度和原理图的复杂程度。状态栏显示的执行时间就是虚拟仿真世界的时间。


例如,对于一个特别慢的计算机,在这个仿真中调节到时钟模式时,仿真中 LCD 屏上显示的时钟与现实世界墙 上的挂钟不是同时前进的,但它却总是会和状态栏的仿真时间同步前进。



写固件程序


我们已经了解了仿真的整个工作流程,现在就让我们给这个程序添加一些功能。我们知道通过按下原理图中的

按键可以在时间、温度和电压模式之间进行切换,这样我们就能很容易的在这里添加其它操作模式。首先,切 换到 VSM Studio IDE 选项卡,打开文件 main.c(在项目中双击 main.c)。





你会在这个文件的顶部看到有一些函数原型以及操作模式的枚举类型定义。我们需要为我们的“测试模式”添
加一个新的函数原型,还要在这个枚举类型中添加一个相对应的值,可以像下图一样进行添加:


接下来,我们需要找到按钮切换的程序块来添加新的操作模式。最简单的方法就是搜索已有模式中的一个,我 们可以在 VSM Studio 右键点击编辑窗口,从弹出的菜单中选择“查找”,在查找内容下输入“MODE_POT”。



查找到的第一个结果就是我们正要寻找的,也就是关于按键释放后用于设置显示模式的 switch 语句。在这里我 们只需要添加新的操作模式:


注意,MODE_TEST 前面的 case 语句也一样需要修改显示模式。

在这段代码的下面还有另一个 switch 语句,用于执行当前的显示模式。同样,我们需要加入我们的 case 语句 来调用我们的函数。




最后一步是添加 display_test()函数,可以在这里添加进入我们的操作模式后要做的事情。我们在 main.c 文件的
底部加入这个函数的定义。


在这里你可以尝试添加任何你想添加的动作,但我们只做一些简单的动作,比如在显示器上显示一个固定值, 并在 LED 上显示二进制的计数器。



由于我们是使用 PORTE 来控制 LED,所以我们需要配置端口的引脚,在 main()函数顶部的外设配置部分设置
ANSELE。

最后一步是构建工程。如果你的程序有错误,在输出窗口会得到编译错误,单击这个错误,会指示出问题所在 的位置。


但有些错误,像链接错误,是不能指出具体出错位置的。这种情况下,你可能需要修改工程设置选

项才能修正链接错误,例如需要在工程设置中加入“函数库”的文件夹。 当我们这次运行仿真时,我们使用按键来切换操作模式,直到进入我们自己的模式(时间->温度->电位器->测试),

我们应该能看到显示器上显示的数“1111”以及 LED 上的计数器。


这个例子实现的功能非常简单,只是用于说明编写代码、编译和仿真的整个流程。


调试弹出窗口


到目前为止,我们在 VSM Studio 页面中完成了代码的编写,并在原理图页面进行了仿真。如果我们有两个显

示器,可以把其中一个页面拖到另一个显示器中,在两个显示器中同时观察这两个页面。 但我们在调试时,通常更感兴趣的是观察代码的单步运行,同时观察原理图的某一小部分进行验证。Proteus

提供了一个调试弹出窗口控件,在仿真调试的过程中,可以将原理图中选定的一部分电路在 VSM Studio 页面
中显示出来。这对于我们只有一个显示器的用户来说将变得非常方便,不需要经常在原理图页面和 VSM Studio

页面之间进行切换,大大提高我们的调试效率。 在我们的教程的例子中,可以以温度传感器来说明实时监控窗口的使用,步骤如下:

1) 切换到 ISIS 选项卡,选择“调试弹出模式”图标。

2) 围绕温度传感器从左上角开始拖出一个框。


3) 完成以后,你应该会看到围绕温度传感器有一个蓝色的虚线框。


如果做的过程中出现问题,可以右键双击虚线框进行删除。同样,如果虚线框的位置有问题,也可 以右键点击虚线框然后选择“移动对象”菜单进行移动。


其它可能需要我们在仿真过程中进行观察和控制的对象有按键、电位器和显示元件(LCD)。我们可以重复上 面的操作,围绕这些器件各自拖出虚线框,完成以后,你的原理图看起来应和下图一样。




因为我们指定了有效弹出窗口,这将会工作在 VSM Studio。现在如果你按下“运行”按钮进行仿真,并切换到
VSM Studio 选项卡,在 IDE 的右边将显示我们刚才选择的部分原理图。





当全速运行代码时,VSM Studio 页面中的源代码和变量的区域将显示“仿真正在运行”的消息。我 们将在下一节介绍调试工具的使用。


调试弹出窗口非常有用,它不仅将原理图中标记的区域显示到调试环境中,而且还可以进行交互仿真。例如, 如果点击按键 S1,切换程序模式,你应该会看到 LCD显示 I2C 温度传感器的温度值。如果你再调节温度传感 器的温度,LCD 会反映出温度的变化。



切换回到原理图页面,你会看到原理图中的状态和调试弹出窗口中的一样。当停止仿真(从仿真控制面板), 调试弹出窗口会消失,VSM Studio 将从调试状态切换回设计编辑状态,你可以再次编辑和编译你的源代码。


只有当仿真停止以后,你才能在原理图中创建或调整调试弹出窗。仿真还在运行时,你也可以在 VSM

Studio 页面通过拖动来调整调试弹出窗口的大小。 现在我们已经配置完调试弹出窗口,来看看如何进行使用调试工具进行代码的调试。


基本调试


Proteus VSM 的最强大的功能就是代码和电路的联合调试。我们已经知道如何在 VSM Studio 中编写代码,也
知道怎样在运行仿真时进行观察。现在我们来看看怎样进行代码的单步运行。

首先确保 Proteus 没有运行仿真,处于停止状态中。通过“仿真控制面板”暂停按钮启动仿真并暂停。




如上图所示,Proteus 将自动切换到 VSM Studio 页面,我们可以看到:调试弹出窗口显示在右手边;主面板报 告“没有源代码”的信息;程序变量的列表放在屏幕的底部。在这个阶段,仿真处于“已经启动”的状态,电 路处在一个稳定的工作点,代码还没有执行,也没有时间的消逝。


源代码窗口没有显示任何的源代码,这是因为在当前的程序计数器(PC=0)中没有源代码可以显示。 你可以从窗口顶部的下拉框中选择这个工程的任何源文件进行查看。但我们先从 main.c 文件开始,因为这个文

件包含了最整个程序的基本流程控制。


先来看看怎么设置断点,举一个简单的例子——要在主函数的按键释放处设置一个断点。放置断点最容易的方 法就是在希望放置断点的代码行进行双击。断点指示器(一个小红点)将会出现在源代码窗口的代码行左边。 如果你误设了一个断点,可以在这行再次双击(或从代码窗口中点击右键,在弹出的菜单中)进行删除或关闭。




如果我们现在点击运行按钮运行仿真,在运行模式下会全速执行代码。直到我们点击并释放模式切换按键(即
S1,可以在调试弹出窗口中点击),按键释放以后代码的执行会到达断点处,仿真将暂停。


到达断点以后,我们可以通过源代码窗口右上角或 VSM Studio 调试菜单中的常用命令单步执行代码。另外可 以使用快捷键 F10 和 F11 分别进行单步跳过调试和单步进入函数内部调试。



如果需要查看程序执行的细节,具体到每一条指令的执行过程。你可以在反汇编代码中进行代码的汇编级单步 调试。右键点击源码窗口,从弹出的菜单中选择“反汇编”,然后同之前一样使用单步调试命令。






再次点击右键选择“反汇编”子菜单将返回到高级语言的源代码中进行单步调试。

在单步调试的过程中,你可能会注意到调试弹出窗口中的 LCD 显示的数字是不完整的。但这是正确

的,因为显示的结果就是由这些不完整的段组合起来的。 如果你想运行到下一个按键释放的状态,只需要按下仿真控制面板中的“运行”按钮,然后在调试弹出窗口中

点击按键再次触发断点。

完成以后,点击右键选择清除所有的断点,然后按下仿真控制面板的“停止”按钮结束仿真调试。

注意事项


在 Proteus 中,当进入断点或单步调试后,要知道现在整个系统是受时间的控制,这意味着系统处于暂停状态,

电容不进行放电,电机也失去了动力。当通过单步调试执行指令,这些指令对系统产生作用以后,系统将再次 停止。调试时,可以通过状态栏看到时间前进的信息。


还有一些其它非常有用的调试窗口,但在本教程没有进行介绍。这些调试窗口可以从 VSM Studio 的“调试” 菜单中启动,并放到 IDE 的底部。在仿真暂停后,数据会显示在相应的窗口中。但是本教程将会在下一节单独 介绍监视窗口的功能和使用方法,因为它比较特殊。



监视窗口


监视窗口是一个调试窗口,能够在运行仿真时提供实时数据,同时也给了我们另外一个设置断点的方法。现在,
我们使用监视窗口监控电位器的 ADC 转换为例子来说明监视窗口的使用方法。

先点击 Proteus 软件底部的“运行”按钮开始仿真,然后从 VSM Studio 的“调试”菜单中启动监视窗口,监 视窗口将出现在 IDE 的底部。



接下来,右键单击监视窗口从弹出的菜单中选择“使用名字添加监视项”。这里我们想添加 ADC 寄存器 ADRESH 和 ADRESL,可以通过双击寄存器进行添加,完成以后退出对话框,在监视窗口中应该有两个我们刚刚添加的 监视项。









我们现在点击电路中的按钮来切换到电压采集模式,可以使用调试弹出窗口(或切换到原理图页面)。点击控
制按钮三次进行模式切换,然后使用电位器左边的调节按钮改变电位器的阻值。



如果你觉得以二进制的形式显示结果会更容易理解,可以更改项目的显示格式。在监视窗口中右键点击每一项, 将显示格式改变成二进制。




由于这是一个 10 位的 ADC,因此读取的最大值是 1023 或 0x03FF,当电位器调节到最顶端时,我们可以在 LCD
中看到这个值。




现在我们假设在电位器向下调节过程中,当电位器到达中间位置时仿真暂停下来。我们知道中间位置的值在

0x1FF 左右,所以我们可以在监视项上设置触发断点的条件。通过右键点击监视项目,并从弹出菜单中选择监 视点的条件。在我们的例子中,即要在 ADRESH 等于0x01、ADRESL 小于或等于 0xFF 时暂停仿真。当我们 从最大值开始向下调节电位器,调节到中间位置时将会第一次触发断点。






注意,你需要单独配置 ADRESH 和 ADRESL,完成以后,监视窗口的显示应该像下图一样。


设置好监视条件以后,我们现在需要向下调节电位器,直到满足条件时触发断点。同之前一样,既可以在 VSM Studio 的调试弹出窗口中调节电位器,也可以切换到原理图页面进行调节。当断点被触发后,你应该能看到两 个监视项的值是 0x01 和 0xFF。如果有需要的话,你可以在条件触发的这点开始单步执行你的代码进行调试。


在调试定时器代码时,如果想要捕获溢出条件,使用监视窗口中的监视条件是非常有用的。

右键点击监视项,在弹出的菜单中选择“监视条件”,然后从弹出的对话框中选择‘关闭监视点’

选项就可以关闭监视点。 我们接下来讨论硬件断点,在此之前,要先禁止监视条件或删除监视项,然后在仿真控制面板中按下停止按钮

结束仿真。


硬件断点


到目前为止,我们已经学习了基于软件条件的仿真中断(观察点和断点)。另外也可以使用硬件断点,以便当

硬件条件发生时检查代码,例如想在 I2C 总线刚开始动作时进行捕获,我们可以像下面介绍的一样在 I2C 总线 上设置一个硬件断点。


先切换到原理图选项卡,然后从左边的模式选择器中选择电压探针图标。接下来在编辑窗口中单击,开始进行 探针的放置,移到鼠标到总线的 SDA 线上,再次点击左键放置探针。





现在右键点击探针,从弹出的菜单中选择编辑属性。


实时断点类型选择“数字的”,如果我们想在低电平进行触发,输入 0 作为触发值。


点击“确定”,按下运行按钮开始仿真,你应该会发现仿真几乎立刻停止,并且在 VSM Studio 的源窗口中显 示只执行了一个命令将 SDA 设置成低电平。



这个断点实际上是发生在初始化程序中,如果想要跳过这个断点,并且只在进入 I2C 模式后被激活,这样我们 就需要设置断点的装备时间,先要停止仿真,然后切换到原理图模块,像之前一样编辑电压探针 RC4 的属性, 装备时间设置成 1s。






这时候,当运行仿真时断点不会被触发,直到我们按下模式切换按键进入温度模式(温度值在 I2C 总线上进行
传输)。


你应该会发现停在了源代码的 I2C 子程序中,接下来可以像之前描述的从这里开始进行单步调试。


交互式测量


在设计和仿真电路的时候,经常会检测电路的信号和波形。在 Proteus 中主要有两个方法来实现这一点。例如,

假设我们想要检查温度传感器 MCP9800 进行 I2C 传输的过程,无论是通过交互方式还是更传统的图表方式都 可以实现。


我们要做的第一件事就是整理原理图,删除我们先前使用过的各种断点。你可以在原理图中的探针上右键双击, 或点击右键,从弹出的菜单中选择“删除”来删除电压探针,同样,我们可以右键双击调试弹出窗口对象的边 界删除调试弹出窗口对象。


当原理图中定义了调试弹出窗口对象,在仿真开始以后 Proteus 就会自动切换到 VSM Studio。因为

它会假定你主要的任务是进行源代码调试。由于我们现在需要分析信号,所以我们移除调试弹出窗 口对象,以便仿真开始后打开的是原理图页面。


现在要做的第二件事就是放置和连接 I2C 调试器,选择虚拟仪器模式,在对象选择器列出了一系列交互式测量 工具,在我们的案例中,选择 I2C 协议分析仪。



在对象选择器中点击 I2C 分析仪选中,然后以放置普通元器件对象的方式将它放置到原理图中。为了容易连线,
你可以将它放在温度传感器的正下方。



接下来,我们需要连接引脚,注意,在连线的起点和终点光标会变成绿色。因此放置连线的过程就是将鼠标放

在起始点(I2C 调试器的引脚)直到光标变成绿色,然后点击左键开始放置,移动鼠标到目标点(光标变成绿 色),最后点击左键终止导线的放置,通过使用这种技术连接 SCL 和 SDA 到 I2C 总线,如下图所示:


连上 I2C 协议分析仪以后,开始仿真。应该可以看到有一个 I2C 的调试器窗口悬浮在原理图上,并且有一些初 始化/识别的数据传输。如果想要查看温度传感器在 I2C总线上传输的数据,我们需要按下原理图中的按键切换 到温度模式。



由于程序代码会不断查询当前的温度值,因此 I2C 总线上会不断有数据在传输。如果我们要分析数据,应该先 暂停仿真,然后才可以花一些时间来分析 I2C 数据传输的详细过程。





如果 Proteus 工作在单一框架下,即 ISIS 与 VSM Studio 都以选项页的方式存在于 Proteus 软件框 架下,当仿真暂停后,将自动切换到 VSM Studio 选项页,因为 Proteus 会假定你对执行的源代码 感兴趣。但不管怎样,分析仪始终在最顶层。如果你想在同一时间查看原理图和源代码,你可以使 用调试弹出窗口,也可以将 VSM Studio 拖到 Proteus 外面,把原理图和 VSM Studio 分开。


I2C 协议分析仪中使用的语法是标准的 I2C 协议描述,你可以通过左边的‘+’号展开传输的序列进行查看。外 设元件(MCP9800)有一个标准的地址 0x90,因此我们以读请求为例进行说明:序列以开始位(S)开发,跟 着是一个读请求 0x91(位 0 设置为 1 表示读请求),后面跟着的是 0x1B(数据)等等。接收到的数据(0x1B) 以十进制显示是 27,对应外设元件(MCP9800)中当前显示的温度值。



再次运行仿真,你可以改变原理图中 MCP9800 的温度值,然后再次停止,并检查 I2C 调试器中的输出来进一 步理解 I2C 和 I2C 协议分析仪。



注意,像这样不断进行轮询的固件程序在性能方面有相当大的开销,因为 I2C 协议分析仪需要不断的刷新显示 数据。然而在大多数情况下,只是使用虚拟仪器进行测试或调试,在测试或调试的过程中,仿真速度是次要的。 所有的调试窗口在不使用时都可以关闭,然后可以从 VSM Studio 或 ISIS 的“调试”菜单中重新打开。


深度阅读:

关于 I2C 协议分析仪和其它虚拟仪器的更多帮助信息放在 Proteus VSM 的参考手册中。需要特别注意的是你既
可以使用这个分析仪作为 I2C 总线上的一个主(或从)设备,也可以只作为一个监视器来使用。


基于图表的测量


我们也可以使用基于图表的仿真,以另一种方式来观察 I2C 总线上数据的传输。但基于图表的仿真与交互式仿
真有很大的不同,主要有以下几点:
    在基于图表的仿真中,不能和电路进行交互式操作。
    基于图表的仿真运行在一个指定的时间段。

               在这个时间段结束、仿真停止之前,仿真结果是看不见的。 鉴于上述情况,让我们看看如何使用数字图表来分析 I2C 总线上的数据传输。首先,右键双击 I2C调试器把 I2C

调试器从原理图中删除。

然后选择图表模式,并从对象选择器中选中“数字图表”,然后在你想放置图表的位置左上角点击左键,移动 鼠标到右下角,再次点击左键完成图表的放置。


注意,原理图中的图表不需要特别大,因为当我们要分析仿真结果时,可以把图表放大。 添加完图表以后,我们现在就需要告诉它我们想要查看哪些导线上的信号。为此我们需要给导线附上探针,然

后在图表中指定这个探针。选择电压探针图标,然后在 I2C 总线的每一根线上都放置一个探针。


如果需要靠的更近,可以围绕鼠标位置使用鼠标中间的滚筒或 F6/F7 快捷键进行放大和缩小,F8

快捷键将返回原理图的默认视图。 默认情况下,电压探针会自动提取终端的名字为自己命名。但在我们的仿真中,对其重新命名让它更有意义。

可以通过右键点击探针,从弹出的菜单中选择“编辑属性”,然后将名字分别改成 SCL 或 SDA。



现在,导线上放置好了探针,而原理图中也已经放置好了的图表。我们需要添加探针到图表中让图表去测量探 针上的信号,有几种方法可以做到。最简单的方法就是将探针拖到图表中,可以右键点击探针,从弹出的菜单 中选择移动对象,然后移动鼠标到图表之上,再次点击左键完成添加;也可以左键点击一次探针先选中,然后按下左键不放,移动鼠标到图表之上,释放左键即可完成添加操作。现在把这两个探针添加到图表中。




默认情况下,基于图表的仿真运行时间是 0 到 1s。在我们的例子中,我们更关心 1s 到 2s 之间的数据,跳过了
初始化阶段的数据传输。可以通过编辑图表(点击右键并编辑属性)改变开始和停止的时间。


在原理图的空白区域点击左键将会取消选中任何当前被选中的对象。通常在退出编辑属性对话框以 后需要进行这个操作,因为退出编辑属性对话框以后对象仍然处于选中状态。


我们准备进行仿真,但有一个严重的问题。正如前面提到的,在基于图表的仿真中,你不能和电路进行交互式 操作,但是为了进入温度模式,触发 I2C 传输,我们需要点击按键切换模式。由于我们不能按下按键,所以我 们需要给 PIC 加入一个等效的信号,以便程序能切换到温度模式。我们一般是这样做的,选择激励源图标,从 对象选择器中选中脉冲激励源,将这个激励源放在按键右边 RD2 终端的旁边。放置之前你可能要先移动这个终 端给这个激励源腾出一些连线的空间。




现在以最常用的方法编辑激励源(点击右键,选择“编辑属性”菜单),在数字激励源类型中选择单脉冲,改变脉 冲极性为负,使用脉冲信号代替按键脉冲。由于我们图表仿真的时间是从 1s 到 2s,因此设置开始时间 1.25s, 脉冲宽度 50ms。




我们现在可以运行仿真了,但使用的不是仿真控制面板中的交互式仿真按钮,使用的是“图表”菜单中的“仿
真图表”命令,之后你看到的结果看起来应该像下图一样。

在 1.25s 之前没有任何的数据传输,这时因为我们的模拟按键的脉冲是在 1.25s 时产生的。另外,现在在图表 里面我们看不到其它的信息。右键点击图表,从弹出的菜单中选择“最大化窗口”,这将在一个新的选项页中 放大图表。




当图表选项页出现在最前面时,菜单和工具栏会改变,通过这些菜单和工具可以对图表进行一些操作。请特别 注意应用程序顶部出现的图表工具栏。


在这里可以找到一些缩放工具,最有用的是“查看区域”工具。点击这个工具的图标,然后围绕一个小的区域
拖动一个方框,可以进行选定区域的放大显示。如果重复这个操作,你将很快就可以放大看到单个的 I2C 序列。



你也可以按住 SHIFT 键,然后使用鼠标拖一个选择框进行区域放大。

熟悉 I2C 协议的人可以将图表显示的原始数据与之前在协议分析仪中看到的序列进行对比验证。 最后,你可以按下面介绍的方法进行图表测量:

               在图表窗口点击鼠标左键,将在图表中放置一个(绿色)光标;
               按住鼠标左键并进行移动可以进行移动光标;
               按住 CTRL 键,点击左键将放置一个(红色)光标;
               按住 CTRL 键,并按住鼠标左键移动可以移动(红色)光标;
               每个光标的数据和它们之间的增量显示在图表窗口的底部。

一般的放置和编辑技巧在这个教程里面都只是作简单的介绍,而在 ISIS 教程文档中有更多细节。 关于图表的更多信息提供在本文档的后面,而关于激励源、探针以及基于图表仿真的详细说明只能在 Proteus

VSM 的参考手册中找到。


诊断信息


在 Proteus 中另一个非常有用但经常被忽视的工具是仿真诊断信息。它提供了一个窗口,允许用户查看指定外
设上仿真活动的文字性报告。

我们以 LCD 显示屏为例来说明怎样使用诊断信息。 切换到原理图页面,从“调试”菜单下打开“配置诊断信息”子菜单。




展开对话框中 LCD 显示屏(VIM-332-DP)的条目,点击“诊断信息”这个子条目,然后将诊断信息输出等级
设置为“所有信息”。


现在展开 PIC16LF1937(U1)条目,向下滚动到“LCD 模块”这个子条目,再次将诊断信息输出等级设置为“所 有信息”。




首先从“仿真控制面板”中启动交互式仿真,然后点击“仿真日志”观察诊断信息,Proteus 将会自动切换到
VSM Studio 页面,仿真日志将会出现在 VSM Studio 页面的底部。


如果你暂停仿真,我们可以看到[PIC16 LCD]的调试信息里包含了 PC 值,你可以点击这个值来定位到源代码中 的某一行,这一行就是引起 PIC16 输出这个调试信息的指令。





只有当仿真被暂停以后,才能定位到源代码中。 最后,停止仿真并将诊断信息输出等级设置为“仅警告”。

在你的固件程序出现 bug 时,使用诊断信息来帮助你调试特别有用。但它会影响仿真的性能和速度(可以试试 对 PIC MSSP 外设和温度传感器 MCP9800 输出诊断信息),因此只在需要时启用它。如果你知道事件出现的 大概时间段,你也可以选择在一个限制的时间段内输出诊断信息。




本系列完整的pdf版本教程下载:
http://www.51hei.com/bbs/dpj-111690-1.html


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表