真。本部分教程的重點將放在仿真器和 IDE 的實際使用上,針對每一個主題的詳細說明請參考幫助文檔中的內 容。本部分教程不包含原理圖的繪制,如果你對 ISIS中的原理圖繪制不熟悉,你應該先花時間學習第一部分教 程中的內容。

通過本教程,我們不僅可以掌握 VSM Studio IDE 的基本仿真功能,還可以了解 Proteus VSM 中的各種調試和 測試工具。要學習本教程你將需要:
必須安裝 Proteus 8.0 版本或更高版本的軟件。如果沒有購買專業(yè)版的軟件,可以從 Labcenter 的網(wǎng)站 上免費下載這個軟件的試用版本,或者聯(lián)系 Proteus 軟件的大中華區(qū)總代理-廣州市風標電子技術有限公司
從 Proteus 的主頁啟動新建工程向導,選擇“從開發(fā)板”選項,在“微控制器系列”列表框中選擇 PIC16,然 后從“開發(fā)板”列表框選擇 F1 評估板(F1 Releas),點擊完成導入工程。

導入項目之后,在 Proteus 中可以看到兩個選項卡:F1 評估電路板的原理圖模塊和包含 Microchip 標準硬件驅 動源代碼的 VSM Studio IDE,如下圖所示:



開源的編譯器能夠直接從 Labcenter 的服務器上下載和安裝。需要收費的編譯器,Proteus 將提供鏈接到相應供 應商網(wǎng)站的下載頁面。在這個例子里,使用的是 Hi-Tech 編譯器,如果還沒有安裝,則需要從微芯的網(wǎng)站下載:
2. 下載并安裝編譯器,如果沒有購買,可以使用 Lite mode,或者選擇使用 45 天的評估版,如下圖所示:
3. 安裝完成后點擊對話框底部的“檢查全部”按鈕,Proteus 將自動重新檢查所有的編譯器并進行配置, 使得它能夠在 Proteus 中編譯源代碼。



到了這里,編譯器、源代碼和原理圖已全部準備好了,使用 VSM Studio“構建”菜單下的“構建工程”命令(或 構建圖標)編譯固件。
編譯器的輸出將顯示在 IDE 的底部面板中,編譯完成以后,你能得到一個編譯成功的信息。

只需要簡單的按下 Proteus 左下角“仿真控制面板”中的運行按鈕就可以運行仿真。
F1 評估板的示例程序可以顯示三種模式,時間,一溫度,和電位器的 ADC 采樣值。可以通過按下原理圖中的 控制按鈕來循環(huán)切換顯示模式,進行交互式仿真。

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






首先,Proteus 原理圖中的微控制器執(zhí)行編譯后的固件文件與真實世界中的 PIC 執(zhí)行編程的固件完全一樣。使 用 VSM Studio IDE 只是把燒寫 PIC 芯片的過程,變成把編譯成功后得到的文件發(fā)送給原理圖。
其次,你可能會注意到,原理圖中幾乎所有導線都使用了終端來結尾,并且終端都有一個名字。在原理圖中, 相同名字的兩個終端被認為是相連的(像有一根虛擬的導線)。例如,溫度傳感器旁邊的 RC3 和 RC4 終端連 接到了 PIC 處理器中的 I2C 接口的兩個引腳上。我們喜歡使用這種方式進行原理圖連線,因為可以避免導線的交叉,并且可以將原理圖分割成容易識別的邏輯塊。如果你要了解更多關于這種連接方式的信息,可以閱讀 ISIS 的參考手冊。
最后,在 Proteus 軟件底部的狀態(tài)欄顯示了仿真運行的時間。仿真很可能不是實時的,這取決于你的計算機的例如,對于一個特別慢的計算機,在這個仿真中調節(jié)到時鐘模式時,仿真中 LCD 屏上顯示的時鐘與現(xiàn)實世界墻 上的掛鐘不是同時前進的,但它卻總是會和狀態(tài)欄的仿真時間同步前進。
按鍵可以在時間、溫度和電壓模式之間進行切換,這樣我們就能很容易的在這里添加其它操作模式。首先,切 換到 VSM Studio IDE 選項卡,打開文件 main.c(在項目中雙擊 main.c)。


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

查找到的第一個結果就是我們正要尋找的,也就是關于按鍵釋放后用于設置顯示模式的 switch 語句。在這里我 們只需要添加新的操作模式:

在這段代碼的下面還有另一個 switch 語句,用于執(zhí)行當前的顯示模式。同樣,我們需要加入我們的 case 語句 來調用我們的函數(shù)。
最后一步是添加 display_test()函數(shù),可以在這里添加進入我們的操作模式后要做的事情。我們在 main.c 文件的在這里你可以嘗試添加任何你想添加的動作,但我們只做一些簡單的動作,比如在顯示器上顯示一個固定值, 并在 LED 上顯示二進制的計數(shù)器。


最后一步是構建工程。如果你的程序有錯誤,在輸出窗口會得到編譯錯誤,單擊這個錯誤,會指示出問題所在 的位置。
項才能修正鏈接錯誤,例如需要在工程設置中加入“函數(shù)庫”的文件夾。 當我們這次運行仿真時,我們使用按鍵來切換操作模式,直到進入我們自己的模式(時間->溫度->電位器->測試),


示器,可以把其中一個頁面拖到另一個顯示器中,在兩個顯示器中同時觀察這兩個頁面。 但我們在調試時,通常更感興趣的是觀察代碼的單步運行,同時觀察原理圖的某一小部分進行驗證。Proteus
頁面之間進行切換,大大提高我們的調試效率。 在我們的教程的例子中,可以以溫度傳感器來說明實時監(jiān)控窗口的使用,步驟如下:


如果做的過程中出現(xiàn)問題,可以右鍵雙擊虛線框進行刪除。同樣,如果虛線框的位置有問題,也可 以右鍵點擊虛線框然后選擇“移動對象”菜單進行移動。
其它可能需要我們在仿真過程中進行觀察和控制的對象有按鍵、電位器和顯示元件(LCD)。我們可以重復上 面的操作,圍繞這些器件各自拖出虛線框,完成以后,你的原理圖看起來應和下圖一樣。
因為我們指定了有效彈出窗口,這將會工作在 VSM Studio。現(xiàn)在如果你按下“運行”按鈕進行仿真,并切換到
當全速運行代碼時,VSM Studio 頁面中的源代碼和變量的區(qū)域將顯示“仿真正在運行”的消息。我 們將在下一節(jié)介紹調試工具的使用。
調試彈出窗口非常有用,它不僅將原理圖中標記的區(qū)域顯示到調試環(huán)境中,而且還可以進行交互仿真。例如, 如果點擊按鍵 S1,切換程序模式,你應該會看到 LCD顯示 I2C 溫度傳感器的溫度值。如果你再調節(jié)溫度傳感 器的溫度,LCD 會反映出溫度的變化。


切換回到原理圖頁面,你會看到原理圖中的狀態(tài)和調試彈出窗口中的一樣。當停止仿真(從仿真控制面板), 調試彈出窗口會消失,VSM Studio 將從調試狀態(tài)切換回設計編輯狀態(tài),你可以再次編輯和編譯你的源代碼。
Studio 頁面通過拖動來調整調試彈出窗口的大小。 現(xiàn)在我們已經(jīng)配置完調試彈出窗口,來看看如何進行使用調試工具進行代碼的調試。
首先確保 Proteus 沒有運行仿真,處于停止狀態(tài)中。通過“仿真控制面板”暫停按鈕啟動仿真并暫停。
如上圖所示,Proteus 將自動切換到 VSM Studio 頁面,我們可以看到:調試彈出窗口顯示在右手邊;主面板報 告“沒有源代碼”的信息;程序變量的列表放在屏幕的底部。在這個階段,仿真處于“已經(jīng)啟動”的狀態(tài),電 路處在一個穩(wěn)定的工作點,代碼還沒有執(zhí)行,也沒有時間的消逝。
源代碼窗口沒有顯示任何的源代碼,這是因為在當前的程序計數(shù)器(PC=0)中沒有源代碼可以顯示。 你可以從窗口頂部的下拉框中選擇這個工程的任何源文件進行查看。但我們先從 main.c 文件開始,因為這個文

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


到達斷點以后,我們可以通過源代碼窗口右上角或 VSM Studio 調試菜單中的常用命令單步執(zhí)行代碼。另外可 以使用快捷鍵 F10 和 F11 分別進行單步跳過調試和單步進入函數(shù)內部調試。
如果需要查看程序執(zhí)行的細節(jié),具體到每一條指令的執(zhí)行過程。你可以在反匯編代碼中進行代碼的匯編級單步 調試。右鍵點擊源碼窗口,從彈出的菜單中選擇“反匯編”,然后同之前一樣使用單步調試命令。

的,因為顯示的結果就是由這些不完整的段組合起來的。 如果你想運行到下一個按鍵釋放的狀態(tài),只需要按下仿真控制面板中的“運行”按鈕,然后在調試彈出窗口中
電容不進行放電,電機也失去了動力。當通過單步調試執(zhí)行指令,這些指令對系統(tǒng)產(chǎn)生作用以后,系統(tǒng)將再次 停止。調試時,可以通過狀態(tài)欄看到時間前進的信息。
還有一些其它非常有用的調試窗口,但在本教程沒有進行介紹。這些調試窗口可以從 VSM Studio 的“調試” 菜單中啟動,并放到 IDE 的底部。在仿真暫停后,數(shù)據(jù)會顯示在相應的窗口中。但是本教程將會在下一節(jié)單獨 介紹監(jiān)視窗口的功能和使用方法,因為它比較特殊。
先點擊 Proteus 軟件底部的“運行”按鈕開始仿真,然后從 VSM Studio 的“調試”菜單中啟動監(jiān)視窗口,監(jiān) 視窗口將出現(xiàn)在 IDE 的底部。


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


我們現(xiàn)在點擊電路中的按鈕來切換到電壓采集模式,可以使用調試彈出窗口(或切換到原理圖頁面)。點擊控

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




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


注意,你需要單獨配置 ADRESH 和 ADRESL,完成以后,監(jiān)視窗口的顯示應該像下圖一樣。
設置好監(jiān)視條件以后,我們現(xiàn)在需要向下調節(jié)電位器,直到滿足條件時觸發(fā)斷點。同之前一樣,既可以在 VSM Studio 的調試彈出窗口中調節(jié)電位器,也可以切換到原理圖頁面進行調節(jié)。當斷點被觸發(fā)后,你應該能看到兩 個監(jiān)視項的值是 0x01 和 0xFF。如果有需要的話,你可以在條件觸發(fā)的這點開始單步執(zhí)行你的代碼進行調試。
在調試定時器代碼時,如果想要捕獲溢出條件,使用監(jiān)視窗口中的監(jiān)視條件是非常有用的。選項就可以關閉監(jiān)視點。 我們接下來討論硬件斷點,在此之前,要先禁止監(jiān)視條件或刪除監(jiān)視項,然后在仿真控制面板中按下停止按鈕
硬件條件發(fā)生時檢查代碼,例如想在 I2C 總線剛開始動作時進行捕獲,我們可以像下面介紹的一樣在 I2C 總線 上設置一個硬件斷點。
先切換到原理圖選項卡,然后從左邊的模式選擇器中選擇電壓探針圖標。接下來在編輯窗口中單擊,開始進行 探針的放置,移到鼠標到總線的 SDA 線上,再次點擊左鍵放置探針。



點擊“確定”,按下運行按鈕開始仿真,你應該會發(fā)現(xiàn)仿真幾乎立刻停止,并且在 VSM Studio 的源窗口中顯 示只執(zhí)行了一個命令將 SDA 設置成低電平。
這個斷點實際上是發(fā)生在初始化程序中,如果想要跳過這個斷點,并且只在進入 I2C 模式后被激活,這樣我們 就需要設置斷點的裝備時間,先要停止仿真,然后切換到原理圖模塊,像之前一樣編輯電壓探針 RC4 的屬性, 裝備時間設置成 1s。



假設我們想要檢查溫度傳感器 MCP9800 進行 I2C 傳輸?shù)倪^程,無論是通過交互方式還是更傳統(tǒng)的圖表方式都 可以實現(xiàn)。
我們要做的第一件事就是整理原理圖,刪除我們先前使用過的各種斷點。你可以在原理圖中的探針上右鍵雙擊, 或點擊右鍵,從彈出的菜單中選擇“刪除”來刪除電壓探針,同樣,我們可以右鍵雙擊調試彈出窗口對象的邊 界刪除調試彈出窗口對象。
當原理圖中定義了調試彈出窗口對象,在仿真開始以后 Proteus 就會自動切換到 VSM Studio。因為它會假定你主要的任務是進行源代碼調試。由于我們現(xiàn)在需要分析信號,所以我們移除調試彈出窗 口對象,以便仿真開始后打開的是原理圖頁面。
現(xiàn)在要做的第二件事就是放置和連接 I2C 調試器,選擇虛擬儀器模式,在對象選擇器列出了一系列交互式測量 工具,在我們的案例中,選擇 I2C 協(xié)議分析儀。


在起始點(I2C 調試器的引腳)直到光標變成綠色,然后點擊左鍵開始放置,移動鼠標到目標點(光標變成綠 色),最后點擊左鍵終止導線的放置,通過使用這種技術連接 SCL 和 SDA 到 I2C 總線,如下圖所示:

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

由于程序代碼會不斷查詢當前的溫度值,因此 I2C 總線上會不斷有數(shù)據(jù)在傳輸。如果我們要分析數(shù)據(jù),應該先 暫停仿真,然后才可以花一些時間來分析 I2C 數(shù)據(jù)傳輸?shù)脑敿氝^程。

如果 Proteus 工作在單一框架下,即 ISIS 與 VSM Studio 都以選項頁的方式存在于 Proteus 軟件框 架下,當仿真暫停后,將自動切換到 VSM Studio 選項頁,因為 Proteus 會假定你對執(zhí)行的源代碼 感興趣。但不管怎樣,分析儀始終在最頂層。如果你想在同一時間查看原理圖和源代碼,你可以使 用調試彈出窗口,也可以將 VSM Studio 拖到 Proteus 外面,把原理圖和 VSM Studio 分開。
I2C 協(xié)議分析儀中使用的語法是標準的 I2C 協(xié)議描述,你可以通過左邊的‘+’號展開傳輸?shù)男蛄羞M行查看。外 設元件(MCP9800)有一個標準的地址 0x90,因此我們以讀請求為例進行說明:序列以開始位(S)開發(fā),跟 著是一個讀請求 0x91(位 0 設置為 1 表示讀請求),后面跟著的是 0x1B(數(shù)據(jù))等等。接收到的數(shù)據(jù)(0x1B) 以十進制顯示是 27,對應外設元件(MCP9800)中當前顯示的溫度值。

再次運行仿真,你可以改變原理圖中 MCP9800 的溫度值,然后再次停止,并檢查 I2C 調試器中的輸出來進一 步理解 I2C 和 I2C 協(xié)議分析儀。

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

在這個時間段結束、仿真停止之前,仿真結果是看不見的。 鑒于上述情況,讓我們看看如何使用數(shù)字圖表來分析 I2C 總線上的數(shù)據(jù)傳輸。首先,右鍵雙擊 I2C調試器把 I2C
然后選擇圖表模式,并從對象選擇器中選中“數(shù)字圖表”,然后在你想放置圖表的位置左上角點擊左鍵,移動 鼠標到右下角,再次點擊左鍵完成圖表的放置。


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

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


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


在原理圖的空白區(qū)域點擊左鍵將會取消選中任何當前被選中的對象。通常在退出編輯屬性對話框以 后需要進行這個操作,因為退出編輯屬性對話框以后對象仍然處于選中狀態(tài)。
我們準備進行仿真,但有一個嚴重的問題。正如前面提到的,在基于圖表的仿真中,你不能和電路進行交互式 操作,但是為了進入溫度模式,觸發(fā) I2C 傳輸,我們需要點擊按鍵切換模式。由于我們不能按下按鍵,所以我 們需要給 PIC 加入一個等效的信號,以便程序能切換到溫度模式。我們一般是這樣做的,選擇激勵源圖標,從 對象選擇器中選中脈沖激勵源,將這個激勵源放在按鍵右邊 RD2 終端的旁邊。放置之前你可能要先移動這個終 端給這個激勵源騰出一些連線的空間。


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

真圖表”命令,之后你看到的結果看起來應該像下圖一樣。
在 1.25s 之前沒有任何的數(shù)據(jù)傳輸,這時因為我們的模擬按鍵的脈沖是在 1.25s 時產(chǎn)生的。另外,現(xiàn)在在圖表 里面我們看不到其它的信息。右鍵點擊圖表,從彈出的菜單中選擇“最大化窗口”,這將在一個新的選項頁中 放大圖表。


當圖表選項頁出現(xiàn)在最前面時,菜單和工具欄會改變,通過這些菜單和工具可以對圖表進行一些操作。請?zhí)貏e 注意應用程序頂部出現(xiàn)的圖表工具欄。
在這里可以找到一些縮放工具,最有用的是“查看區(qū)域”工具。點擊這個工具的圖標,然后圍繞一個小的區(qū)域
熟悉 I2C 協(xié)議的人可以將圖表顯示的原始數(shù)據(jù)與之前在協(xié)議分析儀中看到的序列進行對比驗證。 最后,你可以按下面介紹的方法進行圖表測量:
一般的放置和編輯技巧在這個教程里面都只是作簡單的介紹,而在 ISIS 教程文檔中有更多細節(jié)。 關于圖表的更多信息提供在本文檔的后面,而關于激勵源、探針以及基于圖表仿真的詳細說明只能在 Proteus
我們以 LCD 顯示屏為例來說明怎樣使用診斷信息。 切換到原理圖頁面,從“調試”菜單下打開“配置診斷信息”子菜單。


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

VSM Studio 頁面,仿真日志將會出現(xiàn)在 VSM Studio 頁面的底部。如果你暫停仿真,我們可以看到[PIC16 LCD]的調試信息里包含了 PC 值,你可以點擊這個值來定位到源代碼中 的某一行,這一行就是引起 PIC16 輸出這個調試信息的指令。

![]()
只有當仿真被暫停以后,才能定位到源代碼中。 最后,停止仿真并將診斷信息輸出等級設置為“僅警告”。
在你的固件程序出現(xiàn) bug 時,使用診斷信息來幫助你調試特別有用。但它會影響仿真的性能和速度(可以試試 對 PIC MSSP 外設和溫度傳感器 MCP9800 輸出診斷信息),因此只在需要時啟用它。如果你知道事件出現(xiàn)的 大概時間段,你也可以選擇在一個限制的時間段內輸出診斷信息。
| 歡迎光臨 (http://www.raoushi.com/bbs/) | Powered by Discuz! X3.1 |