當前位置:首頁 > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]ATmega 16單片機的EEPROM存儲器的相關(guān)寄存器(三)EEPROM存儲器的相關(guān)寄存器1.EEARH、EEARL——EEPROM地址寄存器2.EEDR——EEPROM數(shù)據(jù)寄存器3.EECR&mdas

ATmega 16單片機的EEPROM存儲器的相關(guān)寄存器(三)

EEPROM存儲器的相關(guān)寄存器

1.EEARH、EEARL——EEPROM地址寄存器

2.EEDR——EEPROM數(shù)據(jù)寄存器

3.EECR——EEPROM控制寄存器

—— —— —— —— EERIE EEMWE EEWE EERE

位 7..4——Res:保留

保留位,讀操作返回值為零。

位 3——EERIE:EEPROM中斷準備好使能

若SREG的I為"1",則置位EERIE將使能EEPROM準備好中斷。清零EERIE則禁止此中斷。當I=EERIE=1且EEWE清零時,則單片機產(chǎn)生一個中斷表示寫操作完成。

位2——EEMWE:EEPROM主機寫使能

EEMWE決定了EEWE置位是否可以啟動EEPROM寫操作。當EEMWE為"1"時,在4個時鐘周期內(nèi)置位EEWE將把數(shù)據(jù)寫入EEPROM的指定地址。若EEMWE為"0“,則操作EEWE不起作用。EEMWE置位后4個周期,硬件對其清零。

位 1——EEWE:EEPROM寫使能

EEWE為EEPROM寫操作的使能信號。當EEPROM數(shù)據(jù)和地址設(shè)置好之后,需置位EEWE以便將數(shù)據(jù)寫EEPROM。此時EEMWE必須置位,否則EEPROM寫操作將不會發(fā)生。寫時序如下(第3步和第4步的次序并不重要):

(1).等待EEWE位變?yōu)榱?/p>

(2).等待SPMCSR中的SPMEN位變?yōu)榱?/p>

(3).將新的EEPROM地址寫入EEAR(可選)

(4).將新的EEPROM數(shù)據(jù)寫入EEDR(可選)

(5).對EECR寄存器的EEMWE寫"1",同時清零EEWE

(6).在置位EEMWE的4個周期內(nèi),置位EEWE

注意:在EEMWE置位后的2.5-4ms后,EEEWE被硬件清零,用戶可以通過查詢此位判斷寫操作是否完成。如果在步驟5和6之間發(fā)生了中斷,寫操作將失敗。因為此時EEPROM寫使能操作將超時。如果一個操作EEPROM的中斷打斷了另一個EEPROM操作,EEAR或EEDR寄存器可能被修改,引起EEPROM操作失敗。建議此時關(guān)閉全局中斷標志I。

ATmega 16 單片機的模擬比較器的相關(guān)寄存器(四)

1.SFIOR——特殊功能IO寄存器

ADTS2 ADTS1 ADTS0 – ACME PUD PSR2 PSR10

位3——ACME:模擬比較器多路復(fù)用器使能

當此位為邏輯"1”,且ADC處于關(guān)閉狀態(tài)(ADCSRA寄存器的ADEN為"0”)時,ADC多路復(fù)用器為模擬比較器選擇負極輸入。當此位為"0”時,AIN1連接到比較器的負極輸入端。

2.ACSR——模擬比較器控制和狀態(tài)寄存器

ACD ACBG ACO ACI ACIE ACIC ACIS1 ACIS0

位7——ACD:模擬比較器禁用

ACD置位時,模擬比較器的電源被切斷??梢栽谌魏螘r候設(shè)置此位來關(guān)掉模擬比較器。這可以減少器件工作模式及空閑模式下的功耗。改變ACD位時,必須清零ACSR寄存器的ACIE位來禁止模擬比較器中斷。否則ACD改變時可能會產(chǎn)生中斷。

位6——ACBG:選擇模擬比較器的能隙基準源

ACBG置位后,模擬比較器的正極輸入由能隙基準源所取代。否則,AIN0連接到模擬比

較器的正極輸入。能隙基準電壓在1.15-1.35V之間,典型值為1.23V。

位 5——ACO:模擬比較器輸出

模擬比較器的輸出經(jīng)過同步后直接連到ACO。同步機制引入了1-2個時鐘周期的延時。

位4——ACI:模擬比較器中斷標志

當比較器的輸出事件觸發(fā)了由ACIS1及ACIS0定義的中斷模式時,ACI置位。如果ACIE和SREG寄存器的全局中斷標志I也置位,那么模擬比較器中斷服務(wù)程序即得以執(zhí)行,同時ACI被硬件清零。ACI也可以通過寫"1”來清零。

位 3——ACIE:模擬比較器中斷使能

當ACIE位被置"1”且狀態(tài)寄存器中的全局中斷標志I也被置位時,模擬比較器中斷被激活。否則中斷被禁止。

位 2——ACIC:模擬比較器輸入捕捉使能

ACIC置位后允許通過模擬比較器來觸發(fā)T/C1的輸入捕捉功能。此時比較器的輸出被直接連接到輸入捕捉的前端邏輯,從而使得比較器可以利用T/C1輸入捕捉中斷邏輯的噪聲抑制器及觸發(fā)沿選擇功能。ACIC為"0”時模擬比較器及輸入捕捉功能之間沒有任何聯(lián)系。為了使比較器可以觸發(fā)T/C1的輸入捕捉中斷,定時器中斷屏蔽寄存器TIMSK的TICIE1必須置位。

位 1:0–ACIS[1:0]:模擬比較器中斷模式選擇

這兩位確定觸發(fā)模擬比較器中斷的事件。需要改變設(shè)置時,必須清零ACSR寄存器中的中斷使能位ACIE以禁止中斷,避免修改設(shè)置時產(chǎn)生不必要的中斷。

ACIS1 ACIS0 中斷模式

0 0 比較器輸出變化即可觸發(fā)中斷

0 1 保留

1 0 比較器輸出的下降沿產(chǎn)生中斷

1 1 比較器輸出的上升沿產(chǎn)生中斷

ATmega 16 單片機的A/D轉(zhuǎn)換器的相關(guān)寄存器(五)

1.ADMUX——ADC多工選擇寄存器

REFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0

位 7:6——REFS[1:0]:參考電壓選擇

通過這2位可以選擇參考電壓。如果在轉(zhuǎn)換過程中改變了它們的設(shè)置,只有等到當前轉(zhuǎn)換結(jié)束(ADCSRA寄存器的ADIF置位)之后改變才會起作用。如果在AREF引腳上施加了外部參考電壓,內(nèi)部參考電壓就不能被選用了。

REFS1 REFS0 參考電壓選擇

0 0 AREF,內(nèi)部Vref關(guān)閉

0 1 AVCC,AREF引腳外加濾波電容

1 0 保留

1 1 2.56V的片內(nèi)基準電壓源,AREF引腳外加濾波電容

位 5——ADLAR:ADC轉(zhuǎn)換結(jié)果左對齊

ADLAR影響ADC轉(zhuǎn)換結(jié)果在ADC數(shù)據(jù)寄存器中的存放形式。ADLAR置位時轉(zhuǎn)換結(jié)果為左對齊,否則為右對齊。ADLAR的改變將立即影響ADC數(shù)據(jù)寄存器的內(nèi)容,不論是否有轉(zhuǎn)換正在進行。

位4:0–MUX[4:0]:模擬通道與增益選擇位

通過這幾位的設(shè)置,可以對連接到ADC的模擬輸入進行選擇。也可對差分通道增益進行選擇。如果在轉(zhuǎn)換過程中改變這幾位的值,那么只有到轉(zhuǎn)換結(jié)束(ADCSRA寄存器的ADIF置位)后新的設(shè)置才有效。

MUX[4..0] 單端輸入 正差分輸入 負差分輸入 增益

[!--empirenews.page--]

00000 ADC0

00001 ADC1

00010 ADC2

00011 ADC3 N/A

00100 ADC4

00101 ADC5

00110 ADC6

00111 ADC7

01000 ADC0 ADC0 10x

01001 ADC1 ADC0 10x

01010 ADC0 ADC0 200x

01011 ADC1 ADC0 200x

01100 ADC2 ADC2 10x

01101 ADC3 ADC2 10x

01110 ADC2 ADC2 200x

01111 ADC3 ADC2 200x

10000 ADC0 ADC1 1x

10001 ADC1 ADC1 1x

10010 N/A ADC2 ADC1 1x

10011 ADC3 ADC1 1x

10100 ADC4 ADC1 1x

10101 ADC5 ADC1 1x

10110 ADC6 ADC1 1x

10111 ADC7 ADC1 1x

11000 ADC0 ADC2 1x

11001 ADC1 ADC2 1x

11010 ADC2 ADC2 1x

11011 ADC3 ADC2 1x

11100 ADC4 ADC2 1x

11101 ADC5 ADC2 1x

11110 1.22 V(V) N/A

11111 0 V(GND)

2.ADCSRA——ADC控制和狀態(tài)寄存器A

ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0

位7——ADEN:ADC使能

ADEN置位即啟動ADC,否則ADC功能關(guān)閉。在轉(zhuǎn)換過程中關(guān)閉ADC將立即中止正在進行的轉(zhuǎn)換。

位 6——ADSC:ADC開始轉(zhuǎn)換

在單次轉(zhuǎn)換模式下,ADSC置位將啟動一次ADC轉(zhuǎn)換。在連續(xù)轉(zhuǎn)換模式下,ADSC置位將啟動首次轉(zhuǎn)換。第一次轉(zhuǎn)換(在ADC啟動之后置位ADSC,或者在使能ADC的同時置位ADSC)需要25個ADC時鐘周期,而不是正常情況下的13個。第一次轉(zhuǎn)換執(zhí)行ADC初始化的工作。在轉(zhuǎn)換進行過程中讀取ADSC的返回值為"1”,直到轉(zhuǎn)換結(jié)束。ADSC清零不產(chǎn)生任何動作。

位5——ADATE:ADC自動觸發(fā)使能

ADATE置位將啟動ADC自動觸發(fā)功能。觸發(fā)信號的上跳沿啟動ADC轉(zhuǎn)換。觸發(fā)信號源通過SFIOR寄存器的ADC觸發(fā)信號源選擇位ADTS設(shè)置。

位4——ADIF:ADC中斷標志

在ADC轉(zhuǎn)換結(jié)束,且數(shù)據(jù)寄存器被更新后,ADIF置位。如果ADIE及SREG中的全局中斷使能位I也置位,ADC轉(zhuǎn)換結(jié)束中斷服務(wù)程序即得以執(zhí)行,同時ADIF硬件清零。此外,還可以通過向此標志寫1來清ADIF。要注意的是,如果對ADCSRA進行讀-修改-寫操作,那么待處理的中斷會被禁止。這也適用于SBI及CBI指令。

位 3——ADIE:ADC中斷使能

若ADIE及SREG的位I置位,ADC轉(zhuǎn)換結(jié)束中斷即被使能。

位 2:0——ADPS[2:0]:ADC預(yù)分頻器選擇位

由這3位來確定XTAL與ADC輸入時鐘與CPU時鐘之間的分頻因子。

ADPS2 ADPS1 ADPS0 分頻因子

0 0 0 2

0 0 1 2

0 1 0 4

0 1 1 8

1 0 0 16

1 0 1 32

1 1 0 64

1 1 1 128

3.ADCL、ADCH——ADC數(shù)據(jù)寄存器

4.SFIOR——特殊功能IO寄存器

ADTS2 ADTS1 ADTS0 – ACME PUD PSR2 PSR10

位 7:5–ADTS[2:0]:ADC自動觸發(fā)源

若ADCSRA寄存器的ADATE置位,ADTS的值將確定觸發(fā)ADC轉(zhuǎn)換的觸發(fā)源;否則,ADTS的設(shè)置沒有意義。被選中的中斷標志在其上升沿觸發(fā)ADC轉(zhuǎn)換。從一個中斷標志清零的觸發(fā)源切換到中斷標志置位的觸發(fā)源會使觸發(fā)信號產(chǎn)生一個上升沿。如果此時ADCSRA寄存器的ADEN為1,ADC轉(zhuǎn)換即被啟動。切換到連續(xù)運行模式(ADTS[2:0]=0)

時,即使ADC中斷標志已經(jīng)置位也不會產(chǎn)生觸發(fā)事件。

ADTS2 ADTS1 ADTS0 觸發(fā)源

0 0 0 連續(xù)轉(zhuǎn)換模式

0 0 1 模擬比較器

0 1 0 外部中斷請求0

0 1 1 定時器/計數(shù)器0比較匹配

1 0 0 定時器/計數(shù)器0溢出

1 0 1 定時器/計數(shù)器比較匹配B

1 1 0 定時器/計數(shù)器1溢出

1 1 1 定時器/計數(shù)器1捕捉事件

ATmega 16 單片機的TWI接口的相關(guān)寄存器(六)

1.TWBR——TWI比特率寄存器

TWBR為比特率發(fā)生器分頻因子。比特率發(fā)生器是一個分頻器,在主機模式下產(chǎn)生SCL時鐘頻率。當TWI工作于從機模式時,不需要設(shè)定比特率寄存器或預(yù)分頻系數(shù),但從機的CPU頻率必須大于TWI時鐘線SCL頻率的16倍。

f

f=—————————————

16+2*TWBR*4(TWPS)

注意:為了保持偉輸?shù)姆€(wěn)定,TWI工作在主機模式時TWBR的值不小于10。

2.TWCR——TWI控制寄存器

TWINT TWEA TWSTA TWSTO TWWC TWEN – TWIE

TWCR用來控制TWI操作。它用來使能TWI,通過施加START到總線上來啟動主機訪問,產(chǎn)生接收器應(yīng)答,產(chǎn)生STOP狀態(tài),以及在寫入數(shù)據(jù)到TWDR寄存器時控制總線的暫停等。這個寄存器還可以給出在TWDR無法訪問期間,試圖將數(shù)據(jù)寫入到TWDR而引起的寫入沖突信息。

位 7——TWINT:TWI中斷標志

當TWI完成當前工作,希望應(yīng)用程序介入時TWINT置位。若SREG的I標志以及TWCR寄存器的TWIE標志也置位,則MCU執(zhí)行TWI中斷例程。當TWINT置位時,SCL信號的低電平被延長。TWINT標志的清零必須通過軟件寫"1”來完成。執(zhí)行中斷時硬件不會自動將其改寫為"0”。要注意的是,只要這一位被清零,TWI立即開始工作。因此,在清零TWINT之前一定要首先完成對地址寄存器TWAR,狀態(tài)寄存器TWSR,以及數(shù)據(jù)寄存器TWDR的訪問。

位 6——TWEA:使能TWI應(yīng)答

TWEA標志控制應(yīng)答脈沖的產(chǎn)生。若TWEA置位,出現(xiàn)如下條件時接口發(fā)出ACK脈沖:

(1).器件的從機地址與主機發(fā)出的地址相符合

(2).TWAR的TWGCE置位時接收到廣播呼叫

(3).在主機/從機接收模式下接收到一個字節(jié)的數(shù)據(jù)

(4).將TWEA清零可以使器件暫時脫離總線。置位后器件重新恢復(fù)地址識別。

位 5——TWSTA:TWI START狀態(tài)標志

當CPU希望自己成為總線上的主機時需要置位TWSTA。TWI硬件檢測總線是否可用。若總線空閑,接口就在總線上產(chǎn)生START狀態(tài)。若總線忙,接口就一直等待,直到檢測到一個STOP狀態(tài),然后產(chǎn)生START以聲明自己希望成為主機。發(fā)送START之后軟件必須清零TWSTA。[!--empirenews.page--]

位 4——TWSTO:TWI STOP狀態(tài)標志

在主機模式下,如果置位TWSTO,TWI接口將在總線上產(chǎn)生STOP狀態(tài),然后TWSTO自動清零。在從機模式下,置位TWSTO可以使接口從錯誤狀態(tài)恢復(fù)到未被尋址的狀態(tài)。此時總線上不會有STOP狀態(tài)產(chǎn)生,但TWI返回一個定義好的未被尋址的從機模式且釋放SCL與SDA為高阻態(tài)。

位 3——TWWC:TWI寫碰撞標志

當TWINT為低時寫數(shù)據(jù)寄存器TWDR將置位TWWC。當TWINT為高時,每一次對TWDR的寫訪問都將更新此標志。

位 2——TWEN:TWI使能

TWEN位用于使能TWI操作與激活TWI接口。當TWEN位被寫為"1”時,TWI引腳將I/O引腳切換到SCL與SDA引腳,使能波形斜率限制器與尖峰濾波器。如果該位清零,TWI接口模塊將被關(guān)閉,所有TWI傳輸將被終止。

位1——Res:保留

保留,讀返回值為”0”。

位 0——TWIE:使能TWI中斷

當SREG的I以及TWIE置位時,只要TWINT為"1”,TWI中斷就激活。

3.TWSR——TWI狀態(tài)寄存器

位 [7..3]——TWS:TWI狀態(tài)

這5位用來反映TWI邏輯和總線的狀態(tài)。不同的狀態(tài)代碼將會在后面的部分描述。注意從TWSR讀出的值包括5位狀態(tài)值與2位預(yù)分頻值。檢測狀態(tài)位時設(shè)計者應(yīng)屏蔽預(yù)分頻位為"0”。這使狀態(tài)檢測獨立于預(yù)分頻器設(shè)置。

位 2——Res:保留

保留,讀返回值為"0”。

位[ 1..0]——TWPS:TWI預(yù)分頻位

這兩位可讀/寫,用于控制比特率預(yù)分頻因子。

TWPS1 TWPS0 預(yù)分頻器值

0 0 1

0 1 4

1 0 16

1 1 64

4.TWDR——TWI數(shù)據(jù)寄存器

位 [7..0[——TWD:TWI數(shù)據(jù)寄存器

根據(jù)狀態(tài)的不同,其內(nèi)容為要發(fā)送的下一個字節(jié),或是接收到的數(shù)據(jù)。

5.TWAR——TWI地址寄存器

位[7..1]——TWA:TWI從機地址寄存器

其值為從機地址。

位0——TWGCE:使能TWI廣播識別

置位后MCU可以識別TWI總線廣播。

ATmega 16 單片機的WDT定時器的相關(guān)寄存器(七)

1.WDTCR——看門狗定時器控制寄存器

– – – WDTOE WDE WDP2 WDP1 WDP0

位[7..5]——Res:保留位

ATmega16保留位,讀操作返回值為零。

位 4——WDTOE:看門狗修改使能

清零WDE時必須置位WDTOE,否則不能禁止看門狗。一旦置位,硬件將在緊接的4個時鐘周期之后將其清零。

位 3——WDE:使能看門狗

WDE為"1“時,看門狗使能,否則看門狗將被禁止。只有在WDTOE為"1“時WDE才能清零。以下為關(guān)閉看門狗的步驟:

(1).在同一個指令內(nèi)對WDTOE和WDE寫"1“,即使WDE已經(jīng)為"1“

(2).在緊接的4個時鐘周期之內(nèi)對WDE寫"0”

位 [2..0]——WDP2,WDP1,WDP0::看門狗定時器預(yù)分頻器2,1和0

WDP2、WDP1和WDP0決定看門狗定時器的預(yù)分頻系數(shù)。

WDP2 WDP1 WDP0 看門狗振蕩器周期 VCC=3.0V時典型的溢出周期 VCC=5.0V時典型的溢出周期

0 0 0 16K(16,384) 17.1 ms 16.3 ms

0 0 1 32K(32,768) 34.3 ms 32.5 ms

0 1 0 64K(65,536) 68.5 ms 65 ms

0 1 1 128K(131,072) 0.14 s 0.13 s

1 0 0 256K(262,144) 0.27 s 0.26 s

1 0 1 512K(524,288) 0.55 s 0.52 s

1 1 0 1,024K(1,048,576) 1.1 s 1.0 s

1 1 1 2,048K(2,097,152) 2.2 s 2.1 s

ATmega 16 單片機的中斷系統(tǒng)的相關(guān)寄存器(八)

復(fù)位和中斷向量

向量號 程序地址 中斷源 中斷定義

1 0x000 RESET 外部引腳電平引發(fā)的,上電的,掉電檢測的,看門狗,及JTAG AVR復(fù)位

2 0x002 INT0 外部中斷請求0中斷

3 0x004 INT1 外部中斷請求1中斷

4 0x006 TIMER2 COMP定時器/計數(shù)器2比較匹配中斷

5 0x008 TIMER2 OVF定時器/計數(shù)器2溢出中斷

6 0x00A TIMER1 CAPT定時器/計數(shù)器1事件捕捉中斷

7 0x00C TIMER1 COMPA定時器/計數(shù)器1比較匹配A中斷

8 0x00E TIMER1 COMPB定時器/計數(shù)器1比較匹配B中斷

9 0x010 TIMER1 OVF定時器/計數(shù)器1溢出中斷

10 0x012 TIMER0 OVF定時器/計數(shù)器0溢出中斷

11 0x014 SPI_STC SPI串行傳輸結(jié)束中斷

12 0x016 USART_RXC USART接收結(jié)束中斷

13 0x018 USART_UDRE USART數(shù)據(jù)寄存器空

14 0x01A USART_TXC USART發(fā)送結(jié)束中斷

15 0x01C ADC ADC轉(zhuǎn)換結(jié)束中斷

16 0x01E EE_RDY EEPROM就緒中斷

17 0x020 ANA_COMP 模擬比較器中斷

18 0x022 TWI 兩線串行接口中斷

19 0x024 INT2 外部中斷請求2中斷

20 0x026 TIMER0_COMP 定時器/計數(shù)器0比較匹配中斷

21 $028 SPM_RDY 保存程序存儲器內(nèi)容就緒

復(fù)位和中斷向量位置的確定

BOOTRST IVSEL 復(fù)位地址 中斷向量起始地址

1 0 0x0000 0x0002

1 1 0x0000 Boot區(qū)復(fù)位地址+0x0002

0 0 Boot Reset Address 0x0002

0 1 Boot Reset Address Boot區(qū)復(fù)位地址+0x0002

1.MCUCR——MCU控制寄存器

SM2 SE SM1 SM0 ISC11 ISC10 ISC01 ISC00

位3,2——ISC11,ISC10:中斷觸發(fā)方式控制1 位1與位0

外部中斷1由引腳INT1激發(fā),如果SREG寄存器的I標志位和相應(yīng)的中斷屏蔽位置位的話。在檢測邊沿前MCU首先采樣INT1引腳上的電平。如果選擇了邊沿觸發(fā)方式或電平變化觸發(fā)方式,那么持續(xù)時間大于一個時鐘周期的脈沖將觸發(fā)中斷,過短的脈沖則不能保證觸發(fā)中斷。如果選擇低電平觸發(fā)方式,那么低電平必須保持到當前指令執(zhí)行完成。

ISC11 ISC10 說明

0 0 INT1為低電平時產(chǎn)生中斷請求

0 1 INT1引腳上任意的邏輯電平變化都將引發(fā)中斷[!--empirenews.page--]

1 0 INT1的下降沿產(chǎn)生異步中斷請求

1 1 INT1的上升沿產(chǎn)生異步中斷請求

位1,0–ISC01,ISC00:中斷0觸發(fā)方式控制位 1與位0

外部中斷0由引腳INT0激發(fā),如果SREG寄存器的I標志位和相應(yīng)的中斷屏蔽位置位的話。在檢測邊沿前MCU首先采樣INT0引腳上的電平。如果選擇了邊沿觸發(fā)方式或電平變化觸發(fā)方式,那么持續(xù)時間大于一個時鐘周期的脈沖將觸發(fā)中斷,過短的脈沖則不能保證觸發(fā)中斷。如果選擇低電平觸發(fā)方式,那么低電平必須保持到當前指令執(zhí)行完成。

ISC01 ISC00 說明

0 0 INT0為低電平時產(chǎn)生中斷請求

0 1 INT0引腳上任意的邏輯電平變化都將引發(fā)中斷

1 0 INT0的下降沿產(chǎn)生異步中斷請求

1 1 INT0的上升沿產(chǎn)生異步中斷請求

2.MCUCSR——MCU控制與狀態(tài)寄存器

JTD ISC2 – JTRF WDRF BORF EXTRF PORF

位6——ISC2:中斷2觸發(fā)方式控制

異步外中斷2由外部引腳INT2激活,如果SREG寄存器的I標志和GICR寄存器相應(yīng)的中斷屏蔽位置位的話。若ISC2寫0,INT2的下降沿激活中斷。若ISC2寫1,INT2的上升沿激活中斷。INT2的邊沿觸發(fā)方式是異步的。只要INT2引腳上產(chǎn)生寬度大于Table 36所示數(shù)據(jù)的脈沖就會引發(fā)中斷。若選擇了低電平中斷,低電平必須保持到當前指令完成,

然后才會產(chǎn)生中斷。而且只要將引腳拉低,就會引發(fā)中斷請求。改變ISC2時有可能發(fā)生中斷。因此建議首先在寄存器GICR里清除相應(yīng)的中斷使能位INT2,然后再改變ISC2。最后,不要忘記在重新使能中斷之前通過對GIFR寄存器的相應(yīng)中斷標志位INTF2寫'1’其清零。

3.GICR——通用中斷控制寄存器

INT1 INT0 INT2 – – – IVSEL IVCE

位7——INT1:使能外部中斷請求1

當INT1為'1’,而且狀態(tài)寄存器SREG的I標志置位,相應(yīng)的外部引腳中斷就使能了。MCU通用控制寄存器–MCUCR的中斷敏感電平控制1位1/0(ISC11與ISC10)決定中斷是由上升沿、下降沿,還是INT1電平觸發(fā)的。只要使能,即使INT1引腳被配置為輸出,只要引腳電平發(fā)生了相應(yīng)的變化,中斷將產(chǎn)生。

位6——INT0:使能外部中斷請求0

當INT0為'1’,而且狀態(tài)寄存器SREG的I標志置位,相應(yīng)的外部引腳中斷就使能了。MCU通用控制寄存器–MCUCR的中斷敏感電平控制0位1/0(ISC01與ISC00)決定中斷是由上升沿、下降沿,還是INT0電平觸發(fā)的。只要使能,即使INT0引腳被配置為輸出,只要引腳電平發(fā)生了相應(yīng)的變化,中斷將產(chǎn)生。

位 5——INT2:使能外部中斷請求2

當INT2為'1’,而且狀態(tài)寄存器SREG的I標志置位,相應(yīng)的外部引腳中斷就使能了。MCU通用控制寄存器–MCUCR的中斷敏感電平控制2位1/0(ISC2與ISC2)決定中斷是由上升沿、下降沿,還是INT2電平觸發(fā)的。只要使能,即使INT2引腳被配置為輸出,只要引腳電平發(fā)生了相應(yīng)的變化,中斷將產(chǎn)生。

4.GIFR——通用中斷標志寄存器

INTF1 INTF0 INTF2 – – – – –

位 7——INTF1:外部中斷標志1

INT1引腳電平發(fā)生跳變時觸發(fā)中斷請求,并置位相應(yīng)的中斷標志INTF1。如果SREG的位I以及GICR寄存器相應(yīng)的中斷使能位INT1為”1”,MCU即跳轉(zhuǎn)到相應(yīng)的中斷向量。進入中斷服務(wù)程序之后該標志自動清零。此外,標志位也可以通過寫入”1”來清零。

位6——INTF0:外部中斷標志0

INT0引腳電平發(fā)生跳變時觸發(fā)中斷請求,并置位相應(yīng)的中斷標志INTF0。如果SREG的位I以及GICR寄存器相應(yīng)的中斷使能位INT0為”1”,MCU即跳轉(zhuǎn)到相應(yīng)的中斷向量。進入中斷服務(wù)程序之后該標志自動清零。此外,標志位也可以通過寫入”1”來清零。

位 5——INTF2:外部中斷標志2

INT2引腳電平發(fā)生跳變時觸發(fā)中斷請求,并置位相應(yīng)的中斷標志INTF2。如果SREG的位I以及GICR寄存器相應(yīng)的中斷使能位INT2為”1”,MCU即跳轉(zhuǎn)到相應(yīng)的中斷向量。進入中斷服務(wù)程序之后該標志自動清零。此外,標志位也可以通過寫入”1”來清零。注意,當INT2中斷禁用進入某些休眠模式時,該引腳的輸入緩沖將禁用。這會導(dǎo)致INTF2標志設(shè)置信號的邏輯變化。

ATmega 16 單片機的SPI的相關(guān)寄存器(九)

1.SPCR——SPI控制寄存器

SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0

位 7——SPIE:使能SPI中斷

置位后,只要SPSR寄存器的SPIF和SREG寄存器的全局中斷使能位置位,就會引發(fā)SPI中斷。

位 6——SPE:使能SPI

SPE置位將使能SPI。進行任何SPI操作之前必須置位SPE。

位 5——DORD:數(shù)據(jù)次序

DORD置位時數(shù)據(jù)的LSB首先發(fā)送;否則數(shù)據(jù)的MSB首先發(fā)送。

位 4——MSTR:主/從選擇

MSTR置位時選擇主機模式,否則為從機。如果MSTR為"1”,SS配置為輸入,但被拉低,則MSTR被清零,寄存器SPSR的SPIF置位。用戶必須重新設(shè)置MSTR進入主機模式。

位3——CPOL:時鐘極性

CPOL置位表示空閑時SCK為高電平;否則空閑時SCK為低電平。CPOL功能總結(jié)如下:

CPOL 起始沿 結(jié)束沿

0 上升沿 下降沿

1 下降沿 上升沿

位 2——CPHA:時鐘相位

CPHA決定數(shù)據(jù)是在SCK的起始沿采樣還是在SCK的結(jié)束沿采樣。

CPHA 起始沿 結(jié)束沿

0 采樣 設(shè)置

1 設(shè)置 采樣

位1,0——SPR1,SPR0:SPI時鐘速率選擇1與0

確定主機的SCK速率。SPR1和SPR0對從機沒有影響。SCK和振蕩器的時鐘頻率fosc關(guān)系如下表所示:

SPI2X SPR1 SPR0 SCK頻率

0 0 0 fosc/4

0 0 1 fosc/16

0 1 0 fosc/64

0 1 1 fosc/128

1 0 0 fosc/2

1 0 1 fosc/8

1 1 0 fosc/32

1 1 1 fosc/64

2.SPSR——SPI狀態(tài)寄存器

SPIF WCOL – – – – – SPI2X[!--empirenews.page--]

位7——SPIF:SPI中斷標志

串行發(fā)送結(jié)束后,SPIF置位。若此時寄存器SPCR的SPIE和全局中斷使能位置位,SPI中斷即產(chǎn)生。如果SPI為主機,SS配置為輸入,且被拉低,SPIF也將置位。進入中斷服務(wù)程序后SPIF自動清零?;蛘呖梢酝ㄟ^先讀SPSR,緊接著訪問SPDR來對SPIF清零。

位 6——WCOL:寫碰撞標志

在發(fā)送當中對SPI數(shù)據(jù)寄存器SPDR寫數(shù)據(jù)將置位WCOL。WCOL可以通過先讀SPSR,緊接著訪問SPDR來清零。

位5..1——Res:保留

保留位,讀操作返回值為零。

位0——SPI2X:SPI倍速

置位后SPI的速度加倍。若為主機,則SCK頻率可達CPU頻率的一半。若為從機,只能保證fosc/4。

3.SPDR——SPI數(shù)據(jù)寄存器

相對于串行數(shù)據(jù),SCK的相位和極性有4種組合。CPHA和CPOL控制組合的方式。每一位數(shù)據(jù)的移出和移入發(fā)生于SCK不同的信號跳變沿,以保證有足夠的時間使數(shù)據(jù)穩(wěn)定。說明如下:

起始沿 結(jié)束沿 SPI模式

CPOL=0,CPHA=0 采樣(上升沿) 采樣(下降沿) 0

CPOL=0,CPHA=1 設(shè)置(上升沿) 采樣(下降沿) 1

CPOL=1,CPHA=0 采樣(下降沿) 采樣(上升沿) 2

CPOL=1,CPHA=1 采樣(下降沿) 采樣(上升沿) 3

ATmega 16 單片機的USART的相關(guān)寄存器(十)

通用同步和異步串行接收器和轉(zhuǎn)發(fā)器(USART)是一個高度靈活的串行通訊設(shè)備。主要特點為:

全雙工操作(獨立的串行接收和發(fā)送寄存器)

異步或同步操作

主機或從機提供時鐘的同步操作

高精度的波特率發(fā)生器

支持5,6,7,8,或9個數(shù)據(jù)位和1個或2個停止位

硬件支持的奇偶校驗操作

數(shù)據(jù)過速檢測

幀錯誤檢測

噪聲濾波,包括錯誤的起始位檢測,以及數(shù)字低通濾波器

三個獨立的中斷:發(fā)送結(jié)束中斷,發(fā)送數(shù)據(jù)寄存器空中斷,以及接收結(jié)束中斷

多處理器通訊模式

倍速異步通訊模式

1.UDR——USART I/O數(shù)據(jù)寄存器

USART發(fā)送數(shù)據(jù)緩沖寄存器和USART接收數(shù)據(jù)緩沖寄存器共享相同的I/O地址,稱為USART數(shù)據(jù)寄存器或UDR。將數(shù)據(jù)寫入UDR時實際操作的是發(fā)送數(shù)據(jù)緩沖器存器(TXB),讀UDR時實際返回的是接收數(shù)據(jù)緩沖寄存器(RXB)的內(nèi)容。在5、6、7比特字長模式下,未使用的高位被發(fā)送器忽略,而接收器則將它們設(shè)置為0。只有當UCSRA寄存器的UDRE標志置位后才可以對發(fā)送緩沖器進行寫操作。如果UDRE沒有置位,那么寫入UDR的數(shù)據(jù)會被USART發(fā)送器忽略。當數(shù)據(jù)寫入發(fā)送緩沖器后,若移位寄存器為空,發(fā)送器將把數(shù)據(jù)加載到發(fā)送移位寄存器。然后數(shù)據(jù)串行地從TxD引腳輸出。

接收緩沖器包括一個兩級FIFO,一旦接收緩沖器被尋址FIFO就會改變它的狀態(tài)。因此不要對這一存儲單元使用讀-修改-寫指令(SBI和CBI)。使用位查詢指令(SBIC和SBIS)時也要小心,因為這也有可能改變FIFO的狀態(tài)。

2.UCSRA——USART控制和狀態(tài)寄存器A

RXC TXC UDRE FE DOR PE U2X MPCM

位7——RXC:USART接收結(jié)束

接收緩沖器中有未讀出的數(shù)據(jù)時RXC置位,否則清零。接收器禁止時,接收緩沖器被刷新,導(dǎo)致RXC清零。RXC標志可用來產(chǎn)生接收結(jié)束中斷(見對RXCIE位的描述)。

位 6——TXC:USART發(fā)送結(jié)束

發(fā)送移位緩沖器中的數(shù)據(jù)被送出,且當發(fā)送緩沖器(UDR)為空時TXC置位。執(zhí)行發(fā)送結(jié)束中斷時TXC標志自動清零,也可以通過寫1進行清除操作。TXC標志可用來產(chǎn)生發(fā)送結(jié)束中斷(見對TXCIE位的描述)。

位 5——UDRE:USART數(shù)據(jù)寄存器空

UDRE標志指出發(fā)送緩沖器(UDR)是否準備好接收新數(shù)據(jù)。UDRE為1說明緩沖器為空,已準備好進行數(shù)據(jù)接收。UDRE標志可用來產(chǎn)生數(shù)據(jù)寄存器空中斷(見對UDRIE位的描述)。復(fù)位后UDRE置位,表明發(fā)送器已經(jīng)就緒。

位 4——FE:幀錯誤

如果接收緩沖器接收到的下一個字符有幀錯誤,即接收緩沖器中的下一個字符的第一個停止位為0,那么FE置位。這一位一直有效直到接收緩沖器(UDR)被讀取。當接收到的停止位為1時,F(xiàn)E標志為0。對UCSRA進行寫入時,這一位要寫0。

位3——DOR:數(shù)據(jù)溢出

數(shù)據(jù)溢出時DOR置位。當接收緩沖器滿(包含了兩個數(shù)據(jù)),接收移位寄存器又有數(shù)據(jù),若此時檢測到一個新的起始位,數(shù)據(jù)溢出就產(chǎn)生了。這一位一直有效直到接收緩沖器(UDR)被讀取。對UCSRA進行寫入時,這一位要寫0。

位 2——PE:奇偶校驗錯誤

當奇偶校驗使能(UPM1=1),且接收緩沖器中所接收到的下一個字符有奇偶校驗錯誤時UPE置位。這一位一直有效直到接收緩沖器(UDR)被讀取。對UCSRA進行寫入時,這一位要寫0。

位 1——U2X:倍速發(fā)送

這一位僅對異步操作有影響。使用同步操作時將此位清零。此位置1可將波特率分頻因子從16降到8,從而有效的將異步通信模式的傳輸速率加倍。

位 0–MPCM:多處理器通信模式

設(shè)置此位將啟動多處理器通信模式。MPCM置位后,USART接收器接收到的那些不包含地址信息的輸入幀都將被忽略。發(fā)送器不受MPCM設(shè)置的影響。

3.UCSRB——USART控制和狀態(tài)寄存器B

RXCIE TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB8

位7——RXCIE:接收結(jié)束中斷使能

置位后使能RXC中斷。當RXCIE為1,全局中斷標志位SREG置位,UCSRA寄存器的RXC亦為1時可以產(chǎn)生USART接收結(jié)束中斷。

位6——TXCIE:發(fā)送結(jié)束中斷使能

置位后使能TXC中斷。當TXCIE為1,全局中斷標志位SREG置位,UCSRA寄存器的TXC亦為1時可以產(chǎn)生USART發(fā)送結(jié)束中斷。

位5——UDRIE:USART數(shù)據(jù)寄存器空中斷使能

置位后使能UDRE中斷。當UDRIE為1,全局中斷標志位SREG置位,UCSRA寄存器的UDRE亦為1時可以產(chǎn)生USART數(shù)據(jù)寄存器空中斷。

位 4——RXEN:接收使能

置位后將啟動USART接收器。RxD引腳的通用端口功能被USART功能所取代。禁止接收器將刷新接收緩沖器,并使FE、DOR及PE標志無效。

位 3——TXEN:發(fā)送使能[!--empirenews.page--]

置位后將啟動將啟動USART發(fā)送器。TxD引腳的通用端口功能被USART功能所取代。TXEN清零后,只有等到所有的數(shù)據(jù)發(fā)送完成后發(fā)送器才能夠真正禁止,即發(fā)送移位寄存器與發(fā)送緩沖寄存器中沒有要傳送的數(shù)據(jù)。發(fā)送器禁止后,TxD引腳恢復(fù)其通用I/O功能。

位 2——UCSZ2:字符長度

UCSZ2與UCSRC寄存器的UCSZ1:0結(jié)合在一起可以設(shè)置數(shù)據(jù)幀所包含的數(shù)據(jù)位數(shù)(字符長度)。

位 1——RXB8:接收數(shù)據(jù)位8

對9位串行幀進行操作時,RXB8是第9個數(shù)據(jù)位。讀取UDR包含的低位數(shù)據(jù)之前首先要讀取RXB8。

位 0——TXB8:發(fā)送數(shù)據(jù)位8

對9位串行幀進行操作時,TXB8是第9個數(shù)據(jù)位。寫UDR之前首先要對它進行寫操作。

4.UCSRC——USART控制和狀態(tài)寄存器C

URSEL UMSEL UPM1 UPM0 USBS UCSZ1 UCSZ0 UCPOL

UCSRC寄存器與UBRRH寄存器共用相同的I/O地址。

位 7——URSEL:寄存器選擇

通過該位選擇訪問UCSRC寄存器或UBRRH寄存器。當讀UCSRC時,該位為1;當寫UCSRC時,URSEL為1。

位6——UMSEL:USART模式選擇

通過這一位來選擇同步或異步工作模式。

UMSEL 模式

0 異步操作

1 同步操作

位 5:4——UPM[1:0]:奇偶校驗?zāi)J?/p>

這兩位設(shè)置奇偶校驗的模式并使能奇偶校驗。如果使能了奇偶校驗,那么在發(fā)送數(shù)據(jù),發(fā)送器都會自動產(chǎn)生并發(fā)送奇偶校驗位。對每一個接收到的數(shù)據(jù),接收器都會產(chǎn)生一奇偶值,并與UPM0所設(shè)置的值進行比較。如果不匹配,那么就將UCSRA中的PE置位。

UPM1 UPM0 奇偶模式

0 0 禁止

0 1 保留

1 0 偶校驗

1 1 奇校驗

位 3——USBS:停止位選擇

通過這一位可以設(shè)置停止位的位數(shù)。接收器忽略這一位的設(shè)置。

USBS 停止位位數(shù)

0 1

1 2

位2:1——UCSZ[1:0]:字符長度

UCSZ1:0與UCSRB寄存器的UCSZ2結(jié)合在一起可以設(shè)置數(shù)據(jù)幀包含的數(shù)據(jù)位數(shù)(字符長度)。

UCSZ2 UCSZ1 UCSZ0 字符長度

0 0 0 5位

0 0 1 6位

0 1 0 7位

0 1 1 8位

1 0 0 保留

1 0 1 保留

1 1 0 保留

1 1 1 9位

位 0——UCPOL:時鐘極性

這一位僅用于同步工作模式。使用異步模式時,將這一位清零。UCPOL設(shè)置了輸出數(shù)據(jù)的改變和輸入數(shù)據(jù)采樣,以及同步時鐘XCK之間的關(guān)系。

UCPOL 發(fā)送數(shù)據(jù)的改變(TxD引腳的輸出) 接收數(shù)據(jù)的采樣(RxD引腳的輸入)

0 XCK上升沿 XCK下降沿

1 XCK下降沿 XCK上升沿

5.UBRRL和UBRRH——USART波特率寄存器

UCSRC寄存器與UBRRH寄存器共用相同的I/O地址。

位15——URSEL:寄存器選擇

通過該位選擇訪問UCSRC寄存器或UBRRH寄存器。當讀UBRRH時,該位為0;當寫UBRRH時,URSEL為0。

位 14:12——保留位

這些位是為以后的使用而保留的。為了與以后的器件兼容,寫UBRRH時將這些位清零。

位 11:0——UBRR1[1:0]:USART波特率寄存器

這個12位的寄存器包含了USART的波特率信息。其中UBRRH包含了USART波特率高4位,UBRRL包含了低8位。波特率的改變將造成正在進行的數(shù)據(jù)傳輸受到破壞。寫UBRRL將立即更新波特率分頻器。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉