下面就總結一下AVR單片機ATmega16的主要特點:
(注: 括號內有紅色 *x*符號的表示文章下方會有解釋/擴展)
1) 采用 RISC 結構的AVR內核單片機。
131 條機器指令, 大多數指令為單個系統時鐘周期執行的指令;
32 個 8 位通用工作寄存器;
全靜態工作方式(Fully Static OperaTIon)。 (*A*)
工作在 16 MHz 時具有 16 MIPS 的性能。(注:ATmega16L 系列最大工作頻率為 8 MHz);
內部配備有 2 個時鐘周期的硬件乘法器。
2)片內自帶大容量, 非易失的程序和數據存儲器 (*B*)
16KB 在線可編程(ISP,In-System Programming)Flash 程序存儲器(擦寫次數》10 000), 采用 Boot load 技術支持IAP(In-ApplicaTIon Programming)功能。
1KB片內 SRAM 數據存儲器, 可以實現 3 級鎖定的程序加密;
512 字節片內 ISP 的EEPROM 數據存儲器(擦鞋次數》100 000);
3) 片內含JTAG接口
支持符合 JTAG 標準(與IEEE 1149.1 標準兼容)的邊界掃描功能, 用于芯片檢測;
支持擴展的片內在線調試功能;
可通過 JTAG 接口對片內 Flash, EEPROM, 熔絲位和加密鎖定位實現下載編程; (*C*)
4) 外圍接口
2 個帶有分別獨立和可設置預分頻的 8 位定時/計數器;
1 個帶有可設置預分頻器, 具有比較, 捕捉功能的 16 位定時/計數器;
片內含獨立振蕩器的實時時鐘 RTC;
4 路 PWM 通道;
8 路 10 位 ADC;
面向字節的兩線接口 TWI(Two—Wire Serial Interface, 完全兼容 IIC 總線硬件接口);
1 個可編程, 增強型全雙工, 支持同步/異步通信的串行接口 USART;
1 個可工作于主機/從機模式的 SPI (Serial Peripheral Interface Bus)串行接口(支持 ISP 程序下載);
片內集成模擬比較器; (*D*)
片內含有可編程的具有獨立片內震蕩期的看門狗定時器 WDT;
5)其他特點
內含上電復位電路以及可編程的掉電檢測復位電路 BOD(Brown-out DetecTIon);
片內含有 1/2/4/8 MHz 經過標定的, 可校正的 RC 震蕩器, 可作為系統時鐘使用;
21 種內外部中斷源; (*E*)
6 種休眠模式(空閑模式、ADC 噪聲抑制模式、省電模式、掉電模式、Standby 模式以及
擴展的Standby 模式), 支持節電方式工作;
32 個可編程 I/O 口。 封裝方式有:40腳 PDIP 封裝, 44 腳 TQFP 封裝, 與44 腳的 MLF 封裝;(*F*)
工作電壓: ATmega16L 為 2.7~5.5V, ATmega16 為 4.5~5.5V;
運行速度: ATmega16L為 0~8MHz, ATmega16為0~16MHz;
功耗指標: ATmega16L 工作在 1MHz, 3V, 25攝氏度時:典型功耗為 1.1mA,空閑模式為 0.35mA,掉電模式為 《 1uA;
注釋A:
全靜態工作方式就是時鐘停止振蕩(而且手冊中也說了工作頻率是 0~8/16MHz), 但是寄存器和數據存儲器(ATmega16采用的是 SRAM 存儲器, 所以不必進行定時刷新)的數據不會丟失。 前提是你電源得存在, 不然就關機了不是?
注釋B:
Atmega16 單片機的 Flash 程序存儲器空間可以分為兩段: 引導程序段(Boot Program SecTIon)和應用程序段(Application Program section)。 兩段的讀/寫保護可以分別通過設置對應的鎖定位(Lock Bits)來實現。 在引導程序段內駐留的引導程序中, 可以使用 SPM 指令實現對應用程序段的寫操作(即實現 IAP 功能, 使系統能自懂更新系統程序)。 在 AVR 中, 所有的存儲空間都是線型的。 SRAM 可以通過 6 種不同的尋址方式進行訪問。(分別是: 數據存儲器空間直接/間接尋址, 帶后增/預減量的數據存儲器空間的寄存器間接尋址, 帶位移的數據存儲器空間的寄存器間接尋址, 數據存儲器空間堆棧寄存器 SP 間接尋址)。
注釋C:
熔絲是一個保護知識產權的設計。就是在特定的引腳上加上電壓,足夠的電流,就可以燒斷里邊的這根熔絲(AVR的熔絲可以多次編程, 并不是 OTP 熔絲),燒斷以后,片里的程序就不可以被讀出來也不能改寫了,只能用來運行。 通過設定和配置 AVR 單片機的熔絲位, 我們就可以使 AVR 具有不同特性的功能組合, 更加適合實際的使用和學習。 出廠時不同熔絲位的設定值是不同的, 一定要注意區分, 熔絲位的配置在 AVR 單片機中非常重要, 配置不好可能會鎖死單片機或者不能正常工作; 配置之前一定要對照datasheet 手冊仔細核對準; 一定要發篇博客總結學習下。
注釋D:
比較器是通過比較兩個輸入端的電流或電壓的大小,在輸出端輸出不同電壓結果的電子元件。比較器常被用于模數轉換電路中。 使用 AVR 的模擬比較器就可以構成 ADC 轉換器;AVR 單片機在復位后, 模擬比較器是處于允許工作狀態的。 如果不使用它, 就把寄存器 ACSR 的 ACD 位設置為 1, 以關閉模擬比較器減少電源消耗; 與其相關的寄存器是 SFIOR 和 ACSR. AVR 的模擬比較器是 AVR 的中斷源之一;
注釋E:
這 21 個內外部中斷源是(按優先級排序):
AVR單片機中斷向量區向量號Flash空間地址中斷源
中斷定義說明
1 $000RESET外部引腳電平引發的復位, 上電復位, 掉電檢測復位,
看門狗復位, JTAG AVR 復位 2 $002INT0外部中斷 0 3 $004INT1外部中斷 1 4 $006TIMER 2 COMP定時/計數器 2 比較匹配 5 $008TIMER 2 OVF定時/計數器 2 溢出 6 $00ATIMER 1 CAPT定時/計數器 1 事件捕捉 7 $00CTIMER 1 COMPA定時/計數器 1 比較匹配 A 8 $00ETIMER 1 COMPB定時/計數器 1 比較匹配 B 9 $010TIMER 1 OVF定時/計數器 1 溢出 10 $012TIMER 0 OVF定時/計數器 0 溢出 11 $014SPI STCSPI 串行傳輸結束 12 $016USART RXCUSART, 接收結束 13 $018USART UXREUSART, 數據寄存器空 14 $01AUSART TXCUSART, 發送結束 15 $01CADCA/C 轉換結束 16 $01EEE_RDYEEPROM 就緒 17 $020ANA_COMP模擬比較器 18 $022TWI兩線串行接口 19 $024INT2外部中斷請求 2 20 $026TIMER 0 COMP定時/計數器 0 比較匹配 21 $028SPM_RDY保存程序存儲器內容就緒
中斷向量區大小 = 中斷源個數 X 每個中斷向量占據字數
其中中斷還分為可屏蔽中斷和不可屏蔽中斷(AVR 中復位為唯一一個不可屏蔽的中斷)。
注釋F:
AVR 單片機的 I/O 口共 32 個, 分為 4 組端口, 每組 8 個;4 個端口的第一功能是通用的雙向 I/O 口, 每位都要通過指令設置為獨立的輸入/輸出口。 設置為輸入時內部自帶有上拉電阻, 這些內部上拉可以通過編程設置為有效或者無效。 當輸出高電平時, 可輸出 20mA 的電流, 而當輸出低電平時,可以吸收 40mA 的電流。 因此 AVR 可以直接驅動數碼管和 LED 發光二極管。 另外要注意的就是, AVR 單片在復位后, 所有的 I/O 口都是默認為輸入方式的, 上拉電阻無效, 即I/O為輸入高阻的三態狀態。 I/O空間為連續的 64 個 I/O 寄存器空間, 他們分別對應單片機各個外圍功能的控制和數據寄存器地址。 I/O 寄存器空間可使用 I/O 寄存器訪問指令直接訪問, 也可將其映射為通用工作寄存器組后的數據存儲器空間, 使用數據存儲器訪問指令進行操作。 I/O 寄存器空間在數據存儲器空間的映射地址為 $020--&05F.
下圖是 AVR 單片機的內部結構框圖:
來源;21ic