AVR單片機上電復位不可靠問題的解決
程序里開始首先是對IO做初始化,TXD配置為輸出,還有其他相關IO配置。然后是對定時器的一些初始化,再就是對串口的一些初始化了??戳讼鲁绦?,在初始化的時候就把串口中斷發(fā)送、接收允許都使能了,難道是這里的問題?串口電壓表在實際工作的時候串口其實不是在一直工作的,是通過一個開關選擇接地才發(fā)送數(shù)據(jù),平時是不發(fā)送的,而在不接串口電平轉換電路的時候RXD、TXD都是是懸空的,只有TXD為輸出有上拉,RXD沒有使能上拉,這時候RXD是最容易被外部干擾的,這就是問題的所在了。當然如果串口電平轉換電路都連接著,那就沒這個問題,因為串口電平轉換電路已經把RXD的電平給鉗住了。解決的方法很簡單:在初始化串口的時候關閉串口中斷使能,在主程序里需要發(fā)送數(shù)據(jù)的時候再使能串口,發(fā)送完馬上關閉就可以。至此問題解決,這時候看你再怎么去“摸”ATMEGA48的引腳或封裝都沒有再出現(xiàn)任何的死機情況,每次上電復位都是非常的穩(wěn)定。(把AVR的BOD熔絲打開可增加復位的可靠性,BOD LEVEL根據(jù)實際的電源電壓進行選擇,這里的電源是5V,所以BOD LEVEL選4.3V)
總結教訓:
這是自己的粗心大意、芯片內部功能的沒有合理性利用的表現(xiàn)。在此引以為戒!告訴自己:不要以為自己做過一些小項目就飄飄然起來,不要動不動就去懷疑人家半導體廠家芯片的穩(wěn)定性,要多懷疑自己才是。往往可能最基本的問題沒注意而花費了很多的時間,自己做著玩的東西那都無所謂了,如果你是給別人打工呢?那性質就完全不一樣了!
下圖為AVR單片機 典型外部復位電路:
AVR單片機已經內置了上電復位設計。并且在熔絲位里,可以控制復位時的額外時間,故AVR外部的復位線路在上電時,可以設計得很簡單:直接拉一只10K的電阻到VCC即可。
為了可靠,再加上一只0.1uF的電容以消除干擾、雜波。
二極管1N4148的作用有兩個:作用一是將復位輸入的最高電壓鉗在Vcc+0.5V 左右,另一作用是系統(tǒng)斷電時,將10K電阻短路,讓0.1uF的電容快速放電,讓下一次來電時,能產生有效的復位。
當AVR在工作時,按下開關S 時,復位腳變成低電平,觸發(fā)AVR芯片復位。
單片機相關文章:單片機教程
單片機相關文章:單片機視頻教程
單片機相關文章:單片機工作原理
評論