跳至內容
主選單
主選單
移至側邊欄
隱藏
導覽
首頁
近期變更
隨機頁面
MediaWiki說明
Taiwan Tongues 台語維基
搜尋
搜尋
外觀
建立帳號
登入
個人工具
建立帳號
登入
檢視 AtmelAVR 的原始碼
頁面
討論
臺灣正體
閱讀
檢視原始碼
檢視歷史
工具
工具
移至側邊欄
隱藏
操作
閱讀
檢視原始碼
檢視歷史
一般
連結至此的頁面
相關變更
特殊頁面
頁面資訊
外觀
移至側邊欄
隱藏
←
AtmelAVR
由於以下原因,您無權編輯此頁面:
您請求的操作只有這些群組的使用者能使用:
使用者
、taigi-reviewer、apibot
您可以檢視並複製此頁面的原始碼。
'''Atmel AVR'''系列是一種基於改進的哈佛結構、八位元~三十二位元精簡指令集(Reduced Instruction Set Computing,RISC)的微控制器,由 Atmel 公司佇一九九六年研發。AVR 系列是頭一改採用快閃記憶體(Flash Memory)作為資料儲存媒介的單晶片微控制器之一,仝時代其他微控制器加採用一改寫入可程式化 ROM、EPROM 抑是講 EEPROM。 目前 AVR 處理器發展六个系列,分別是:tinyAVR,ATtiny 系列;megaAVR,ATmega 系列;XMEGA,ATxmega 系列;Application-specific AVR,面向特殊應用的 AVR 系列,加添 LCD 控制器、USB 控制器、PWM 等特性;FPSLIC,FPGA 上的 AVR 核;AVR 三十二,三十二位元 AVR 系列,包含 SIMD 和 DSP 佮音影片處理特性,佮 ARM 架構形成競爭。 ==發展簡史== AVR 架構代先由兩名徙威理工學院(Norwegian Institute of Technology,NTH)的學生 Alf-Egil Bogen 和 Vegard Wollan 共同構思出來。 原始的 AVR 微控制單元由當地 Trondheim 的一所特殊應用積體電路(ASIC)工作室 Nordic VLSI(現為北歐半導體)負責開發。彼个時陣伊予人叫做 μRISC(Micro RISC), 猶閣會使用 Nordic VLSI 的矽晶圓等基礎材料來製作其晶片。做遮的技術予人 Nordic VLSI 賣予 Atmel 後,其內部架構予人彼當陣蹛佇遮 Atmel 撨威子公司的 Bogen 以及 Wollan 進一步來發展。架構設計者佮來自 IAR 系統公司的編譯器編寫者峇峇合作,來確保指令集提供閣較高效率的高階程式語言編譯。 佇咧號名頂懸,Atmel 解說『AVR』這个名毋是某幾个單詞的縮寫,嘛無代表任何特別的物件。AVR 的創作者嘛無共出明確的關於『AVR』之表意的答案。毋過,一般認為講,『 AVR』表示'''A'''lf ( Egil Bogen ) and'''V'''egard ( Wollan )'s'''R'''ISC processor。抑若本文內底用的『AVR』一般指八位元 RISC 的 Atmel AVR 微控制器的產品線。 首个 AVR 微控制器的產品線是 AT 九十 S 八千五百十五,有佮英特爾八千空五十一微控制器相仝的四十針雙列直插封裝(DIP), 包括外部濟路位址和資料回流排。猶毋過 RESET 線佮英特爾八千空五十一倒反,八千空五十一的是高電平有效 RESET,而且 AVR 是低電平有效 RESET,但是除了這以外,其他針跤是完全一致的。 ==裝置概覽== AVR 是一个修改過的哈佛架構計算機,程式佮資料分別儲存佇咧各人的擁有無仝款的定址空間的物理記持體系統上,毋過有能力使用特殊的指令會當對程式儲存器內讀資料項。 ===基本家族系列=== AVR 分做六大家族系列: *'''tinyAVR'''—ATtiny 系列 * 空七五~十六 kB 的程式記持體 * 六~三十二管跤封裝 * 有限的外圍裝置集合 *'''megaAVR'''—ATmega 系列 * 四~五百十二 kB 的程式記持體 * 二十八~一百管跤封裝 * 擴展指令集(乘法指令佮管理閣較大容量的程式記持體管理指令) * 閣較濟的外圍裝置集合 *'''XMEGA'''—ATxmega 系列 * 十六~三百八十四 kB 程式記持體 * 四十四~六十四~一百管跤封裝(A 四、A 三、A 一) * 擴展效能特性,像講 DMA、『 事件系統』、閣有加密支援 * 閣較濟外圍裝置,包含類比數位轉換器(ADC) *'''Application-specific AVR'''—面向特殊應用的 AVR * 是因為 megaAVR 搭載其他 AVR 家族系列頂懸無的功能,比如講 LCD 控制器、USB 控制器、進階 PWM、CAN 等咧 *'''FPSLIC ( AVR with FPGA )'''—載於 FPGA 上的 AVR 核心 * FPGA 五 K 至四十 K 一个邏輯 * AVR 程式碼使用 SRAM,佮其他 AVR 系列無仝 * AVR 核心會當運作佇上懸五十 MHz 的時陣脈速率上 *'''三十二-bit AVRs'''—三十二位元 AVR : 二空空六年 Atmel 發布新的對三十二位元的 AVR 三十二架構之微控制器。新架構包含單指令流多資料流運算(SIMD)和數位訊號處理器(DSP)指令,猶閣有其他的音訊影片處理的功能。這个三十二位元的裝置家族系列將與 ARM 架構的處理器形成競爭。就算講令集佮其他精簡指令集的中央處理核心相𫝛,但是佮原來的 AVR 架構佮其他 ARM 核心是無相容的。 ===儲存器架構=== 緊閃記持的、電子抹除式會當複寫唯讀記持體(EEPROM)、 猶閣有靜態隨機存取記憶體(SRAM)攏內底起佇咧一粒晶片頂頭,佇大部份應用中盡可能無需外部記持體。一寡裝置閣有並列的外部匯流排選擇以允准加入加入去外口的資料記持體抑是記持體對映裝置。差不多所有的裝置(除上小規模 TinyAVR 晶片以外)有串列匯流排,會當用來接閣較大的串列 EEPROM 或者是閃記持的。 ====程式記持體==== 程式指令被儲存佇非揮發性的快閃記持體上。就算講微控制器干焦八位元,但是每指令會當共存取一至二个十六位元的位元組。 程式記持體的容量大細定用著裝置號名(如 ATmega 六十四 x 產品線擁有六十四 KB 的緊閃記持體,ATmega 三十二 x 產品線有三十二 KB 的緊閃記持體) 無支援擴充程式記持體,所有的由 AVR 核心執行的程式碼攏需要儲存在內部的記持體。毋過 AT 九十四 FPSLIC AVR / FPGA 晶片無這號限制。 ====內部的資料記憶體==== 資料定址的空間由暫存器檔案、輸出 / 輸入暫存器、和 SRAM 組成。 ====內部暫存器==== AVR 有三十二个的暫存器,分別為 ( R 無到 R 三十一 ) 並且予人歸類做八位元 RISC 裝置。 佇大部份 AVR 架構頂面,工課暫存器被對映為頭一位的三十二个記持體位址(十六–一 F 十六)紲落來是六十四个輸出 / 輸入(I / O)暫存器(二千空一十六–五 F 十六)。 實際上 SRAM 是佇遮的暫存的器分段(定址為六千空一十六)後開啟。(注意輸出 / 輸入暫存器的空間佇一寡擴展裝置無定著閣較大,予得載入記憶體對映 I / O 暫存器會佔用一部分 SRAM 的定址空間) 雖然講有遮的分開的定址解決方案佮最佳化的暫存器檔案佮 I / O 暫存器存取操作碼,但是𪜶全部攏會當予加以處理佮操作,若像𪜶攏咧 SRAM 上。 佇咧 XMEGA 系列上,工課暫存的器檔案並無對映到資料定址空間上;正因為按呢,袂當將 XMEGA 的工課暫存器親像佇咧 SRAM 上彼款對待。作為替代,I / O 暫存器予人對映到資料定址空間內底誠倚前的位置頂懸。另外咧,資料定址空間內底用作 I / O 暫存器的總數上大幅增加,容量達到四千空九十六位元組(十六–零 FFF 十六)。 毋過,親像前代的產品仝款,快速 I / O 操作指令干焦會當到首先的六十四个 I / O 暫存器位置(首位的三十二位是予位元運算指令使用的)。 向後壁的 I / O 暫存器,XMEGA 系列預留一个四千空九十六位元寬度位址空間範圍,會當選這將內起 EEPROM 對映至資料定址空間上(十二空一十六–一 FFF 十六)。 實際上可用的 SRAM 佇遮占用的定址空間了後,對二十鋪空一十六開始。 ====EEPROM==== 差不多所有的 AVR 微控制台灣攏有內建的 EEPROM,用來提供半永久的資料儲存。佮緊閃記憶體仝款,EEPROM 會當斷電了後維持其記憶體儲的資料。 佇大部份的 AVR 架構內底,內部 EEPROM 記持體並無對映到微控制單元的可定址記持體空間上。伊干焦會當和外掛的外圍裝置仝款使用特別的指針暫存器佮讀 / 寫指令來存取,這會使 EEPROM 的存取速度愛比其他內建的隨機存取記憶體(RAM)欲慢無少。 毋過,某寡 SecureAVR(AT 九十 SC)家族系列的裝置使用一種特殊的 EEPROM 根據相關組態設定對映至資料或者是程式記持體。XMEGA 家族系列也允准 EEPROM 對映到西遼定址空間上。 因為 EEPROM 的拭寫次數毋是無限的—— Atmel 的技術幼明規格表示標明是一百 , 零次抹寫週期—— 一个設計精良的 EEPROM 寫常程式應該較 EEPROM 位址頂懸的內容佮請求寫入的內容並且需要進行改變的位置處才真正執行寫入操作。 注意,佇真濟狀況下拭除佮寫入是分開執行的,以位元組做單位的進行,對延長有幫贊其使用壽命,因為元只需要全被設定做『一』(擦除)抑是選擇性地『零』(寫入去)。 ===程式執行=== Atmel 的 AVR 核心有二階單級管線設計。這意味著處理器會當咧執行這馬指令的同時將後一个指令讀取。絕大部份的指令執行干焦需要一到兩个時鐘禮拜,使 AVR 核心佇濟濟八位元微控制器中是上緊的。 AVR 核心予人設計做會當高效運行經編譯的 C 語言程式,閣內建數一个指針指令和之相適配。 ===指令集系統=== AVR 指令集系統相比其他大多數的位元微控制器的,正交指令集愛加出袂少,尤其是 AVR 當下的競爭對手英特爾八千空五十一以及其仿製品佮 PIC 微控制器。毋過,這無完全是固定的: * 指針暫存器 R 二十六至 R 三十一是 X、Y 和 Z 擁有的定址能力,彼此是無仝款的 * 暫存器位置 R 零至 R 十五佮暫存器 R 十六至 R 三十一擁有無仝款的定址能力 * 輸出 / 輸入埠頭零~三十一佮埠三十二到六十三擁有無仝款的定址能力 * 當 SER 無影響標誌的時陣 CLR 會影響標誌,準做𪜶是互補指令。CLR 設定所有的位元為「零」而且 SER 指令著愛設定所有的位元為「一」。(注意,CLR 指令著是 EOR R , R 的虛假操作;SER 指令著是 LDI R , $ FF 的短指令。數學運算時當拄著搬徙 / 載入 / 儲存 / 分支,像講 EOR 會變更標誌來像講 LDI 的則袂曉) * 讀儲存佇咧程式記持體(緊閃型)的獨獨資料的時陣愛用著特殊的 LPM 指令;快閃記憶體匯流排會為指令記憶體保留。 此外,一寡晶片差異會影響代碼的生成。代碼指針(包括佇咧疊起去的回位址)佇晶片頂頭是兩个位元組長度以及有懸到百二八 KB 的緊閃記持體,但是一寡閣較大的晶片頂懸變三个位元組長度;並毋是所有的晶片攏有硬體乘法器;有超過八 KB 緊閃記憶體的晶片擁有分支佮附帶閣較大範圍的傳喚指令;抑是四者攏有。 通常的規則指令集予直接使用 C(抑是講甚至 Ada)編譯器來對 AVR 進行編程。GCC 嘛佇離目前相當長的時間以前就支援包括 AVR 在內的多種微控制器,而且閣予人講法使用。事實上,Atmel 也自為小型微控制器用的編譯器的主要開發者當中徵集並匯入𪜶的作品。以確定高階程式語言編譯器當中上捷用的指令集特性。 ===MCU 速度=== AVR 系列會當足好的支援零~二十 MHz 的時脈,某一寡裝置閣較達到三十二 MHz。閣較低功夫的作業一般需要一个較低的時脈。所有最近的 AVR 裝置(Tiny、Mega、以及 Xmega,毋過九零年代的產品除外)有內建石英振盪器、會當毋免外接時鐘抑是震盪器電路。一寡仔 AVR 裝置閣有一个系統時鐘預定標器,提升系統時鐘到一千空二十四。這个預定標器會當予軟體執行的時重新組態,允准對時脈進行最佳化作業。 因為所有咧暫存器 R 零至 R 三十一位元址的運算作業干焦需要一个時脈,AVR 就會當有每一个掠魚的(MHz)上懸每秒一百萬指令(MIPS), 換言之一粒八 MHz 的 AVR 處理器有八 MIPS 的效能啦。對記憶體載入佮儲存資料需要兩个時脈,分支嘛愛兩个時脈。佇咧一寡較新的『三位元組 PC』上,像講 ATmega 兩千五百六十的裝置,操作會比進前的裝置閣較慢一个時脈。 ===開發=== AVR 因為開發工具會當簡單免費抑是俗價數獲得,包括一寡合適價數的開發枋裝置佮免費的開發軟體,啊若有大陣的開發群體。AVR 嘛用真濟無仝款的名義賣,但是𪜶攏使用仝款的基本核心,干焦周邊裝置佮記憶體的配搭無仝款。每一个系列的無仝晶片之間的相容性相當好,就算講輸出輸入控制器的配搭會有無仝。 閣較濟參見 # 外部連結一節內底佮 AVR 開發的相關站點。 ===功能特性=== ==編程介面== 有足濟種方法通共程式載入到 AVR 晶片上。無仝 AVR 家族系列的程式寫入方法攏有無仝。 ===高電壓平行=== 高電壓平行編程(High voltage parallel programming,HVPP)來做這个『上尾仔手節』來使用,亦可能是以歹去熔絲設定修復 AVR 晶片的唯一方法。 ===啟動載入程式(Bootloader)=== 大部份的 AVR 型號會當保留一个啟動載入程式區域,有兩百五十六个元組至四 KB 的大細,會當儲存真濟改編程的程式碼。佇咧復位了後,首先執行 bootloader,紲落終止一寡使用者運行的程式,當需要重新變做抑是跳轉去到主程式的時陣。佇任何介面會當用的時陣,程式碼便會當重新編程,像 PXE(預啟動執行環境)仝款,透過乙太網適配器能讀取加密處理的二進制資料。Atmel 有關於著誠濟匯流排介面的應用程式註解著原始碼。 ===ROM=== AT 九十 SC 系列的 AVR 晶片會使用原廠掩模 ROM 煞無愛使用快閃記憶體來做程式記持體。因為佇咧大批次生產是因為 AVR 的特定功能控制器的時陣,比起佇咧開發階段使用價數較懸的快閃記持體,佇生產的階段使用掩崁模 ROM 會當有效提懸成本效益。 ===aWire=== aWire 是一種新的單線除了毋著介面,可以新版 UC 三 L AVR 三十二裝置頂懸。 ==參見== * Arduino * AVR 三十二 ==參考資料== ==擴展閱讀== * _ Embedded C Programming and the Atmel AVR _ ; Richard H Barnett , Sarah Cox , Larry O'Cull ; 五百六十 pages ; 二千空六 ; ISBN 九百七十八石一孵四千一百八十二三千九百五十九石二 . * _ C Programming for Microcontrollers Featuring ATMEL's AVR Butterfly and WinAVR Compiler _ ; Joe Pardue ; 三百 pages ; 兩千空五 ; ISBN 九百七十八撨空九百七十六鼻六千八百二十二孵空空知二 . * _ Atmel AVR Microcontroller Primer : Programming and Interfacing _ ; Steven F Barrett , Daniel Pack , Mitchell Thornton ; 一百九十四 pages ; 兩千空七 ; ISBN 九百七十八八八百二十九九九五百四十一鼻著二 . * _ Arduino : A Quick Start Guide _ ; Maik Schmidt ; 兩百七十六 pages ; 二千空一十一 ; ISBN 九百七十八八八九十三石四千三百五十六鼻六十六鼻一 . ==外部連結== '''主要資源''' * Atmel 官方孵站 . [二千空一十一孵三孵二十八] .(原始內容存檔佇兩千空一十二分之一二十二)(英語). * Atmel AVR homepage * AVR-Libc homepage * AVR Freaks community * Atmel AVR Serial Port Programmer * Arduino community * 開放式 kha-tá-lok-guh 計畫中和 Atmel AVR 相關的內容,numerous AVR links * Why you need a clock source for the AVR ? * AVR Basics-AVR guide for beginners * Simplest AVR programmer Using LPT Port * Atmega 八 Breadboard Tutorial * AVR DIP-Package Pinout Diagrams : ATtiny 四十五分之四十四 / 八十五分之八十四 , ATmega 三百二八 P , ATmega 六百四十四 P , ATmega 一千兩百八十四 P * AVR TQFP-Package Pinout Diagrams : ATmega 三百二八 , ATmega 兩千五百六十 , ATmega 三十二 U 四 [[分類: 待校正]]
返回到「
AtmelAVR
」。