AVR微控制器的I/O口是雙向口。具有如下的特點:
AVR IO具備多種IO模式:
1 高阻態(tài),多用于高阻模擬信號輸入,例如ADC數(shù)模轉(zhuǎn)換器輸入,模擬比較器輸入
2 弱上拉狀態(tài)(Rup=20K~50K),輸入用。為低電平信號輸入作了優(yōu)化,省去外部上拉電阻,例如按鍵輸入,低電平中斷觸發(fā)信號輸入
3 推挽強輸出狀態(tài),驅(qū)動能力特強(>20mA),可直接推動LED,而且高低驅(qū)動能力對稱.
在實際應(yīng)用中,我使用了1M的外部上拉,用來測量霍爾器件的脈沖。結(jié)果發(fā)現(xiàn)沒有動作的情況下也測量到了脈沖。于是做了如下的測量:
1,該管腳設(shè)置為輸入,不使能內(nèi)部上拉而是使用外部1M電阻上拉(PORTX為0),測量得到該管腳的電壓大約是3.06(電源電壓是3.37)
2,該管腳設(shè)置為輸入,使能內(nèi)部上拉(帶著外部上拉的1M電阻),測量得到該管腳的電壓大約是3.36(電源電壓是3.37)
3,該管腳設(shè)置為輸入,不使能內(nèi)部上拉而是使用外部可調(diào)電阻上拉(PORTX為0),管腳電壓隨著外部上拉電阻的阻值的下降而升高,當(dāng)外部可調(diào)電阻的組織大約是40K時,該管腳電壓接近Vcc供電電壓,并且降低電阻,電壓也不再升高。
總結(jié)出一個規(guī)律,如果使用外部上拉電阻,該阻值應(yīng)該不能超過40K,否則該引腳的電壓將不能到達Vcc的電壓。
更正:
上面的測量是有問題的,上面1中測量的電壓為3.06,是由于萬用表內(nèi)阻的影響,換句話說,如果萬用表的內(nèi)阻是M級別的話,外部1M電阻和萬用表相比已經(jīng)足夠大,因此本身會有比較大的壓降,導(dǎo)致管腳上電壓變低(該管腳的電壓實際值應(yīng)該是接近電源電壓)。原來的系統(tǒng)不工作應(yīng)該是外部電阻太大引起的,具體的原因是什么哪?