歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Arduino UNO仿真開發環境設置和仿真運行

Arduino UNO仿真開發環境設置和仿真運行

日期:2017/2/28 13:56:48   编辑:Linux教程

一. 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)雙擊SW\Blink目錄下的源文件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打開HW\Arduino UNO.dsn,雙擊Atmga 328P微處理器,在Program file項中選擇上邊SW\Blink\Blink.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

Copyright © Linux教程網 All Rights Reserved