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