新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 關于avr單片機兩路ad信號的單獨采集問題

        關于avr單片機兩路ad信號的單獨采集問題

        作者: 時間:2013-12-07 來源:網絡 收藏

        最近做了個跟ad相關的項目,需要兩路,具體步驟如下
        1.選擇參考電源 2.選擇采集通道 3.選擇ad轉換時鐘 4.使能ad模塊,5開始轉換,6.等待轉換結束,7.讀取數據

        經過測試分別單路采集沒問題,可把兩個連起來,就出問題了,第二路采集的結果跟第一路總是相同,把第二路放到前邊,然后采集第一路,結果第一路的結果跟第二路的相同。郁悶啊,經過檢查初始化及管腳設置都正確,測試多次仍然沒辦法解決,暫時放下處理其他問題。過了一周左右,重新看ad采集部分的數據手冊,發現如下字句:

        一旦讀出ADCL, ADC 對數據寄存器的尋址就被阻止了。也就是說,讀取ADCL 之后,即使在讀ADCH 之前又有一次ADC 轉換結束,數據寄存器的數據也不會更新,從而保證了轉換結果不丟失。ADCH 被讀出后, ADC 即可再次訪問ADCH 及ADCL 寄存器。

        上面一段話意思就是,讀取數據時要先讀ADCL的數據,然后再度ADCH的數據,如果順序反過來,則會讀取ADCL 之后,即使在讀ADCH 之前又有一次ADC 轉換結束,數據寄存器的數據也不會更新。所以問題找到了,我的程序就是先讀的ADCH后讀的ADCL,所以再進行第二次的AD轉換時,數據寄存器數據沒有更新。讀出的值就是第一次轉換的結果。

        希望大家能夠引以為戒,切記:AVR單片機AD采集部分,讀結果數據要先讀低字節(ADCL)后讀高字節(ADCH)!!!!

        單片機相關文章:單片機教程


        單片機相關文章:單片機視頻教程


        單片機相關文章:單片機工作原理




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 徐水县| 曲阳县| 英山县| 杂多县| 大英县| 淳安县| 靖安县| 特克斯县| 鞍山市| 西平县| 盐亭县| 淳安县| 湘乡市| 文昌市| 娄底市| 平利县| 合江县| 潮州市| 沾益县| 甘泉县| 汝城县| 平潭县| 沙河市| 独山县| 齐齐哈尔市| 鸡泽县| 南雄市| 静海县| 常宁市| 凤山市| 涞水县| 赤壁市| 贺兰县| 拜泉县| 博罗县| 大英县| 新疆| 顺昌县| 江永县| 广汉市| 天水市|