ATmegal62的特點及其在多種系統(tǒng)中的應(yīng)用
關(guān)鍵詞:ATmegal62;兼容性;液晶顯示器;無刷直流電機;異步串行通訊接口
1 引言
ATmegal62是ATMEL公司推出的一款基于AVR RISC的低功耗CMOS的8位單片機。AT-megal62通過在一個時鐘周期內(nèi)執(zhí)行一條指令,可以達到接近1 MIPS/MHz的性能,從而使設(shè)計人員可以在功耗和執(zhí)行速度之間取得平衡。AVR核將32個通用工作寄存器和豐富的指令集連接在一起。所有的工作寄存器都與ALU算術(shù)邏輯單元直接相連,允許在一個時鐘周期內(nèi)執(zhí)行單條指令,同時訪問兩個獨立的寄存器。這種結(jié)構(gòu)提高了代碼效率,使AVR得到了比普通CISC單片機高將近10倍的性能。本文采用ATmegal62開發(fā)了鍵盤-液晶顯示器、無位置傳感器兩相直流無刷電機和異步串行通訊口實現(xiàn)的數(shù)據(jù)采集發(fā)送三個系統(tǒng)。實驗證明,采用ATmegal62開發(fā)的這些系統(tǒng)性能可靠,成本較低,軟件設(shè)計靈活,硬件接口功能豐富,為今后系統(tǒng)升級創(chuàng)造了良好條件。
2 ATmegal62的結(jié)構(gòu)及特點
ATmegal62具有35個可編程的I/O口線,有40引腳PDIP、44引腳TQFP及44引腳MLF等多種封裝。4個8位雙向I/O 口 A、B、C、D,一個帶內(nèi)部上拉電阻的3位雙向I/O E口。
每個端口都有對應(yīng)的3個I/O端口寄存器,分別是數(shù)據(jù)寄存器PORTx、方向寄存器器DDRx和輸入引腳寄存器PINx。當(dāng)DDxn寫入0時,對應(yīng)的Pxn配置為輸入引腳,置PORTxn為1時,配置該引腳的內(nèi)部上拉電阻有效。當(dāng)DDxn為1時,對應(yīng)的Pxn配置為輸出引腳,POPTxn中的數(shù)據(jù)為外部引腳的輸出電平,即為1,端口引腳被強制驅(qū)動為高,輸出高電平(輸出電流);清零PORTxn,端口引腳被強制拉低,輸出低電平(吸入電流)。在復(fù)位過程中,即使在系統(tǒng)時鐘還未啟振的情況下,端口為三態(tài)口。還可以作為地址/數(shù)據(jù)復(fù)用口,提供ATmegal62的許多特殊接口功能。C口提供JTAG接口的功能。在允許JTAG接口狀態(tài)下,引腳PC7(TDI)、PC5(TMS)和PC4(TCK)的內(nèi)部上拉電阻總是處于有效方式(包括復(fù)位時)。
ATmegal62具有以下特點:16 KB且同時具有讀寫能力的可在線編程Flash;512B EEPROM;1 KBSRAM存儲器;35個通用I/O口;1個外部存儲器接口;32個通用工作寄存器;1個具有邊界掃描功能的JTAG接口;支持在線編譯、編程以及仿真調(diào)試;支持對Flash、EEPROM、芯片熔絲位和保密鎖定位的編程;4個具有比較模式的靈活的定時器/計數(shù)器,2個具有比較模式的帶預(yù)分頻器的8位定時器/計數(shù)器,2個帶預(yù)分頻器,具有比較、捕捉和捕獲模式的16位定時器/計數(shù)器,具有獨立振蕩器的實時計數(shù)器;6個PWM通道;內(nèi)外中斷源;上電復(fù)位和可編程的電壓檢測電路;內(nèi)部可校準的RC振蕩器;2個可編程的UART接口;具有內(nèi)部時鐘的可編程看門狗定時器;SPI串行接口;BOOT區(qū)具有獨立的加密位,可通過片內(nèi)的引導(dǎo)程序?qū)崿F(xiàn)在系統(tǒng)編程,寫操作時真正可讀;全靜態(tài)操作;片內(nèi)帶有執(zhí)行時間為2個時鐘周期的硬件乘法器;5種可通過軟件選擇的節(jié)電模式。
ATmegal62采用了ATMEL公司的高密度非易失性內(nèi)存技術(shù),片內(nèi)Flash可以通過SPI接口+通編程器,或通過JTAG接口,或使用自引導(dǎo)BOOT程序進行編程和自編程。利用自引導(dǎo)BOOT程序,可以使器件在工作過程中通過任一硬件串行通訊接口下載應(yīng)用程序,并寫入到Flash的應(yīng)用程序區(qū)中(IAP)。在更新Flash的應(yīng)用程序區(qū)代碼時,處在Flash的BOOT區(qū)中的自引導(dǎo)程序?qū)⒗^續(xù)執(zhí)行,實現(xiàn)了同時讀寫的功能。由于將增強的RISC 8位CPU與在系統(tǒng)編程和在應(yīng)用編程的Flash存儲器集成在一個芯片內(nèi),ATmegal62成為功能強大的單片機,為多嵌入式控制應(yīng)用提供了靈活而低成本的解決方案。
ATmegal62是AVR系列產(chǎn)品中配置比較高的單片機,是一種很復(fù)雜的微控制器,它的I/O地址取代了保留在AVR指令集中的64個I/O地址。為確保向后兼容ATmegal61,ATmegal62上所有的I/O的位置與ATmegal61相同。很多附加的I/O地址被加到一個$60$FF的擴展外部I/O空間中。這些地址只能用LD/LDS/LDD和ST/STS/STD指令訪問,而不能用IN和OUT指令。對于ATmegal61來說,存在內(nèi)部RAM空間的重定位的問題。同樣,如果代碼使用絕對地址,那么增加的中斷向量也是問題。要解決這些問題,可以通過編程熔絲M161C來選擇AT-megal61的兼容模式。在這一模式下,ATmegal62和ATmegal61之間則不存在這些差別。
(1)地址空間Ox0060-0x00FF用來擴展外部I/0,而不是內(nèi)部SRAM;
(2)地址空間0x0100—0x04FF用作內(nèi)部SRAM,因而外部存儲器從地址0x500開始(ATmegal61的外部存儲器從地址0x460開始);
(3)UART有一個輸入緩沖,允許在數(shù)據(jù)溢出標志(DOR)置l前接收多一個字節(jié)的數(shù)據(jù);
(4)去除擴展中斷向量。
ATmegal62與ATmegal61的引腳完全兼容,可以替代ATmegal61。但是這兩種器件的地址熔絲位和電特性不同。在ATmegal61的兼容模式下,AT-megal62不具備如下特性:
(1)USART的FIFO操作;
(2)定時器/計數(shù)器3;
(3)訪問系統(tǒng)時鐘預(yù)分頻器;
(4)Port A和Port C的引腳中斷;
(5)通過軟件改變WDT預(yù)分頻器設(shè)置時要遵循特定時序;
(6)M161C熔絲對中斷向量重新映射,使之與ATmegal61相同。
4 ATmegal62的工程應(yīng)用
4.1 ATmegal62與鍵盤及液晶顯示器的設(shè)計
鍵盤是各種CPU不可缺少的輸入工具,通過它可以輸入程序和數(shù)據(jù),從而實現(xiàn)人機對話。液晶顯示器(LCD)以其功耗低、體積小、顯示內(nèi)容豐富、超薄輕巧的優(yōu)點,得到越來越廣泛的應(yīng)用。DM12864是一種圖形點陣液晶顯示器,它采用動態(tài)驅(qū)動原理由行驅(qū)動控制器和列驅(qū)動器兩部分組成了128(列)×64(行)的全點陣液晶顯示,可顯示圖形和漢字。它能直接與單片機連接,具有專用指令,可方便地實現(xiàn)畫面卷動等功能。圖1為采用ATmegal62開發(fā)的鍵盤-液晶顯示應(yīng)用系統(tǒng)。鍵盤的接鍵排成3x4的矩陣形式,I/O口線PBl-PB3為輸入(設(shè)置為O),作為鍵盤的列掃描線;PB4-PB7為輸出(設(shè)置為1),作為鍵盤的行掃描線,并帶有上拉電阻。當(dāng)判斷有鍵按下時,延時去除鍵抖動,再次判斷閉合鍵的位置,若確實有鍵按下,計算鍵值并返回。液晶顯示器的工作電壓為+5V±10%;PC2作為寄存器數(shù)據(jù)/指令選擇信號D/I,當(dāng)D/I為1時,顯示數(shù)據(jù),D/I為0時,指令代碼;PC3作為讀/寫操作選擇信號R/W,R/W為l時,讀數(shù)據(jù)或指令,R/W為0時,寫數(shù)據(jù)或指令;PC0、PCI分別作為液晶的左右半屏片選信號CSl、CS2;復(fù)位信號RST與PEl連接,高電平復(fù)位DMl2864;PE0作為液晶的使能信號EN;PA作為并行數(shù)據(jù)總線DB,用于二者之間傳送數(shù)據(jù)。在讀/寫顯示數(shù)據(jù)到LCD之前,要對LCD進行忙標志位判別、顯示開關(guān)設(shè)置、顯示起始行設(shè)置、頁面地址設(shè)置和列地址設(shè)置。
在ATmegal62開發(fā)的鍵盤-液晶顯示系統(tǒng)中:
(1)由于ATmegal62 C口的PC4-PC7具有JTAG接口功能,因此不能再作為I/O輸出口,除非將熔絲位JTAGEN設(shè)置為l才可以作為I/O輸出口用;
(2)在選擇系統(tǒng)時鐘源時,要正確配置熔絲位,熔絲位決定著系統(tǒng)采用時鐘源的方式,不能通過普通的編程在MCU運行時更改,在調(diào)試之前應(yīng)根據(jù)所選時鐘源形式和喚醒方式,在仿真系統(tǒng)中正確配置熔絲位,使時鐘源與熔絲位匹配。
(3)在調(diào)試過程中,要求液晶LCD的驅(qū)動負電壓VDD-Vo=13 V,否則將無法正常顯示。
4.2 ATmegal62控制的兩相直流無刷電機
兩相直流無刷電機是一種結(jié)合了直流電機和交流電機優(yōu)點的改進型電機,采用無位置傳感器兩相直流無刷電動機控制技術(shù),可充分利用直流無刷電動機調(diào)速范圍寬、無位置傳感器和不易損壞的優(yōu)點,實現(xiàn)電動機的無級變速,噪聲低,運行效率、控制精度和可靠性高。圖2為采用ATmegal62控制兩相直流無刷電機的應(yīng)用實例。圖中ADCl測量電機的給定速度,在大多數(shù)裝置中,電機的速度是根據(jù)外部給定值調(diào)整的,給定值是一個模擬信號,因此需用ADC通道測量外部速度,PWM輸出要不斷地改變以減小電機的速度和外部給定值的差值。由于用內(nèi)部的ADC和PWM,不需要霍爾傳感器測量電機的轉(zhuǎn)速。ATmegal62的ADC(模/數(shù)轉(zhuǎn)換器)通道測量感應(yīng)電動勢,控制電機的換向,流過無源定子線圈的感應(yīng)電動勢決定電機的方向。通過改變PWM寄存器的值來控制PWM的占空比,從而形成脈寬隨著調(diào)制波變化而變化的PWM信號。用PWM信號控制功率開關(guān)的通斷來給電機電樞繞組供電,相電流的大小和傳送到電機電樞繞組的能量由功率開關(guān)的通斷時間決定,同時,相電流和傳送到電機的能量又決定著電機的轉(zhuǎn)矩和轉(zhuǎn)速,從而實現(xiàn)對轉(zhuǎn)速的閉環(huán)控制。
在ATmegal62控制無位置傳感器兩相直流無刷電機時:
(1)PWM控制電機的速度時,PWM的基頻必須大于20 kHz,驅(qū)動晶體管的耗散功率要根據(jù)PWM的開關(guān)頻率決定;
(2)在控制有源線圈的電壓時,PWM的基頻要接近于20 kHz;
(3)用ADC測量感應(yīng)電壓時,ADC的時鐘選擇應(yīng)確保ATmegal62有足夠的時間處理中斷。
4.3 異步串行通訊口數(shù)據(jù)的采集和發(fā)送
ATmegal62帶有兩個全雙工通用同步/異步串口,是區(qū)別于AVR系列器件的一個顯著特點,用戶可以以低成本更加靈活地進行設(shè)備間的數(shù)據(jù)通訊。ATmegal62的USARTn收發(fā)模塊分為三大部分:時鐘發(fā)生器、數(shù)據(jù)發(fā)送器和接收器。有三個完全獨立的中斷:TX發(fā)送完成,TX發(fā)送寄存器空和RX接收完成。最高波特率可達115 200 b/s,而且有專用的高精度波特率發(fā)生器,不占用定時器/計數(shù)器。圖3是用ATmegal62的異步串行通訊口實現(xiàn)數(shù)據(jù)的采集和發(fā)送的應(yīng)用實例,電機驅(qū)動器件SMD-401通過ATmegal62 PC口輸出的控制信號來控制步進電機的轉(zhuǎn)速和方向,步進電機帶動智能傳感器旋轉(zhuǎn),經(jīng)ATmegal62串口O的發(fā)送端輸出觸發(fā)信號觸發(fā)傳感器采集數(shù)據(jù),采集到的數(shù)據(jù)通過MAX232送到ATmegal62串口O的接收端,數(shù)據(jù)在ATmegal62中經(jīng)過必要的處理后由串口l經(jīng)過NAX488轉(zhuǎn)送到上位機。
在ATmegal62實現(xiàn)異步串行通訊口數(shù)據(jù)的采集和發(fā)送時,應(yīng)注意以下問題:
(1)所選器件不同,ICCAVR產(chǎn)生的源代碼不一定匹配,應(yīng)根據(jù)實際情況檢查初始化程序;
(2)ATmegal62的波特率寄存器UBRROH和USARTO的控制和狀態(tài)寄存器UCSROC共用同一個單元地址,如果不設(shè)定URSSEL0位,接收的波特率就會出錯;
(3)確保發(fā)送與接收的波特率相同或在容許的誤差范圍內(nèi),發(fā)送與接收要有相同的數(shù)據(jù)格式。
5 結(jié)束語
本文介紹了ATmegal62的特點及其在實際工程中的應(yīng)用實例。ATmegal62具有AVR系列其他器件的大部分其他器件功能,又具有獨特技術(shù),配置全、功能強、可靠性高、速度高、抗干擾性好、功耗低、性價比高、硬件結(jié)構(gòu)簡單、軟件設(shè)計靈活、適用面廣、價格低廉,具有一定的實用價值,在實際開發(fā)中將會發(fā)揮越來越大的作用。