AVR單片機(學(xué)習(xí)ing)—(九)、ATMEGA16的模數(shù)轉(zhuǎn)換器—01
2)ADC控制和狀態(tài)寄存器—ADCSRA
• Bit 7 – ADEN: ADC 使能
ADEN置位即啟動ADC,否則ADC功能關(guān)閉。在轉(zhuǎn)換過程中關(guān)閉ADC將立即中止正在進行
的轉(zhuǎn)換。
• Bit 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)生任何動
作。
• Bit 5 – ADATE: ADC 自動觸發(fā)使能
ADATE置位將啟動ADC自動觸發(fā)功能。觸發(fā)信號的上跳沿啟動ADC轉(zhuǎn)換。觸發(fā)信號源通
過SFIOR 寄存器的ADC 觸發(fā)信號源選擇位ADTS 設(shè)置。
• Bit 4 – ADIF: ADC 中斷標(biāo)志
在ADC 轉(zhuǎn)換結(jié)束,且數(shù)據(jù)寄存器被更新后, ADIF 置位。如果ADIE 及SREG 中的全局
中斷使能位I 也置位,ADC 轉(zhuǎn)換結(jié)束中斷服務(wù)程序即得以執(zhí)行,同時ADIF 硬件清零。此
外,還可以通過向此標(biāo)志寫1 來清ADIF。要注意的是,如果對ADCSRA 進行讀-修改
-寫操作,那么待處理的中斷會被禁止。這也適用于SBI 及CBI 指令。
• Bit 3 – ADIE: ADC 中斷使能
若ADIE 及SREG 的位I 置位, ADC 轉(zhuǎn)換結(jié)束中斷即被使能。
• Bits 2:0 – ADPS2:0: ADC 預(yù)分頻器選擇位
由這幾位來確定XTAL 與ADC 輸入時鐘之間的分頻因子。
3)ADC 數(shù)據(jù)寄存器- ADCL 及ADCH
ADC 轉(zhuǎn)換結(jié)束后,轉(zhuǎn)換結(jié)果存于這兩個寄存器之中。如果采用差分通道,結(jié)果由2 的補碼
形式表示。
讀取ADCL 之后,ADC 數(shù)據(jù)寄存器一直要等到ADCH 也被讀出才可以進行數(shù)據(jù)更新。因
此,如果轉(zhuǎn)換結(jié)果為左對齊,且要求的精度不高于8 比特,那么僅需讀取ADCH 就足夠
了。否則必須先讀出ADCL 再讀ADCH。
ADMUX 寄存器的 ADLAR 及MUXn 會影響轉(zhuǎn)換結(jié)果在數(shù)據(jù)寄存器中的表示方式。如果
ADLAR 為1,那么結(jié)果為左對齊;反之( 系統(tǒng)缺省設(shè)置),結(jié)果為右對齊。
• ADC9:0: ADC 轉(zhuǎn)換結(jié)果
ADC 轉(zhuǎn)換的結(jié)果。
4)特殊功能IO 寄存器- SFIOR
• Bit 7:5 – ADTS2:0: ADC 自動觸發(fā)源
若ADCSRA 寄存器的ADATE 置位,ADTS 的值將確定觸發(fā)ADC 轉(zhuǎn)換的觸發(fā)源;否則,
ADTS的設(shè)置沒有意義。被選中的中斷標(biāo)志在其上升沿觸發(fā)ADC轉(zhuǎn)換。從一個中斷標(biāo)志清
零的觸發(fā)源切換到中斷標(biāo)志置位的觸發(fā)源會使觸發(fā)信號產(chǎn)生一個上升沿。如果此時
ADCSRA 寄存器的ADEN 為1,ADC 轉(zhuǎn)換即被啟動。切換到連續(xù)運行模式(ADTS[2:0]=0)
時,即使ADC 中斷標(biāo)志已經(jīng)置位也不會產(chǎn)生觸發(fā)事件。
• Bit 4 – Res: 保留位
這一位保留。為了與以后的器件相兼容,在寫SFIOR 時這一位應(yīng)寫0。
評論