新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > SN 8 位單片機(jī) SN8P2743 應(yīng)用實(shí)踐(2)

SN 8 位單片機(jī) SN8P2743 應(yīng)用實(shí)踐(2)

作者: 時(shí)間:2016-12-02 來(lái)源:網(wǎng)絡(luò) 收藏
SN8P2743 是一較新的型號(hào),內(nèi)部含有放大器,比較器,AD 轉(zhuǎn)換器并且有外部基準(zhǔn)電壓參考輸入.....4K*16位 空間,感覺(jué)上比較"價(jià)廉物美!"
通常,我們使用SN單片機(jī)的 AD 功能時(shí),如果選擇外部基準(zhǔn)電壓,可以利用廉價(jià)的 TL431 提供 2.5V 左右的高穩(wěn)定度電壓,即使通著電的240℃高溫電烙鐵靠上去,TL431 的輸出波動(dòng)也僅僅 1~3mV ,此時(shí),系統(tǒng)可以把 5V 基準(zhǔn)時(shí)得到的 12BIT AD 變成 2.5V 基準(zhǔn)得到了 12BIT AD,這是非常劃算的舉措! ---- 一方面,等同于使用了一只 2 倍放大的無(wú)偏移,無(wú)失調(diào),無(wú)溫飄的放大電路,另外一方面,讓AD 的參考值具有高達(dá) 50ppm 的溫度系數(shù)!

我就在最近使用 2743 的外部基準(zhǔn)和 AD 功能時(shí),遇見(jiàn)一個(gè)問(wèn)題:

AD 讀數(shù)遠(yuǎn)遠(yuǎn)相差期望值很遠(yuǎn)很遠(yuǎn)!仿真器的轉(zhuǎn)接板上,AVREFH 測(cè)量到的基準(zhǔn)電壓不是 2.5V,而是 5.0V ,怎么回事呢?

檢查仿真器上外部/內(nèi)部基準(zhǔn) AVREFH 插頭,已經(jīng)拔開(kāi)!(必須拔開(kāi)!)

以為是需要外接基準(zhǔn)電壓,于是,把轉(zhuǎn)接板上 AVREFH 的插針與外部基準(zhǔn) TL431 直接連接,看看是否正確? 結(jié)果,電壓變成比 2.5V 稍大了 0.1~0.3V ,不穩(wěn)定.由于事先有準(zhǔn)備,不停摸一下 TL431,發(fā)現(xiàn)其溫度上升,感覺(jué)此舉錯(cuò)誤,趕緊脫開(kāi) AVREFH 與 TL431 的連接.
轉(zhuǎn)接板與目標(biāo)板是具有引腳一對(duì)一關(guān)系的,外部基準(zhǔn)實(shí)際已經(jīng)到達(dá)芯片對(duì)應(yīng)引腳,為什么轉(zhuǎn)接板上 AVREFH 測(cè)量不到呢?
查看轉(zhuǎn)接板上,原來(lái)這些接口是利用一種 NLAS4501DFT2G 通用單刀單擲模擬開(kāi)關(guān)來(lái)切換的!為此,臨時(shí)上網(wǎng)查閱該芯片的手冊(cè).費(fèi)了不少勁!
小心測(cè)量 NLAS4501DFT2G 芯片的控制引腳,發(fā)現(xiàn)與"選擇外部基準(zhǔn)"的指令不同,怎么回事?

再重新閱讀 2743 的數(shù)據(jù)手冊(cè),在 ADM 寄存器里,比通常的 SN 帶 AD 單片機(jī)多了一個(gè) FAVREFH 位,它 =1 則是選擇外部基準(zhǔn)! ---- 這里,通常不會(huì)出錯(cuò)!指令是正確的!

再看看它給出的示例:

ADC操作舉例

ADC:
; 復(fù)位ADC。
CLR ADM ; 清ADM 寄存器。
; 設(shè)置ADC 時(shí)鐘Rate 和ADC 分辨率。
MOV A, #0nmn0000b ; nn:ADCKS[1:0]代表ADC 時(shí)鐘Rate。
B0MOV ADR, A ; m 代表ADC 分辨率。
; 設(shè)置ADC 參考高電壓。
B0BCLR FAVREFH ; 內(nèi)部VDD。
or
B0BSET FAVREFH ; 外部參考源。
; 設(shè)置ADC 輸入通道。
MOV A, #value1 ; 設(shè)置P4CON 選擇ADC 輸入通道。
B0MOV P4CON, A
MOV A, #value2 ; 設(shè)置ADC 輸入通道為輸入模式。
B0MOV P4M, A
MOV A, #value3 ; 禁止ADC 輸入通道的內(nèi)部上拉電阻。
B0MOV P4UR, A
; 使能ADC。
B0BSET FADCENB
; 執(zhí)行ADC 100us 啟動(dòng)時(shí)間延遲循環(huán)。
CALL 100usDLY ; 100us 延遲循環(huán)。
; 選擇ADC 輸入通道。
MOV A, #value ; 設(shè)置ADCHS[2:0]選擇ADC 輸入通道。
OR ADM, A
; 使能ADC 輸入通道。
B0BSET FGCHS
; 使能ADC 中斷功能。
B0BCLR FADCIRQ ; 清ADC 中斷請(qǐng)求。
B0BSET FADCIEN ; 使能ADC 中斷功能。
; 開(kāi)始AD 轉(zhuǎn)換。
B0BSET FADS
好了!問(wèn)題找到了! ----- 看看這一句:CLR ADM ; 清ADM 寄存器。---- 這里就把 BIT3 重新變成 0 了!
一個(gè)單片機(jī)系統(tǒng),除了 AD 轉(zhuǎn)換之外,大部分時(shí)間都在運(yùn)行其它程序,FAVREFH (ADM.3)在程序指令下,會(huì)從 1 變成 0,又從 0 變成 1 ! 不停切換外部基準(zhǔn)/內(nèi)部基準(zhǔn),當(dāng)然就會(huì)讓外部基準(zhǔn)不停變化了!
于是,刪除這一句: " CLR ADM ; 清ADM 寄存器 " !

并且,在上電后最先的系統(tǒng)初始化時(shí),就讓 FAVREFH (ADM.3)=1 ! 以后,就必須牢記不能動(dòng)這一位!選擇AD通道時(shí),可以使用 OR 指令或 AND 指令去改變 ADM ,當(dāng)然,如果充分注意,仍然可以使用 MOV ADM,#value 去賦值!

例如:;B3:FAVREFH=1 外部參考源。

;選擇ADC 輸入通道:
MOV A,#098H ;=P40----FAVREFH (ADM.3)=1
;或
MOV A,#099H ;=P41----FAVREFH (ADM.3)=1
;或
MOV A,#09AH ;=P42----FAVREFH (ADM.3)=1
;或
MOV ADM,A
ZB1 FADS; 開(kāi)始AD 轉(zhuǎn)換。
;................
經(jīng)過(guò)這樣處理,測(cè)量轉(zhuǎn)接板上 AVREFH 的插針上就是 2.5V ,穩(wěn)定不動(dòng)! AD 轉(zhuǎn)換讀數(shù)也變成正常了!

------ 當(dāng)然了,P4M,P4UR,P4CON 這些相關(guān)寄存器仍然需要小心正確設(shè)置的!

此經(jīng)歷特別貼出,供朋友們使用 2743 時(shí)留意參考! ---- 隨著應(yīng)用深入,如果再發(fā)現(xiàn)有比較古怪的問(wèn)題,再行貼出!

上一頁(yè) 1 2 下一頁(yè)

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉