首頁 > 軟體

Arduino UNO模擬開發環境設定和模擬執行

2020-06-16 17:50:47

一. Proteus模擬平台簡介

Proteus軟體是英國Labcenter electronics公司出版的EDA工具軟體(該軟體中國總代理為廣州風標電子技術有限公司)。它不僅具有其它EDA工具軟體的模擬功能,還能模擬微控制器及外圍器件。它是目前最好的模擬微控制器及外圍器件的工具。現已受到電子類特別是微控制器愛好者、從事微控制器教學的教師、致力於微控制器開發應用等的科技工作者的青睞。以前的如EWB等軟體只能模擬數位電路和類比電路,不能模擬CPU和程式。

當前網上Proteus有7.8 SP2,7.10 SP0,8.0等幾個版本,這幾個JM的版本都比較穩定。這些版本的元件模型格式是相容的,DSN模擬原理檔案是一樣的。8.0版本只是把DSN原理圖、軟體編輯環境和編譯器整合為一個工程檔案,成為一個象“傻瓜相機”一樣的東西,但對初學Proteus者比較方便,因為內部已經整合了程式編輯器和可下載不同的編譯器。

7.xx版本,DSN模擬原理、編輯器和編譯器三者是獨立的。而8.0版本是整合的。8.0版本在多CPU模擬時,設定不太容易;整合後軟體有點大,不如7.xx版本簡潔。

二. 開發三步曲

編輯器

使用者選擇用自己的喜歡的編輯器(如Notepad++,Utraedit,Source Insight,vim,slickedit,notepad等),用此寫源程式。

C/C++編譯器

使用者按CPU型號選擇自己喜歡的C/C++編譯器(如Winavr,CodeSourcery,Keil,IAR,WinARM,Watcom等等),一般的編譯器都可以生成標準的.hex,和.elf格式的可執行目標檔案。 Arduino IDE實際使用的是Winavr中的gcc。用此把第一步寫的源程式編譯成.hex和.elf檔案。

硬體模擬圖

Proteus中的Model下有元件模擬庫,使用者使用這些模擬元件,設計出自己的硬體模擬原理圖,也叫.dsn檔案。在Proteus環境下,用自己設計的.dsn檔案,在CPU中載入第二步生成的.hex或.elf檔案,就可以模擬執行了。.elf檔案內部包含偵錯資訊,可以單步、設定斷點偵錯程式。

三. Arduino UNO硬體模擬原理圖

本模擬電路圖(HW目錄下Arduino UNO.dsn檔案)可以模擬Arduino Diecimila,或Arduino UNO板。前者採用FT232晶片做為序列通訊模組,後都採用ATMEGA16U2微處理器代替了FT232,它們都是在USB上實現一個非同步序列通訊的功能。我們在模擬中,採用了Proteus中的序列口物理介面模型COMPIM,COMPIM完全可以代替序列通訊的功能,它實現了與實際PC機物理序列介面RS232的連線,使模擬的虛擬世界與真實的世界連線。

圖1-Arduino UNO硬體模擬原理圖

圖中左下角增加了兩個序列通訊虛擬終端VT1和VT2,用於偵錯序列通訊接收資料或傳送資料使用。其它為Arduino Diecimila或UNO的模擬電路,詳細標註了引腳名稱,與實現電路板一樣。用Proteus模擬工具可以雙擊Arduino UNO.dsn開啟Arduino模擬電路圖。

四. Arduino開發軟體下載及設定

1.下載並安裝Arduino整合式開發環境(Arduino IDE)

到官網上下載並安裝Arduino IDE,當前最新穩定版本為1.0.6版本。

http://arduino.cc

http://arduino.cc/en/Main/Software

2.選擇Arduino板型別及序列口

如圖2,模擬時,選擇前兩個板都可以,在與實際Arduino板連線時,選擇相對應的板,並選擇相對應的序列口。

***因本文使用Arduino模擬開發方法,在模擬電路圖中,只要選擇目標執行檔案.hex或.elf檔案就相當於載入程式,所以不用序列口載入程式。

圖2-選擇板子型號

圖3-選擇序列口

3.設定Arduino IDE個人偏好(重要)

選擇File->Preferences

圖4-選擇preferences

找到設定偏好檔案preferences.txt

圖5-選擇preferences.txt

用編輯器開啟偏好設定檔案preferences.txt

【1】.在arduino工具的File->preferences中找到preferences.txt檔案,用記事本開啟。

【2】.在preferences.txt檔案的最後加一行,編輯加入 build.path=d:MyHexDir,目錄名自己定。為了觀察方便,(本人設定是build.path=d:###ArduinoDbgDir )。

【3】先關閉Arduino IDE;

【4】之後儲存preferences.txt;

以上順序不要變。這樣就可以在Arduino編譯時,看到d:MyHexDir目標下的目標檔案,而不會自動刪除。

4. 編譯

(1)雙擊SWBlink目錄下的原始檔Blink.ino,自動開啟Arduino IDE。

(2)點選Sketch->Verify/Compile編譯生成目標檔案,目標檔案在d:MyHexDir下(本人的在d:###ArduinoDbgDir目錄下 )。

(3)點選CP.bat,會把.hex和.elf檔案複製更新到當前.ino所在目錄下。可以自己編輯CP.bat檔案,改變目錄。

(4)在Proteus中設定好一次.hex或.elf檔案的位置就可以,以後更新.hex或.elf檔案時,自動認為已經載入最新的。

五. 第一個Hello World程式模擬執行

Hello World程式就是在計算機螢幕上顯示“Hello,World!”的一個程式,在嵌入式系統開發中,LED的閃爍程式就是Hello World程式,Hello World程式很簡約,一般它是程式設計師在新的開發環境中第一個要執行的程式,但是簡約並不簡單。

雖然Hello World程式很簡約,但是,為了這個簡約的程式能夠執行,需要進行開發工具鏈的選擇、設定開發工具鏈,這需要大量繁瑣的工作要做。Hello World程式能否執行,可以驗證你的編譯、開發環境、執行環境是否正確。

第一個程式Blink.ino如下:
///0. 引腳定義
#define LED_PIN  13        //定義LED引腳為13號資料引腳(DIG13)

///1. 初始化
void setup() {
  pinMode(LED_PIN,OUTPUT); // 初始化DIG13為輸出
}

///2. 迴圈
void loop() {
      digitalWrite(LED_PIN,HIGH); //DIG13輸出高電平
      delay(1000);                //延時1秒
      digitalWrite(LED_PIN,LOW);  //DIG13輸出低電平
      delay(1000);                //延時1秒
}

(1)用Arduino IDE開啟Blink.ino,編譯之;
 (2)在d:MyHexDir目錄下會生成.hex和.elf檔案等;
 (3)點選.ino所在目錄下的CP.bat, 本目錄多了兩個檔案.hex和.elf;
 (4)用Proteus開啟HWArduino UNO.dsn,雙擊Atmga 328P微處理器,在Program file項中選擇上邊SWBlinkBlink.hex檔案,或Blink.elf檔案,若載入Blink.elf檔案,則可以單步或設定斷點偵錯;
 (5)在Proteus中點選左下角執行模擬,如果圖1中的LED小燈閃爍,則你的模擬執行環境設定正確。 

英特爾把小小的「Curie」放在一塊 Arduino 主機板上  http://www.linuxidc.com/Linux/2015-10/124258.htm

Arduino 與 Raspberry Pi: 哪個是更適合你的DIY平台?  http://www.linuxidc.com/Linux/2014-05/102470.htm

Arduino VS 樹莓派:哪個才是你的菜? http://www.linuxidc.com/Linux/2013-06/85807.htm

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-11/124730.htm


IT145.com E-mail:sddin#qq.com