久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 11082|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

Proteus教程第三部分:VSM虛擬系統(tǒng)模型

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:290266 發(fā)表于 2018-4-5 02:58 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本系列完整的pdf版本教程下載(共150頁(yè)pdf)
http://www.zg4o1577.cn/bbs/dpj-111690-1.html

VSM 虛擬系統(tǒng)模型

介紹

本部分教程的目的是向您介紹如何使用 Proteus VSM 和 VSM Studio IDE 對(duì)帶有微控制器的系統(tǒng)進(jìn)行交互式仿

真。本部分教程的重點(diǎn)將放在仿真器和 IDE 的實(shí)際使用上,針對(duì)每一個(gè)主題的詳細(xì)說(shuō)明請(qǐng)參考幫助文檔中的內(nèi) 容。本部分教程不包含原理圖的繪制,如果你對(duì) ISIS中的原理圖繪制不熟悉,你應(yīng)該先花時(shí)間學(xué)習(xí)第一部分教 程中的內(nèi)容。


我們將使用預(yù)先畫(huà)好的微芯(Microchip)公司的 F1 評(píng)估板原理圖來(lái)學(xué)習(xí)本教程的內(nèi)容,如下所示。


通過(guò)本教程,我們不僅可以掌握 VSM Studio IDE 的基本仿真功能,還可以了解 Proteus VSM 中的各種調(diào)試和 測(cè)試工具。要學(xué)習(xí)本教程你將需要:

          必須安裝 Proteus 8.0 版本或更高版本的軟件。如果沒(méi)有購(gòu)買(mǎi)專(zhuān)業(yè)版的軟件,可以從 Labcenter 的網(wǎng)站 上免費(fèi)下載這個(gè)軟件的試用版本,或者聯(lián)系 Proteus 軟件的大中華區(qū)總代理-廣州市風(fēng)標(biāo)電子技術(shù)有限公司

-獲取支持。
          必須安裝 9.8 版本或以上的 Hi-Tech PIC16 編譯器軟件。在 Proteus 軟件(VSM Studio IDE)中就可以進(jìn) 行這個(gè)編譯器的下載和安裝,下載和安裝的過(guò)程將在本教程后面的工程設(shè)置部分進(jìn)行介紹。


即使你沒(méi)有安裝符這些符合要求的軟件,我們?nèi)匀唤ㄗh你讀完本教程。因?yàn)樗嘘P(guān)于調(diào)試技術(shù)的知識(shí)都是通用
的,你如果使用舊版本的軟件來(lái)進(jìn)行設(shè)計(jì)開(kāi)發(fā),這些知識(shí)可能也會(huì)有幫助。


建立工程


我們需要做的第一件事是建立 Proteus 8 的工程,由于我們使用預(yù)先繪制好的原理圖,即一塊虛擬開(kāi)發(fā)板,因
此建立工程的過(guò)程就變得非常簡(jiǎn)單:

從 Proteus 的主頁(yè)啟動(dòng)新建工程向?qū)Вx擇“從開(kāi)發(fā)板”選項(xiàng),在“微控制器系列”列表框中選擇 PIC16,然 后從“開(kāi)發(fā)板”列表框選擇 F1 評(píng)估板(F1 Releas),點(diǎn)擊完成導(dǎo)入工程。




導(dǎo)入項(xiàng)目之后,在 Proteus 中可以看到兩個(gè)選項(xiàng)卡:F1 評(píng)估電路板的原理圖模塊和包含 Microchip 標(biāo)準(zhǔn)硬件驅(qū) 動(dòng)源代碼的 VSM Studio IDE,如下圖所示:



我們先來(lái)編譯源代碼,將生成的固件(firmware)進(jìn)行仿真調(diào)試。


編譯器配置


Microchip 提供的源代碼是使用 Hi-Tech PIC16 編譯器編寫(xiě)的,因此為了能夠成功編譯并生成固件,我們需要安
裝這個(gè)工具。切換到 VSM Studio 選項(xiàng)卡,從“系統(tǒng)”菜單啟動(dòng)“編譯器配置”對(duì)話(huà)框。





這個(gè)對(duì)話(huà)框列出了所有支持的編譯器,并指示是否被安裝和配置。按下對(duì)話(huà)框底部的“檢查全部”按鈕,Proteus
將掃描你的計(jì)算機(jī),查找安裝好的編譯器。如果找到 Proteus 支持的編譯器,Proteus 將自動(dòng)進(jìn)行配置并在
Proteus 中調(diào)用這些編譯器編譯源代碼。

開(kāi)源的編譯器能夠直接從 Labcenter 的服務(wù)器上下載和安裝。需要收費(fèi)的編譯器,Proteus 將提供鏈接到相應(yīng)供 應(yīng)商網(wǎng)站的下載頁(yè)面。在這個(gè)例子里,使用的是 Hi-Tech 編譯器,如果還沒(méi)有安裝,則需要從微芯的網(wǎng)站下載:


1.              點(diǎn)擊編譯器旁邊的“打開(kāi)網(wǎng)站”按鈕;

2.              下載并安裝編譯器,如果沒(méi)有購(gòu)買(mǎi),可以使用 Lite mode,或者選擇使用 45 天的評(píng)估版,如下圖所示:


3.              安裝完成后點(diǎn)擊對(duì)話(huà)框底部的“檢查全部”按鈕,Proteus 將自動(dòng)重新檢查所有的編譯器并進(jìn)行配置, 使得它能夠在 Proteus 中編譯源代碼。




運(yùn)行這個(gè)命令以后,你應(yīng)該注意到對(duì)話(huà)框中的 Hi-Tech 編譯器被標(biāo)記成已安裝。在 IDE 底部的輸出窗口也會(huì)報(bào)
告編譯器檢查的結(jié)果。





到了這里,編譯器、源代碼和原理圖已全部準(zhǔn)備好了,使用 VSM Studio“構(gòu)建”菜單下的“構(gòu)建工程”命令(或 構(gòu)建圖標(biāo))編譯固件。


編譯器的輸出將顯示在 IDE 的底部面板中,編譯完成以后,你能得到一個(gè)編譯成功的信息。



接下來(lái)運(yùn)行仿真,在虛擬硬件上測(cè)試編譯后的代碼。

VSM Studio 會(huì)自動(dòng)配置常見(jiàn)的編譯器選項(xiàng)用于正確編譯你的工程。如果你需要調(diào)整這些編譯器設(shè)置
(例如鏈接到外部庫(kù)),你可以通過(guò)“構(gòu)建”菜單下的“工程設(shè)置”對(duì)話(huà)框進(jìn)行調(diào)整。


運(yùn)行仿真


只需要簡(jiǎn)單的按下 Proteus 左下角“仿真控制面板”中的運(yùn)行按鈕就可以運(yùn)行仿真。



現(xiàn)在,軟件將自動(dòng)切換到原理圖頁(yè)碼進(jìn)行仿真,原理圖中的 LCD 面板將顯示默認(rèn)的時(shí)間。


F1 評(píng)估板的示例程序可以顯示三種模式,時(shí)間,一溫度,和電位器的 ADC 采樣值。可以通過(guò)按下原理圖中的 控制按鈕來(lái)循環(huán)切換顯示模式,進(jìn)行交互式仿真。



當(dāng)處于溫度顯示模式時(shí),你可以在 MCP9800 傳感器上通過(guò)點(diǎn)擊遞增或遞減按鈕來(lái)調(diào)整溫度值。當(dāng)前的溫度值 是通過(guò) I2C 總線傳輸?shù)?PIC 處理器中,經(jīng)過(guò)處理以后顯示在 LCD 上的。




當(dāng)處于電壓顯示模式時(shí),可以調(diào)節(jié)電位器,處理器將轉(zhuǎn)換后的電壓值顯示在 LCD 上。




這個(gè) PIC16 微控制器有一個(gè) 10 位的 ADC,所以采樣得到的數(shù)據(jù)的顯示范圍是 0 到 1023,對(duì)應(yīng)的電壓范圍是
0-3.3V。最后,按下動(dòng)畫(huà)控制面板的停止按鈕可以停止仿真。




注意事項(xiàng)


當(dāng)我們?cè)?Proteus 中運(yùn)行仿真時(shí),仿真結(jié)果可能不會(huì)立刻顯現(xiàn),但在你能看到的仿真結(jié)果背后,Proteus 軟件進(jìn)
行了大量的處理和計(jì)算工作:

首先,Proteus 原理圖中的微控制器執(zhí)行編譯后的固件文件與真實(shí)世界中的 PIC 執(zhí)行編程的固件完全一樣。使 用 VSM Studio IDE 只是把燒寫(xiě) PIC 芯片的過(guò)程,變成把編譯成功后得到的文件發(fā)送給原理圖。


其次,你可能會(huì)注意到,原理圖中幾乎所有導(dǎo)線都使用了終端來(lái)結(jié)尾,并且終端都有一個(gè)名字。在原理圖中, 相同名字的兩個(gè)終端被認(rèn)為是相連的(像有一根虛擬的導(dǎo)線)。例如,溫度傳感器旁邊的 RC3 和 RC4 終端連 接到了 PIC 處理器中的 I2C 接口的兩個(gè)引腳上。我們喜歡使用這種方式進(jìn)行原理圖連線,因?yàn)榭梢员苊鈱?dǎo)線的交叉,并且可以將原理圖分割成容易識(shí)別的邏輯塊。如果你要了解更多關(guān)于這種連接方式的信息,可以閱讀 ISIS 的參考手冊(cè)。


最后,在 Proteus 軟件底部的狀態(tài)欄顯示了仿真運(yùn)行的時(shí)間。仿真很可能不是實(shí)時(shí)的,這取決于你的計(jì)算機(jī)的
性能、處理器的速度和原理圖的復(fù)雜程度。狀態(tài)欄顯示的執(zhí)行時(shí)間就是虛擬仿真世界的時(shí)間。


例如,對(duì)于一個(gè)特別慢的計(jì)算機(jī),在這個(gè)仿真中調(diào)節(jié)到時(shí)鐘模式時(shí),仿真中 LCD 屏上顯示的時(shí)鐘與現(xiàn)實(shí)世界墻 上的掛鐘不是同時(shí)前進(jìn)的,但它卻總是會(huì)和狀態(tài)欄的仿真時(shí)間同步前進(jìn)。



寫(xiě)固件程序


我們已經(jīng)了解了仿真的整個(gè)工作流程,現(xiàn)在就讓我們給這個(gè)程序添加一些功能。我們知道通過(guò)按下原理圖中的

按鍵可以在時(shí)間、溫度和電壓模式之間進(jìn)行切換,這樣我們就能很容易的在這里添加其它操作模式。首先,切 換到 VSM Studio IDE 選項(xiàng)卡,打開(kāi)文件 main.c(在項(xiàng)目中雙擊 main.c)。





你會(huì)在這個(gè)文件的頂部看到有一些函數(shù)原型以及操作模式的枚舉類(lèi)型定義。我們需要為我們的“測(cè)試模式”添
加一個(gè)新的函數(shù)原型,還要在這個(gè)枚舉類(lèi)型中添加一個(gè)相對(duì)應(yīng)的值,可以像下圖一樣進(jìn)行添加:


接下來(lái),我們需要找到按鈕切換的程序塊來(lái)添加新的操作模式。最簡(jiǎn)單的方法就是搜索已有模式中的一個(gè),我 們可以在 VSM Studio 右鍵點(diǎn)擊編輯窗口,從彈出的菜單中選擇“查找”,在查找內(nèi)容下輸入“MODE_POT”。



查找到的第一個(gè)結(jié)果就是我們正要尋找的,也就是關(guān)于按鍵釋放后用于設(shè)置顯示模式的 switch 語(yǔ)句。在這里我 們只需要添加新的操作模式:


注意,MODE_TEST 前面的 case 語(yǔ)句也一樣需要修改顯示模式。

在這段代碼的下面還有另一個(gè) switch 語(yǔ)句,用于執(zhí)行當(dāng)前的顯示模式。同樣,我們需要加入我們的 case 語(yǔ)句 來(lái)調(diào)用我們的函數(shù)。




最后一步是添加 display_test()函數(shù),可以在這里添加進(jìn)入我們的操作模式后要做的事情。我們?cè)?main.c 文件的
底部加入這個(gè)函數(shù)的定義。


在這里你可以嘗試添加任何你想添加的動(dòng)作,但我們只做一些簡(jiǎn)單的動(dòng)作,比如在顯示器上顯示一個(gè)固定值, 并在 LED 上顯示二進(jìn)制的計(jì)數(shù)器。



由于我們是使用 PORTE 來(lái)控制 LED,所以我們需要配置端口的引腳,在 main()函數(shù)頂部的外設(shè)配置部分設(shè)置
ANSELE。

最后一步是構(gòu)建工程。如果你的程序有錯(cuò)誤,在輸出窗口會(huì)得到編譯錯(cuò)誤,單擊這個(gè)錯(cuò)誤,會(huì)指示出問(wèn)題所在 的位置。


但有些錯(cuò)誤,像鏈接錯(cuò)誤,是不能指出具體出錯(cuò)位置的。這種情況下,你可能需要修改工程設(shè)置選

項(xiàng)才能修正鏈接錯(cuò)誤,例如需要在工程設(shè)置中加入“函數(shù)庫(kù)”的文件夾。 當(dāng)我們這次運(yùn)行仿真時(shí),我們使用按鍵來(lái)切換操作模式,直到進(jìn)入我們自己的模式(時(shí)間->溫度->電位器->測(cè)試),

我們應(yīng)該能看到顯示器上顯示的數(shù)“1111”以及 LED 上的計(jì)數(shù)器。


這個(gè)例子實(shí)現(xiàn)的功能非常簡(jiǎn)單,只是用于說(shuō)明編寫(xiě)代碼、編譯和仿真的整個(gè)流程。


調(diào)試彈出窗口


到目前為止,我們?cè)?VSM Studio 頁(yè)面中完成了代碼的編寫(xiě),并在原理圖頁(yè)面進(jìn)行了仿真。如果我們有兩個(gè)顯

示器,可以把其中一個(gè)頁(yè)面拖到另一個(gè)顯示器中,在兩個(gè)顯示器中同時(shí)觀察這兩個(gè)頁(yè)面。 但我們?cè)谡{(diào)試時(shí),通常更感興趣的是觀察代碼的單步運(yùn)行,同時(shí)觀察原理圖的某一小部分進(jìn)行驗(yàn)證。Proteus

提供了一個(gè)調(diào)試彈出窗口控件,在仿真調(diào)試的過(guò)程中,可以將原理圖中選定的一部分電路在 VSM Studio 頁(yè)面
中顯示出來(lái)。這對(duì)于我們只有一個(gè)顯示器的用戶(hù)來(lái)說(shuō)將變得非常方便,不需要經(jīng)常在原理圖頁(yè)面和 VSM Studio

頁(yè)面之間進(jìn)行切換,大大提高我們的調(diào)試效率。 在我們的教程的例子中,可以以溫度傳感器來(lái)說(shuō)明實(shí)時(shí)監(jiān)控窗口的使用,步驟如下:

1) 切換到 ISIS 選項(xiàng)卡,選擇“調(diào)試彈出模式”圖標(biāo)。

2) 圍繞溫度傳感器從左上角開(kāi)始拖出一個(gè)框。


3) 完成以后,你應(yīng)該會(huì)看到圍繞溫度傳感器有一個(gè)藍(lán)色的虛線框。


如果做的過(guò)程中出現(xiàn)問(wèn)題,可以右鍵雙擊虛線框進(jìn)行刪除。同樣,如果虛線框的位置有問(wèn)題,也可 以右鍵點(diǎn)擊虛線框然后選擇“移動(dòng)對(duì)象”菜單進(jìn)行移動(dòng)。


其它可能需要我們?cè)诜抡孢^(guò)程中進(jìn)行觀察和控制的對(duì)象有按鍵、電位器和顯示元件(LCD)。我們可以重復(fù)上 面的操作,圍繞這些器件各自拖出虛線框,完成以后,你的原理圖看起來(lái)應(yīng)和下圖一樣。




因?yàn)槲覀冎付擞行棾龃翱冢@將會(huì)工作在 VSM Studio。現(xiàn)在如果你按下“運(yùn)行”按鈕進(jìn)行仿真,并切換到
VSM Studio 選項(xiàng)卡,在 IDE 的右邊將顯示我們剛才選擇的部分原理圖。





當(dāng)全速運(yùn)行代碼時(shí),VSM Studio 頁(yè)面中的源代碼和變量的區(qū)域?qū)@示“仿真正在運(yùn)行”的消息。我 們將在下一節(jié)介紹調(diào)試工具的使用。


調(diào)試彈出窗口非常有用,它不僅將原理圖中標(biāo)記的區(qū)域顯示到調(diào)試環(huán)境中,而且還可以進(jìn)行交互仿真。例如, 如果點(diǎn)擊按鍵 S1,切換程序模式,你應(yīng)該會(huì)看到 LCD顯示 I2C 溫度傳感器的溫度值。如果你再調(diào)節(jié)溫度傳感 器的溫度,LCD 會(huì)反映出溫度的變化。



切換回到原理圖頁(yè)面,你會(huì)看到原理圖中的狀態(tài)和調(diào)試彈出窗口中的一樣。當(dāng)停止仿真(從仿真控制面板), 調(diào)試彈出窗口會(huì)消失,VSM Studio 將從調(diào)試狀態(tài)切換回設(shè)計(jì)編輯狀態(tài),你可以再次編輯和編譯你的源代碼。


只有當(dāng)仿真停止以后,你才能在原理圖中創(chuàng)建或調(diào)整調(diào)試彈出窗。仿真還在運(yùn)行時(shí),你也可以在 VSM

Studio 頁(yè)面通過(guò)拖動(dòng)來(lái)調(diào)整調(diào)試彈出窗口的大小。 現(xiàn)在我們已經(jīng)配置完調(diào)試彈出窗口,來(lái)看看如何進(jìn)行使用調(diào)試工具進(jìn)行代碼的調(diào)試。


基本調(diào)試


Proteus VSM 的最強(qiáng)大的功能就是代碼和電路的聯(lián)合調(diào)試。我們已經(jīng)知道如何在 VSM Studio 中編寫(xiě)代碼,也
知道怎樣在運(yùn)行仿真時(shí)進(jìn)行觀察。現(xiàn)在我們來(lái)看看怎樣進(jìn)行代碼的單步運(yùn)行。

首先確保 Proteus 沒(méi)有運(yùn)行仿真,處于停止?fàn)顟B(tài)中。通過(guò)“仿真控制面板”暫停按鈕啟動(dòng)仿真并暫停。




如上圖所示,Proteus 將自動(dòng)切換到 VSM Studio 頁(yè)面,我們可以看到:調(diào)試彈出窗口顯示在右手邊;主面板報(bào) 告“沒(méi)有源代碼”的信息;程序變量的列表放在屏幕的底部。在這個(gè)階段,仿真處于“已經(jīng)啟動(dòng)”的狀態(tài),電 路處在一個(gè)穩(wěn)定的工作點(diǎn),代碼還沒(méi)有執(zhí)行,也沒(méi)有時(shí)間的消逝。


源代碼窗口沒(méi)有顯示任何的源代碼,這是因?yàn)樵诋?dāng)前的程序計(jì)數(shù)器(PC=0)中沒(méi)有源代碼可以顯示。 你可以從窗口頂部的下拉框中選擇這個(gè)工程的任何源文件進(jìn)行查看。但我們先從 main.c 文件開(kāi)始,因?yàn)檫@個(gè)文

件包含了最整個(gè)程序的基本流程控制。


先來(lái)看看怎么設(shè)置斷點(diǎn),舉一個(gè)簡(jiǎn)單的例子——要在主函數(shù)的按鍵釋放處設(shè)置一個(gè)斷點(diǎn)。放置斷點(diǎn)最容易的方 法就是在希望放置斷點(diǎn)的代碼行進(jìn)行雙擊。斷點(diǎn)指示器(一個(gè)小紅點(diǎn))將會(huì)出現(xiàn)在源代碼窗口的代碼行左邊。 如果你誤設(shè)了一個(gè)斷點(diǎn),可以在這行再次雙擊(或從代碼窗口中點(diǎn)擊右鍵,在彈出的菜單中)進(jìn)行刪除或關(guān)閉。




如果我們現(xiàn)在點(diǎn)擊運(yùn)行按鈕運(yùn)行仿真,在運(yùn)行模式下會(huì)全速執(zhí)行代碼。直到我們點(diǎn)擊并釋放模式切換按鍵(即
S1,可以在調(diào)試彈出窗口中點(diǎn)擊),按鍵釋放以后代碼的執(zhí)行會(huì)到達(dá)斷點(diǎn)處,仿真將暫停。


到達(dá)斷點(diǎn)以后,我們可以通過(guò)源代碼窗口右上角或 VSM Studio 調(diào)試菜單中的常用命令單步執(zhí)行代碼。另外可 以使用快捷鍵 F10 和 F11 分別進(jìn)行單步跳過(guò)調(diào)試和單步進(jìn)入函數(shù)內(nèi)部調(diào)試。



如果需要查看程序執(zhí)行的細(xì)節(jié),具體到每一條指令的執(zhí)行過(guò)程。你可以在反匯編代碼中進(jìn)行代碼的匯編級(jí)單步 調(diào)試。右鍵點(diǎn)擊源碼窗口,從彈出的菜單中選擇“反匯編”,然后同之前一樣使用單步調(diào)試命令。






再次點(diǎn)擊右鍵選擇“反匯編”子菜單將返回到高級(jí)語(yǔ)言的源代碼中進(jìn)行單步調(diào)試。

在單步調(diào)試的過(guò)程中,你可能會(huì)注意到調(diào)試彈出窗口中的 LCD 顯示的數(shù)字是不完整的。但這是正確

的,因?yàn)轱@示的結(jié)果就是由這些不完整的段組合起來(lái)的。 如果你想運(yùn)行到下一個(gè)按鍵釋放的狀態(tài),只需要按下仿真控制面板中的“運(yùn)行”按鈕,然后在調(diào)試彈出窗口中

點(diǎn)擊按鍵再次觸發(fā)斷點(diǎn)。

完成以后,點(diǎn)擊右鍵選擇清除所有的斷點(diǎn),然后按下仿真控制面板的“停止”按鈕結(jié)束仿真調(diào)試。

注意事項(xiàng)


在 Proteus 中,當(dāng)進(jìn)入斷點(diǎn)或單步調(diào)試后,要知道現(xiàn)在整個(gè)系統(tǒng)是受時(shí)間的控制,這意味著系統(tǒng)處于暫停狀態(tài),

電容不進(jìn)行放電,電機(jī)也失去了動(dòng)力。當(dāng)通過(guò)單步調(diào)試執(zhí)行指令,這些指令對(duì)系統(tǒng)產(chǎn)生作用以后,系統(tǒng)將再次 停止。調(diào)試時(shí),可以通過(guò)狀態(tài)欄看到時(shí)間前進(jìn)的信息。


還有一些其它非常有用的調(diào)試窗口,但在本教程沒(méi)有進(jìn)行介紹。這些調(diào)試窗口可以從 VSM Studio 的“調(diào)試” 菜單中啟動(dòng),并放到 IDE 的底部。在仿真暫停后,數(shù)據(jù)會(huì)顯示在相應(yīng)的窗口中。但是本教程將會(huì)在下一節(jié)單獨(dú) 介紹監(jiān)視窗口的功能和使用方法,因?yàn)樗容^特殊。



監(jiān)視窗口


監(jiān)視窗口是一個(gè)調(diào)試窗口,能夠在運(yùn)行仿真時(shí)提供實(shí)時(shí)數(shù)據(jù),同時(shí)也給了我們另外一個(gè)設(shè)置斷點(diǎn)的方法。現(xiàn)在,
我們使用監(jiān)視窗口監(jiān)控電位器的 ADC 轉(zhuǎn)換為例子來(lái)說(shuō)明監(jiān)視窗口的使用方法。

先點(diǎn)擊 Proteus 軟件底部的“運(yùn)行”按鈕開(kāi)始仿真,然后從 VSM Studio 的“調(diào)試”菜單中啟動(dòng)監(jiān)視窗口,監(jiān) 視窗口將出現(xiàn)在 IDE 的底部。



接下來(lái),右鍵單擊監(jiān)視窗口從彈出的菜單中選擇“使用名字添加監(jiān)視項(xiàng)”。這里我們想添加 ADC 寄存器 ADRESH 和 ADRESL,可以通過(guò)雙擊寄存器進(jìn)行添加,完成以后退出對(duì)話(huà)框,在監(jiān)視窗口中應(yīng)該有兩個(gè)我們剛剛添加的 監(jiān)視項(xiàng)。









我們現(xiàn)在點(diǎn)擊電路中的按鈕來(lái)切換到電壓采集模式,可以使用調(diào)試彈出窗口(或切換到原理圖頁(yè)面)。點(diǎn)擊控
制按鈕三次進(jìn)行模式切換,然后使用電位器左邊的調(diào)節(jié)按鈕改變電位器的阻值。



如果你覺(jué)得以二進(jìn)制的形式顯示結(jié)果會(huì)更容易理解,可以更改項(xiàng)目的顯示格式。在監(jiān)視窗口中右鍵點(diǎn)擊每一項(xiàng), 將顯示格式改變成二進(jìn)制。




由于這是一個(gè) 10 位的 ADC,因此讀取的最大值是 1023 或 0x03FF,當(dāng)電位器調(diào)節(jié)到最頂端時(shí),我們可以在 LCD
中看到這個(gè)值。




現(xiàn)在我們假設(shè)在電位器向下調(diào)節(jié)過(guò)程中,當(dāng)電位器到達(dá)中間位置時(shí)仿真暫停下來(lái)。我們知道中間位置的值在

0x1FF 左右,所以我們可以在監(jiān)視項(xiàng)上設(shè)置觸發(fā)斷點(diǎn)的條件。通過(guò)右鍵點(diǎn)擊監(jiān)視項(xiàng)目,并從彈出菜單中選擇監(jiān) 視點(diǎn)的條件。在我們的例子中,即要在 ADRESH 等于0x01、ADRESL 小于或等于 0xFF 時(shí)暫停仿真。當(dāng)我們 從最大值開(kāi)始向下調(diào)節(jié)電位器,調(diào)節(jié)到中間位置時(shí)將會(huì)第一次觸發(fā)斷點(diǎn)。






注意,你需要單獨(dú)配置 ADRESH 和 ADRESL,完成以后,監(jiān)視窗口的顯示應(yīng)該像下圖一樣。


設(shè)置好監(jiān)視條件以后,我們現(xiàn)在需要向下調(diào)節(jié)電位器,直到滿(mǎn)足條件時(shí)觸發(fā)斷點(diǎn)。同之前一樣,既可以在 VSM Studio 的調(diào)試彈出窗口中調(diào)節(jié)電位器,也可以切換到原理圖頁(yè)面進(jìn)行調(diào)節(jié)。當(dāng)斷點(diǎn)被觸發(fā)后,你應(yīng)該能看到兩 個(gè)監(jiān)視項(xiàng)的值是 0x01 和 0xFF。如果有需要的話(huà),你可以在條件觸發(fā)的這點(diǎn)開(kāi)始單步執(zhí)行你的代碼進(jìn)行調(diào)試。


在調(diào)試定時(shí)器代碼時(shí),如果想要捕獲溢出條件,使用監(jiān)視窗口中的監(jiān)視條件是非常有用的。

右鍵點(diǎn)擊監(jiān)視項(xiàng),在彈出的菜單中選擇“監(jiān)視條件”,然后從彈出的對(duì)話(huà)框中選擇‘關(guān)閉監(jiān)視點(diǎn)’

選項(xiàng)就可以關(guān)閉監(jiān)視點(diǎn)。 我們接下來(lái)討論硬件斷點(diǎn),在此之前,要先禁止監(jiān)視條件或刪除監(jiān)視項(xiàng),然后在仿真控制面板中按下停止按鈕

結(jié)束仿真。


硬件斷點(diǎn)


到目前為止,我們已經(jīng)學(xué)習(xí)了基于軟件條件的仿真中斷(觀察點(diǎn)和斷點(diǎn))。另外也可以使用硬件斷點(diǎn),以便當(dāng)

硬件條件發(fā)生時(shí)檢查代碼,例如想在 I2C 總線剛開(kāi)始動(dòng)作時(shí)進(jìn)行捕獲,我們可以像下面介紹的一樣在 I2C 總線 上設(shè)置一個(gè)硬件斷點(diǎn)。


先切換到原理圖選項(xiàng)卡,然后從左邊的模式選擇器中選擇電壓探針圖標(biāo)。接下來(lái)在編輯窗口中單擊,開(kāi)始進(jìn)行 探針的放置,移到鼠標(biāo)到總線的 SDA 線上,再次點(diǎn)擊左鍵放置探針。





現(xiàn)在右鍵點(diǎn)擊探針,從彈出的菜單中選擇編輯屬性。


實(shí)時(shí)斷點(diǎn)類(lèi)型選擇“數(shù)字的”,如果我們想在低電平進(jìn)行觸發(fā),輸入 0 作為觸發(fā)值。


點(diǎn)擊“確定”,按下運(yùn)行按鈕開(kāi)始仿真,你應(yīng)該會(huì)發(fā)現(xiàn)仿真幾乎立刻停止,并且在 VSM Studio 的源窗口中顯 示只執(zhí)行了一個(gè)命令將 SDA 設(shè)置成低電平。



這個(gè)斷點(diǎn)實(shí)際上是發(fā)生在初始化程序中,如果想要跳過(guò)這個(gè)斷點(diǎn),并且只在進(jìn)入 I2C 模式后被激活,這樣我們 就需要設(shè)置斷點(diǎn)的裝備時(shí)間,先要停止仿真,然后切換到原理圖模塊,像之前一樣編輯電壓探針 RC4 的屬性, 裝備時(shí)間設(shè)置成 1s。






這時(shí)候,當(dāng)運(yùn)行仿真時(shí)斷點(diǎn)不會(huì)被觸發(fā),直到我們按下模式切換按鍵進(jìn)入溫度模式(溫度值在 I2C 總線上進(jìn)行
傳輸)。


你應(yīng)該會(huì)發(fā)現(xiàn)停在了源代碼的 I2C 子程序中,接下來(lái)可以像之前描述的從這里開(kāi)始進(jìn)行單步調(diào)試。


交互式測(cè)量


在設(shè)計(jì)和仿真電路的時(shí)候,經(jīng)常會(huì)檢測(cè)電路的信號(hào)和波形。在 Proteus 中主要有兩個(gè)方法來(lái)實(shí)現(xiàn)這一點(diǎn)。例如,

假設(shè)我們想要檢查溫度傳感器 MCP9800 進(jìn)行 I2C 傳輸?shù)倪^(guò)程,無(wú)論是通過(guò)交互方式還是更傳統(tǒng)的圖表方式都 可以實(shí)現(xiàn)。


我們要做的第一件事就是整理原理圖,刪除我們先前使用過(guò)的各種斷點(diǎn)。你可以在原理圖中的探針上右鍵雙擊, 或點(diǎn)擊右鍵,從彈出的菜單中選擇“刪除”來(lái)刪除電壓探針,同樣,我們可以右鍵雙擊調(diào)試彈出窗口對(duì)象的邊 界刪除調(diào)試彈出窗口對(duì)象。


當(dāng)原理圖中定義了調(diào)試彈出窗口對(duì)象,在仿真開(kāi)始以后 Proteus 就會(huì)自動(dòng)切換到 VSM Studio。因?yàn)?/div>

它會(huì)假定你主要的任務(wù)是進(jìn)行源代碼調(diào)試。由于我們現(xiàn)在需要分析信號(hào),所以我們移除調(diào)試彈出窗 口對(duì)象,以便仿真開(kāi)始后打開(kāi)的是原理圖頁(yè)面。


現(xiàn)在要做的第二件事就是放置和連接 I2C 調(diào)試器,選擇虛擬儀器模式,在對(duì)象選擇器列出了一系列交互式測(cè)量 工具,在我們的案例中,選擇 I2C 協(xié)議分析儀。



在對(duì)象選擇器中點(diǎn)擊 I2C 分析儀選中,然后以放置普通元器件對(duì)象的方式將它放置到原理圖中。為了容易連線,
你可以將它放在溫度傳感器的正下方。



接下來(lái),我們需要連接引腳,注意,在連線的起點(diǎn)和終點(diǎn)光標(biāo)會(huì)變成綠色。因此放置連線的過(guò)程就是將鼠標(biāo)放

在起始點(diǎn)(I2C 調(diào)試器的引腳)直到光標(biāo)變成綠色,然后點(diǎn)擊左鍵開(kāi)始放置,移動(dòng)鼠標(biāo)到目標(biāo)點(diǎn)(光標(biāo)變成綠 色),最后點(diǎn)擊左鍵終止導(dǎo)線的放置,通過(guò)使用這種技術(shù)連接 SCL 和 SDA 到 I2C 總線,如下圖所示:


連上 I2C 協(xié)議分析儀以后,開(kāi)始仿真。應(yīng)該可以看到有一個(gè) I2C 的調(diào)試器窗口懸浮在原理圖上,并且有一些初 始化/識(shí)別的數(shù)據(jù)傳輸。如果想要查看溫度傳感器在 I2C總線上傳輸?shù)臄?shù)據(jù),我們需要按下原理圖中的按鍵切換 到溫度模式。



由于程序代碼會(huì)不斷查詢(xún)當(dāng)前的溫度值,因此 I2C 總線上會(huì)不斷有數(shù)據(jù)在傳輸。如果我們要分析數(shù)據(jù),應(yīng)該先 暫停仿真,然后才可以花一些時(shí)間來(lái)分析 I2C 數(shù)據(jù)傳輸?shù)脑敿?xì)過(guò)程。





如果 Proteus 工作在單一框架下,即 ISIS 與 VSM Studio 都以選項(xiàng)頁(yè)的方式存在于 Proteus 軟件框 架下,當(dāng)仿真暫停后,將自動(dòng)切換到 VSM Studio 選項(xiàng)頁(yè),因?yàn)?Proteus 會(huì)假定你對(duì)執(zhí)行的源代碼 感興趣。但不管怎樣,分析儀始終在最頂層。如果你想在同一時(shí)間查看原理圖和源代碼,你可以使 用調(diào)試彈出窗口,也可以將 VSM Studio 拖到 Proteus 外面,把原理圖和 VSM Studio 分開(kāi)。


I2C 協(xié)議分析儀中使用的語(yǔ)法是標(biāo)準(zhǔn)的 I2C 協(xié)議描述,你可以通過(guò)左邊的‘+’號(hào)展開(kāi)傳輸?shù)男蛄羞M(jìn)行查看。外 設(shè)元件(MCP9800)有一個(gè)標(biāo)準(zhǔn)的地址 0x90,因此我們以讀請(qǐng)求為例進(jìn)行說(shuō)明:序列以開(kāi)始位(S)開(kāi)發(fā),跟 著是一個(gè)讀請(qǐng)求 0x91(位 0 設(shè)置為 1 表示讀請(qǐng)求),后面跟著的是 0x1B(數(shù)據(jù))等等。接收到的數(shù)據(jù)(0x1B) 以十進(jìn)制顯示是 27,對(duì)應(yīng)外設(shè)元件(MCP9800)中當(dāng)前顯示的溫度值。



再次運(yùn)行仿真,你可以改變?cè)韴D中 MCP9800 的溫度值,然后再次停止,并檢查 I2C 調(diào)試器中的輸出來(lái)進(jìn)一 步理解 I2C 和 I2C 協(xié)議分析儀。



注意,像這樣不斷進(jìn)行輪詢(xún)的固件程序在性能方面有相當(dāng)大的開(kāi)銷(xiāo),因?yàn)?I2C 協(xié)議分析儀需要不斷的刷新顯示 數(shù)據(jù)。然而在大多數(shù)情況下,只是使用虛擬儀器進(jìn)行測(cè)試或調(diào)試,在測(cè)試或調(diào)試的過(guò)程中,仿真速度是次要的。 所有的調(diào)試窗口在不使用時(shí)都可以關(guān)閉,然后可以從 VSM Studio 或 ISIS 的“調(diào)試”菜單中重新打開(kāi)。


深度閱讀:

關(guān)于 I2C 協(xié)議分析儀和其它虛擬儀器的更多幫助信息放在 Proteus VSM 的參考手冊(cè)中。需要特別注意的是你既
可以使用這個(gè)分析儀作為 I2C 總線上的一個(gè)主(或從)設(shè)備,也可以只作為一個(gè)監(jiān)視器來(lái)使用。


基于圖表的測(cè)量


我們也可以使用基于圖表的仿真,以另一種方式來(lái)觀察 I2C 總線上數(shù)據(jù)的傳輸。但基于圖表的仿真與交互式仿
真有很大的不同,主要有以下幾點(diǎn):
    在基于圖表的仿真中,不能和電路進(jìn)行交互式操作。
    基于圖表的仿真運(yùn)行在一個(gè)指定的時(shí)間段。

               在這個(gè)時(shí)間段結(jié)束、仿真停止之前,仿真結(jié)果是看不見(jiàn)的。 鑒于上述情況,讓我們看看如何使用數(shù)字圖表來(lái)分析 I2C 總線上的數(shù)據(jù)傳輸。首先,右鍵雙擊 I2C調(diào)試器把 I2C

調(diào)試器從原理圖中刪除。

然后選擇圖表模式,并從對(duì)象選擇器中選中“數(shù)字圖表”,然后在你想放置圖表的位置左上角點(diǎn)擊左鍵,移動(dòng) 鼠標(biāo)到右下角,再次點(diǎn)擊左鍵完成圖表的放置。


注意,原理圖中的圖表不需要特別大,因?yàn)楫?dāng)我們要分析仿真結(jié)果時(shí),可以把圖表放大。 添加完圖表以后,我們現(xiàn)在就需要告訴它我們想要查看哪些導(dǎo)線上的信號(hào)。為此我們需要給導(dǎo)線附上探針,然

后在圖表中指定這個(gè)探針。選擇電壓探針圖標(biāo),然后在 I2C 總線的每一根線上都放置一個(gè)探針。


如果需要靠的更近,可以圍繞鼠標(biāo)位置使用鼠標(biāo)中間的滾筒或 F6/F7 快捷鍵進(jìn)行放大和縮小,F(xiàn)8

快捷鍵將返回原理圖的默認(rèn)視圖。 默認(rèn)情況下,電壓探針會(huì)自動(dòng)提取終端的名字為自己命名。但在我們的仿真中,對(duì)其重新命名讓它更有意義。

可以通過(guò)右鍵點(diǎn)擊探針,從彈出的菜單中選擇“編輯屬性”,然后將名字分別改成 SCL 或 SDA。



現(xiàn)在,導(dǎo)線上放置好了探針,而原理圖中也已經(jīng)放置好了的圖表。我們需要添加探針到圖表中讓圖表去測(cè)量探 針上的信號(hào),有幾種方法可以做到。最簡(jiǎn)單的方法就是將探針拖到圖表中,可以右鍵點(diǎn)擊探針,從彈出的菜單 中選擇移動(dòng)對(duì)象,然后移動(dòng)鼠標(biāo)到圖表之上,再次點(diǎn)擊左鍵完成添加;也可以左鍵點(diǎn)擊一次探針先選中,然后按下左鍵不放,移動(dòng)鼠標(biāo)到圖表之上,釋放左鍵即可完成添加操作。現(xiàn)在把這兩個(gè)探針添加到圖表中。




默認(rèn)情況下,基于圖表的仿真運(yùn)行時(shí)間是 0 到 1s。在我們的例子中,我們更關(guān)心 1s 到 2s 之間的數(shù)據(jù),跳過(guò)了
初始化階段的數(shù)據(jù)傳輸。可以通過(guò)編輯圖表(點(diǎn)擊右鍵并編輯屬性)改變開(kāi)始和停止的時(shí)間。


在原理圖的空白區(qū)域點(diǎn)擊左鍵將會(huì)取消選中任何當(dāng)前被選中的對(duì)象。通常在退出編輯屬性對(duì)話(huà)框以 后需要進(jìn)行這個(gè)操作,因?yàn)橥顺鼍庉媽傩詫?duì)話(huà)框以后對(duì)象仍然處于選中狀態(tài)。


我們準(zhǔn)備進(jìn)行仿真,但有一個(gè)嚴(yán)重的問(wèn)題。正如前面提到的,在基于圖表的仿真中,你不能和電路進(jìn)行交互式 操作,但是為了進(jìn)入溫度模式,觸發(fā) I2C 傳輸,我們需要點(diǎn)擊按鍵切換模式。由于我們不能按下按鍵,所以我 們需要給 PIC 加入一個(gè)等效的信號(hào),以便程序能切換到溫度模式。我們一般是這樣做的,選擇激勵(lì)源圖標(biāo),從 對(duì)象選擇器中選中脈沖激勵(lì)源,將這個(gè)激勵(lì)源放在按鍵右邊 RD2 終端的旁邊。放置之前你可能要先移動(dòng)這個(gè)終 端給這個(gè)激勵(lì)源騰出一些連線的空間。




現(xiàn)在以最常用的方法編輯激勵(lì)源(點(diǎn)擊右鍵,選擇“編輯屬性”菜單),在數(shù)字激勵(lì)源類(lèi)型中選擇單脈沖,改變脈 沖極性為負(fù),使用脈沖信號(hào)代替按鍵脈沖。由于我們圖表仿真的時(shí)間是從 1s 到 2s,因此設(shè)置開(kāi)始時(shí)間 1.25s, 脈沖寬度 50ms。




我們現(xiàn)在可以運(yùn)行仿真了,但使用的不是仿真控制面板中的交互式仿真按鈕,使用的是“圖表”菜單中的“仿
真圖表”命令,之后你看到的結(jié)果看起來(lái)應(yīng)該像下圖一樣。

在 1.25s 之前沒(méi)有任何的數(shù)據(jù)傳輸,這時(shí)因?yàn)槲覀兊哪M按鍵的脈沖是在 1.25s 時(shí)產(chǎn)生的。另外,現(xiàn)在在圖表 里面我們看不到其它的信息。右鍵點(diǎn)擊圖表,從彈出的菜單中選擇“最大化窗口”,這將在一個(gè)新的選項(xiàng)頁(yè)中 放大圖表。




當(dāng)圖表選項(xiàng)頁(yè)出現(xiàn)在最前面時(shí),菜單和工具欄會(huì)改變,通過(guò)這些菜單和工具可以對(duì)圖表進(jìn)行一些操作。請(qǐng)?zhí)貏e 注意應(yīng)用程序頂部出現(xiàn)的圖表工具欄。


在這里可以找到一些縮放工具,最有用的是“查看區(qū)域”工具。點(diǎn)擊這個(gè)工具的圖標(biāo),然后圍繞一個(gè)小的區(qū)域
拖動(dòng)一個(gè)方框,可以進(jìn)行選定區(qū)域的放大顯示。如果重復(fù)這個(gè)操作,你將很快就可以放大看到單個(gè)的 I2C 序列。



你也可以按住 SHIFT 鍵,然后使用鼠標(biāo)拖一個(gè)選擇框進(jìn)行區(qū)域放大。

熟悉 I2C 協(xié)議的人可以將圖表顯示的原始數(shù)據(jù)與之前在協(xié)議分析儀中看到的序列進(jìn)行對(duì)比驗(yàn)證。 最后,你可以按下面介紹的方法進(jìn)行圖表測(cè)量:

               在圖表窗口點(diǎn)擊鼠標(biāo)左鍵,將在圖表中放置一個(gè)(綠色)光標(biāo);
               按住鼠標(biāo)左鍵并進(jìn)行移動(dòng)可以進(jìn)行移動(dòng)光標(biāo);
               按住 CTRL 鍵,點(diǎn)擊左鍵將放置一個(gè)(紅色)光標(biāo);
               按住 CTRL 鍵,并按住鼠標(biāo)左鍵移動(dòng)可以移動(dòng)(紅色)光標(biāo);
               每個(gè)光標(biāo)的數(shù)據(jù)和它們之間的增量顯示在圖表窗口的底部。

一般的放置和編輯技巧在這個(gè)教程里面都只是作簡(jiǎn)單的介紹,而在 ISIS 教程文檔中有更多細(xì)節(jié)。 關(guān)于圖表的更多信息提供在本文檔的后面,而關(guān)于激勵(lì)源、探針以及基于圖表仿真的詳細(xì)說(shuō)明只能在 Proteus

VSM 的參考手冊(cè)中找到。


診斷信息


在 Proteus 中另一個(gè)非常有用但經(jīng)常被忽視的工具是仿真診斷信息。它提供了一個(gè)窗口,允許用戶(hù)查看指定外
設(shè)上仿真活動(dòng)的文字性報(bào)告。

我們以 LCD 顯示屏為例來(lái)說(shuō)明怎樣使用診斷信息。 切換到原理圖頁(yè)面,從“調(diào)試”菜單下打開(kāi)“配置診斷信息”子菜單。




展開(kāi)對(duì)話(huà)框中 LCD 顯示屏(VIM-332-DP)的條目,點(diǎn)擊“診斷信息”這個(gè)子條目,然后將診斷信息輸出等級(jí)
設(shè)置為“所有信息”。


現(xiàn)在展開(kāi) PIC16LF1937(U1)條目,向下滾動(dòng)到“LCD 模塊”這個(gè)子條目,再次將診斷信息輸出等級(jí)設(shè)置為“所 有信息”。




首先從“仿真控制面板”中啟動(dòng)交互式仿真,然后點(diǎn)擊“仿真日志”觀察診斷信息,Proteus 將會(huì)自動(dòng)切換到
VSM Studio 頁(yè)面,仿真日志將會(huì)出現(xiàn)在 VSM Studio 頁(yè)面的底部。


如果你暫停仿真,我們可以看到[PIC16 LCD]的調(diào)試信息里包含了 PC 值,你可以點(diǎn)擊這個(gè)值來(lái)定位到源代碼中 的某一行,這一行就是引起 PIC16 輸出這個(gè)調(diào)試信息的指令。





只有當(dāng)仿真被暫停以后,才能定位到源代碼中。 最后,停止仿真并將診斷信息輸出等級(jí)設(shè)置為“僅警告”。

在你的固件程序出現(xiàn) bug 時(shí),使用診斷信息來(lái)幫助你調(diào)試特別有用。但它會(huì)影響仿真的性能和速度(可以試試 對(duì) PIC MSSP 外設(shè)和溫度傳感器 MCP9800 輸出診斷信息),因此只在需要時(shí)啟用它。如果你知道事件出現(xiàn)的 大概時(shí)間段,你也可以選擇在一個(gè)限制的時(shí)間段內(nèi)輸出診斷信息。




本系列完整的pdf版本教程下載:
http://www.zg4o1577.cn/bbs/dpj-111690-1.html


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 午夜小视频在线播放 | 久久久精品 | 综合久| 无码日韩精品一区二区免费 | 欧美日韩国产一区二区三区不卡 | 国产成人精品一区二三区在线观看 | 色婷综合网 | 亚洲欧美综合网 | 欧美精品片 | 色先锋影音| 日本成人中文字幕 | 日韩中文视频 | 久久一区二区视频 | 亚洲 一区| 日韩欧美在线播放 | 毛片一区二区三区 | 天天草夜夜骑 | 中文一区| 亚洲欧美日韩网站 | 国产精品美女久久久av超清 | 久久精彩视频 | 美日韩视频 | 国产精品久久久久久久久久 | 国产女人与拘做视频免费 | 91精品国产91久久久久游泳池 | 欧美在线a | 亚洲成人中文字幕 | 免费看淫片 | 伊人免费在线观看 | 国产精品久久久久久久久久免费 | 免费黄色大片 | 久久中文字幕在线 | 99精品视频一区二区三区 | 久久久青草 | 蜜臀久久99精品久久久久久宅男 | 成人性视频免费网站 | 国产精品视频免费看 | 91嫩草精品 | 欧美aⅴ| 国产一级在线 | a级大片免费观看 |