關(guān)于avr單片機兩路ad信號的單獨采集問(wèn)題
最近做了個(gè)跟ad相關(guān)的項目,需要單獨采集兩路ad信號,具體步驟如下
1.選擇參考電源 2.選擇采集通道 3.選擇ad轉換時(shí)鐘 4.使能ad模塊,5開(kāi)始轉換,6.等待轉換結束,7.讀取數據
經(jīng)過(guò)測試分別單路采集沒(méi)問(wèn)題,可把兩個(gè)連起來(lái),就出問(wèn)題了,第二路采集的結果跟第一路總是相同,把第二路放到前邊,然后采集第一路,結果第一路的結果跟第二路的相同。郁悶啊,經(jīng)過(guò)檢查初始化及管腳設置都正確,測試多次仍然沒(méi)辦法解決,暫時(shí)放下處理其他問(wèn)題。過(guò)了一周左右,重新看ad采集部分的數據手冊,發(fā)現如下字句:
一旦讀出ADCL, ADC 對數據寄存器的尋址就被阻止了。也就是說(shuō),讀取ADCL 之后,即使在讀ADCH 之前又有一次ADC 轉換結束,數據寄存器的數據也不會(huì )更新,從而保證了轉換結果不丟失。ADCH 被讀出后, ADC 即可再次訪(fǎng)問(wèn)ADCH 及ADCL 寄存器。
上面一段話(huà)意思就是,讀取數據時(shí)要先讀ADCL的數據,然后再度ADCH的數據,如果順序反過(guò)來(lái),則會(huì )讀取ADCL 之后,即使在讀ADCH 之前又有一次ADC 轉換結束,數據寄存器的數據也不會(huì )更新。所以問(wèn)題找到了,我的程序就是先讀的ADCH后讀的ADCL,所以再進(jìn)行第二次的AD轉換時(shí),數據寄存器數據沒(méi)有更新。讀出的值就是第一次轉換的結果。
希望大家能夠引以為戒,切記:AVR單片機AD采集部分,讀結果數據要先讀低字節(ADCL)后讀高字節(ADCH)?。。?!
單片機相關(guān)文章:單片機教程
單片機相關(guān)文章:單片機視頻教程
單片機相關(guān)文章:單片機工作原理
評論