国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

SN 8 位單片機 SN8P2743 應用實踐(2)

發布時間:2012-4-1 10:06    發布者:李寬
關鍵詞: SN8 , 單片機
作者:bjxsdz

SN8P2743 是一較新的型號,內部含有放大器,比較器,AD 轉換器并且有外部基準電壓參考輸入.....4K*16位 空間,感覺上比較"價廉物美!"
通常,我們使用SN單片機的 AD 功能時,如果選擇外部基準電壓,可以利用廉價的 TL431 提供 2.5V 左右的高穩定度電壓,即使通著電的240℃高溫電烙鐵靠上去,TL431 的輸出波動也僅僅 1~3mV ,此時,系統可以把 5V 基準時得到的 12BIT AD 變成 2.5V 基準得到了 12BIT AD,這是非常劃算的舉措! ---- 一方面,等同于使用了一只 2 倍放大的無偏移,無失調,無溫飄的放大電路,另外一方面,讓AD 的參考值具有高達 50ppm 的溫度系數!

我就在最近使用 2743 的外部基準和 AD 功能時,遇見一個問題:

AD 讀數遠遠相差期望值很遠很遠!仿真器的轉接板上, AVREFH 測量到的基準電壓不是 2.5V,而是 5.0V ,怎么回事呢?

檢查仿真器上外部/內部基準 AVREFH 插頭,已經拔開!(必須拔開!)

以為是需要外接基準電壓,于是,把轉接板上 AVREFH 的插針與外部基準 TL431 直接連接,看看是否正確? 結果,電壓變成比 2.5V 稍大了 0.1~0.3V ,不穩定.由于事先有準備,不停摸一下 TL431,發現其溫度上升,感覺此舉錯誤,趕緊脫開 AVREFH 與 TL431 的連接.
轉接板與目標板是具有引腳一對一關系的,外部基準實際已經到達芯片對應引腳,為什么轉接板上 AVREFH 測量不到呢?
查看轉接板上,原來這些接口是利用一種 NLAS4501DFT2G 通用單刀單擲模擬開關來切換的!為此,臨時上網查閱該芯片的手冊.費了不少勁!
小心測量 NLAS4501DFT2G 芯片的控制引腳,發現與"選擇外部基準"的指令不同,怎么回事?

再重新閱讀 2743 的數據手冊,在 ADM 寄存器里,比通常的 SN 帶 AD 單片機多了一個 FAVREFH 位,它 =1 則是選擇外部基準! ---- 這里,通常不會出錯!指令是正確的!

再看看它給出的示例:

ADC 操作舉例

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

并且,在上電后最先的系統初始化時,就讓 FAVREFH (ADM.3)=1 ! 以后,就必須牢記不能動這一位!選擇AD通道時,可以使用 OR 指令或 AND 指令去改變 ADM ,當然,如果充分注意,仍然可以使用 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; 開始AD 轉換。
        ;................
經過這樣處理,測量轉接板上 AVREFH 的插針上就是 2.5V ,穩定不動! AD 轉換讀數也變成正常了!

------ 當然了,P4M,P4UR,P4CON 這些相關寄存器仍然需要小心正確設置的!

此經歷特別貼出,供朋友們使用 2743 時留意參考! ---- 隨著應用深入,如果再發現有比較古怪的問題,再行貼出!

===========================================================

使用 2743 不能對 P0.N 位操作的問題
在使用 SN8P2743 時,代碼里有:
BSET        FP03
BCLR        FP03
這樣的指令,結果,編譯器提示出錯! "Only can use MOV command to change the Bit.."
查閱芯片手冊,對 I/O 配置描述是:
IO 引腳配置
雙向輸入輸出IO 口:P0、P1、P4
具有喚醒功能的IO 口:P0、P1 電平變換
具有上拉電阻的IO 口:P0、P1、P4
OP-amp/比較器引腳:P1、P4
ADC 輸入引腳:P4.0~P4.7
這里,沒有看見我為什么遇見的問題所在!
又查閱軟件文件夾里的 SN8P2743.INC 文件,文件里對 P0 口的內容如下:

        P0M                EQU                0B8H
                FP06M                EQU                P0M.6
                FP05M                EQU                P0M.5
                FP03M                EQU                P0M.3
                FP02M                EQU                P0M.2
                FP00M                EQU                P0M.0
        P0                EQU                  0D0H
                FP06                EQU                   P0.6
                FP05                EQU                   P0.5
                FP04                EQU_R                   P0.4  ;只讀
                FP03                EQU                 P0.3
                FP02                EQU                   P0.2
                FP01                EQU_W                   P0.1 ;只寫
                FP00                EQU                   P0.0
留意到,P0 端口有一位只讀,有一位只寫! ----- 對一組端口里有只讀位的,并不會影響其它位的位操作,是不是有只寫位就不行了呢?
又再查閱芯片手冊,在引腳說明里看見只寫位 FP01 :

P0.1/PWM0 I/O P0.1:漏極開路的輸出引腳。PWM0:PWM輸出引腳和脈沖輸出引腳。

再看看對端口 P0 的系統寄存器內容:

I/O 口模式
寄存器PnM 控制I/O 口的工作模式。
0B8H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
P0M - P06M P05M - P03M P02M - P00M
讀/寫 - R/W R/W - R/W R/W - R/W
復位后 - 0 0 - 0 0 - 0
I/O 口數據寄存器 P0
0D0H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
P0 - P06 P05 P04 P03 P02 P01 P00
讀/寫 - R/W R/W R R/W R/W W R/W
復位后 - 0 0 0 0 0 0 0

注:
1、當通過編譯選項使能外部復位時,P04 保持為1。
2、若需要設置P0 寄存器的某位(P0.n)時,建議使用“MOV”或者“B0MOV”指令,而不要使用“read & modify write(讀-改寫)”型的指令(如,BSET、BCLR、B0BSET、B0BCLR…),否則執行這些指令后,P0 寄存器的只寫位P0.1 會被更改。
原來問題是:
如果一組端口有某位為只寫位,為了避免位操作指令的"讀-改寫"破壞只寫位的狀態,因此,對這組端口的其它位不能使用位操作指令!
這種情況很少遇見,芯片手冊里 I/O 配置說明也不夠具體和明確,
----- 為避免使用 2743 時出現類似麻煩,特貼出供大家參考!

=============================================================

注意 2743 的 P0 端口使用問題與解決方法:
最近使用 2743 做項目,其 P0 口的使用確實遇見一些麻煩事!
首先,它的 P0.1 是只能作為輸出使用.屬于開漏輸出.(普通I/O模式時).不能輸出高電平!
其次,這組端口不能使用位操作指令,非常的不方便!
如果使用它做數碼管筆段驅動,低電平有效,如果包含小數點位置在內,是不能通過位操作指令快捷設置的!
先把端口狀態讀進來,到一個臨時 RAM ,然后操作這個小數點,之后再送回到 P0 口!
此時,會出現錯誤, P0.1 這位狀態會出錯!
利用 AND 與 OR 等指令配合來操作,仍然會出現錯誤! --- 有點莫名其妙!
注意了: 偏偏在仿真器上沒有這些錯誤,都是燒寫芯片后才發現錯誤!
冷靜下來,重新閱讀芯片手冊,終于幡然大悟! ---- P0.1 是只寫位,不能讀! 讀進來就是錯的!
凡是經過"讀--改--寫"過程的指令,操作它都會出錯!
解決辦法:
使用一個 P0 口的"影子"寄存器 EME,專門對付操作 P0 口的輸出. 這樣,不僅僅方便了,也與其它芯片做法一致了!所有對 P0 口的輸出操作都變成對這個影子寄存器的操作,之后再及時" MOV_   P0,EME  "去!
經過這樣處理,較好地避免了對 P0 口操作出錯的問題. ------ 輸入模式下可以逐位讀入,僅僅 P0.1 不能讀!

=========================================================

SN8P2743 的比較器初試
SN8P2743 芯片內部帶有 3 個比較器,今天,終于抽空對其進行了一些測試.
3 個比較器匯編叫做比較器 0 ,比較器 1 ,比較器 2 .
3 個比較器都是軌到軌輸出的,就是在 5V 供電下,高/低電平輸出幅度幾乎達到 5V 和 GND 電平!
(芯片內部還有一個放大器,放大器的測試已經發布過帖子了!)
3 個比較器都可以作為普通比較器使用或特殊比較器器使用. 所謂特殊就是可以觸發或停止 TC0 定時器的 PWM 輸出脈沖.
與常規集成電路比較器更多選擇的是,可以選擇比較器翻轉方向和進入中斷! 可以選擇是否使用比較器輸出的引腳(與普通 I/O 口共享). 如果不用硬件引腳,就僅僅是軟件內部處理結果或數據,則可以節省 3 個 I/O 口. 這是一大特色!
而比較器 1 和比較器 2 更有意思,可以軟件選擇內部參考到同相輸入作為參考電壓,此時,也可以不用硬件引腳,成為功能齊全而僅僅一個外接引腳的比較器! -------- 太棒了!
比較器是進行 2 個電壓比較大小的重要元件,我對比較器 0 進行測試,方法是:
使用 2 個 1% 精度 3K 的電阻,串聯后接到 5V 與 GND ,中間就是 5V/2 了,把這個 2.5V 接到比較器 0 的反相輸入引腳,然后,利用微調定位器給比較器 0 的同相輸入電壓, 用數字萬用表實時測量 2 個輸入引腳的電壓差, 并且讓其比較輸出低電平時或高電平時進入中斷,結果都是 OK 的!
它還可以選擇延時輸出,但是我沒有使用,一律不用延時輸出.
而其比較的動作電壓,一開始感覺有些大,高達上百 mV ! 查閱手冊,分別給 2 個輸入端口加上一只 1u 的濾波電容器, 結果,翻轉電壓差下降到僅僅 0.6~0.8mV 左右. ------ 就是在 5/2=2.5V 電壓附近, +0.8V,輸出=5V, -0.8V 輸出=0 !
本文地址:http://m.qingdxww.cn/thread-88596-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
臺系單片機 發表于 2012-4-14 10:22:30
我司代理松翰,佑華單片機,有需要的聯系QQ272074440 手機13538206702,陳生
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關在線工具

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国家免费看在线视频 | 国内精品一区二区在线观看 | 久久99热这里只有精品国产 | 99re6在线视频 | 欧美日韩在线视频播放 | 永久网站色视频在线观看免费 | 韩国日本免费不卡在线观看 | 午夜精品一区二区三区在线视 | 紫黑色的巨大又粗又硬视频 | 日本卡通动漫影院网站 | 国产激情一级毛片久久久 | 幻女free性zozo仙踪林 | 二级毛片免费观看全程 | 毛片无码国产 | 国产香蕉尹人综合在线观 | 日韩精品免费 | 中文字幕在线看视频一区二区三区 | 综合网五月天 | 久在线视频 | 香蕉视频一区 | 网色| 精品999视频 | 这里只有精品在线播放 | 99在线视频精品 | 国产精品真实对白精彩久久 | 久久夜色精品国产噜噜小说 | 在线观看av片 | 国产亚洲日本人在线观看 | 老师的兔子又大又好吃又多 | 99视频在线观看视频 | 99在线观看视频免费精品9 | 成人网址大全 | 爱豆传媒2021精品影视 | 欧美一区日韩一区中文字幕页 | 两个人免费观看视频高清视频 | 毛片网站在线观看 | sihu免费观看在线高清 | 99热精品在线免费观看 | 久久精品免费一区二区视 | 中文字幕日韩一区二区三区不卡 | 亚洲免费视频观看 |