ATmega8是AVR系列(由Atmel公司于1996年開發(fā))的8位CMOS微控制器,基于RSIC(精簡指令集計(jì)算機(jī))架構(gòu),它的基本優(yōu)點(diǎn)是它不包含任何累加器,并且任何操作的結(jié)果都可以存儲(chǔ)在指令定義的任何寄存器中。
ATmega8 AVR微控制器的應(yīng)用也是非常的廣泛,而且現(xiàn)在仍然被用來當(dāng)做學(xué)習(xí)和研究高級(jí)微處理的基礎(chǔ)。ATmega8框圖如下圖所示:
內(nèi)存:
它由8KB的閃存、1KB的SRAM和512字節(jié)的 EEPROM 組成。8K Flash分為兩部分——下部分用作引導(dǎo)閃存部分,上部用作應(yīng)用閃存部分。SRAM包含1K字節(jié)以及1120字節(jié)的通用寄存器和I/O寄存器。低32個(gè)地址位置用于32個(gè)通用8位寄存器,接下來的64個(gè)地址用于I/O寄存器。另外,所有寄存器都直接連接到ALU,EEPROM用于存儲(chǔ)用戶定義的數(shù)據(jù)。
輸入/輸出端口
ATmega8由23個(gè)I/O線和3個(gè)I/O端口組成,分別命名為B、C和D。端口B由8個(gè)I/O線組成,端口C由7個(gè)I/O線組成,端口D由8個(gè)I/O組成線。
對應(yīng)于任何端口X(B,C或D)的寄存器是:
DDRX : 端口X數(shù)據(jù)方向寄存器。
PORTX : 端口X數(shù)據(jù)寄存器。
PINX : 端口X輸入寄存器。
定時(shí)器和計(jì)數(shù)器
ATmega8由3個(gè)具有可比模式的定時(shí)器組成,其中兩個(gè)是8位,而第三個(gè)是16位。
ATmega8包含內(nèi)部復(fù)位和振蕩器,可以消除對任何外部輸入的需求。內(nèi)部RC振蕩器能夠產(chǎn)生內(nèi)部時(shí)鐘,該時(shí)鐘可以按照編程在1MHz、2MHz、4MHz或8MHz的任何頻率下運(yùn)行。另外,它還支持最大頻率為16MHz的外部振蕩器。
ATmega8通過USART(Universal Synchronous和Asynchronous Receiver Transmitter)提供同步和異步數(shù)據(jù)傳輸方案,即與調(diào)制解調(diào)器和其他串行設(shè)備進(jìn)行通信。它還支持基于主從方式的設(shè)備間通信的SPI(串行外設(shè)接口),支持的另一種通信類型是 TWI(雙線接口),并且允許通過使用2根電線和一個(gè)公共接地連接在任何兩個(gè)設(shè)備之間進(jìn)行換向。
ATmega8還具有集成在芯片中的比較器模塊,用于在通過外部芯片連接到模擬比較器的兩個(gè)輸入端的兩個(gè)電壓之間進(jìn)行比較。
它還包含一個(gè)6通道ADC,其中4個(gè)具有10位精度,2個(gè)具有8位精度。
狀態(tài)寄存器:
ATmega8包含有關(guān)當(dāng)前執(zhí)行的算術(shù)指令集的信息。
引腳配置圖
ATmega8顯著特點(diǎn)之一是除了5個(gè)引腳外,所有其他引腳都支持兩個(gè)信號(hào)。
引腳23、24、25、26、27、28和1用于端口C,而引腳9、10、14、15、16、17、18、19用于端口B、引腳2、3、4, 5、6、11、12用于端口D。
引腳1也是復(fù)位引腳,如果施加的低電平信號(hào)持續(xù)時(shí)間超過最小脈沖長度,則會(huì)產(chǎn)生復(fù)位。
引腳2和3也用于USART的串行通信。
引腳4和5用作外部中斷,其中一個(gè)在狀態(tài)寄存器的中斷標(biāo)志位置位時(shí)觸發(fā),另一個(gè)在中斷條件成立時(shí)觸發(fā)。
引腳9和10用作外部振蕩器以及定時(shí)器計(jì)數(shù)器振蕩器,其中晶體直接連接在引腳之間。10腳用于晶振或低頻晶振,如果內(nèi)部校準(zhǔn)的RC振蕩器用作時(shí)鐘源并且異步定時(shí)器使能,則這些引腳可用作定時(shí)器振蕩器引腳。
引腳19用作主時(shí)鐘輸出,SPI通道的從時(shí)鐘輸入。
引腳18用作主時(shí)鐘輸入,從時(shí)鐘輸出。
引腳17用作主數(shù)據(jù)輸出,SPI通道的從數(shù)據(jù)輸入。它在由從機(jī)啟用時(shí)用作輸入,在由主機(jī)啟用時(shí)是雙向的。該引腳也可用作輸出比較匹配輸出,用作定時(shí)器/計(jì)數(shù)器比較匹配的外部輸出。
引腳16用作從機(jī)選擇輸入,通過將PB2引腳配置為輸出,它也可以用作定時(shí)器/計(jì)數(shù)器1比較匹配。
引腳15可用作定時(shí)器/計(jì)數(shù)器比較匹配A的外部輸出。
引腳23至28用于ADC通道。引腳27也可用作串行接口時(shí)鐘,引腳28可用作串行接口數(shù)據(jù)。
引腳13和12用作模擬比較器輸入。
引腳11和6用作定時(shí)器/計(jì)數(shù)器源。
睡眠模式
ATmega8微控制器以6種睡眠模式運(yùn)行,分別是:
空閑模式:它停止CPU的運(yùn)行,但允許SPI、USART、ADC、TWI、定時(shí)器/計(jì)數(shù)器和看門狗運(yùn)行并中斷系統(tǒng)。它是通過將MCU寄存器標(biāo)志的SM0到 SM2位設(shè)置為零來實(shí)現(xiàn)的。
ADC降噪模式:它會(huì)停止CPU,但允許ADC、外部中斷、定時(shí)器/計(jì)數(shù)器2和看門狗運(yùn)行。
掉電模式:它啟用外部中斷、2線串行接口、看門狗,同時(shí)禁用外部振蕩器,并且停止所有生成的時(shí)鐘。
省電模式:當(dāng)定時(shí)器/計(jì)數(shù)器異步計(jì)時(shí)時(shí)使用,它停止除clkASY之外的所有時(shí)鐘。
待機(jī)模式:在此模式下,允許振蕩器工作,停止所有其他操作。
主要應(yīng)用
下圖是使用ATmega8微控制器的閃爍LED。該程序使用C語言編寫,首先編譯為.c 文件。ATMEL軟件工具會(huì)將此文件轉(zhuǎn)換為二進(jìn)制ELF目標(biāo)文件,然后再次將其轉(zhuǎn)換為十六進(jìn)制文件,最后使用AVR dude程序?qū)⑹M(jìn)制文件傳遞給微控制器進(jìn)行處理。
總結(jié)
ATmega8微控制器采用Atmes高密度非易失性存儲(chǔ)器技術(shù)制造,閃存程序存儲(chǔ)器可以通過SPI串行接口、傳統(tǒng)的非volatle存儲(chǔ)器編程器或在虛擬現(xiàn)實(shí)內(nèi)核上運(yùn)行的片上引導(dǎo)程序在系統(tǒng)中重新編程。引導(dǎo)程序可以使用任何接口將應(yīng)用程序下載到應(yīng)用程序閃存中。當(dāng)應(yīng)用程序閃存部分更新時(shí),引導(dǎo)閃存部分中的軟件將繼續(xù)運(yùn)行,通過將8位RISC CPU與單片芯片上的系統(tǒng)內(nèi)自編程閃存相結(jié)合,證明了真正的邊讀邊寫操作。
AtmelAtmega8是一款功能強(qiáng)大的微控制器,為許多嵌入式控制應(yīng)用程序提供了高度靈活且經(jīng)濟(jì)高效的解決方案。Atmega8 AVR支持全套程序和系統(tǒng)開發(fā)工具,包括C編譯器、宏匯編程序、程序deb模擬器、電路內(nèi)仿真器和評估套件等。
評論