在微處理器控制的系統中,一種特別令人討厭的錯誤是微處理器意外復位。調試此類問題的重要工具是一系列可能的原因。是什麼原因導致微控制器意外復位?
在微處理器控制的系統中,一種特別令人討厭的錯誤是微處理器意外復位。調試此類問題的重要工具是一系列可能的原因。是什麼原因導致微控制器意外復位?
在PIC和dsPIC芯片上,我觀察到以下意外復位的原因。
硬件:
軟件:
在某些dsPIC上,RCON寄存器存儲指示復位原因的位。這在調試時非常有用。
RESET引腳必須由監視過壓/欠壓並產生足夠長的複位信號的複位電路正確驅動。考慮到這一點,我對不受控制的硬件重置的經驗來自於:
我在此列表中未看到的另一種可能性是支持ICSP的設備。如果在電路串行編程模式下觸發的線路上使用的上拉電阻不足,有時可能會隨機進入該模式。如果沒有程序更新發送到指定的串行接收器行,則在很短的間隔後重置。我懷疑如果啟動ICSP並且未發送任何編程數據,內部看門狗計時器會強制重置。這是我犯的一個錯誤,並且花了很多時間查找16F876。
請確保在電路中使用CMOS或TTL邏輯芯片時,它們在Vdd和地之間具有足夠的去耦電容器(通常為0.1 uF)。我在設計中使用的是CD4021,使用時顯然會引起一些尖峰,導致微處理器重新啟動。然後該循環將重複。這也是為什麼在代碼開始時放置一個顯而易見的測試序列(例如使LED閃爍幾次,然後關閉幾次)是個好主意的原因,這樣您就知道微處理器正在工作並正在執行代碼。
這是可能會出現的罕見事情之一:
我有一個涉及微控制器的項目,它會偶爾重置自身。長話短說,原來必須啟用或禁用某些選項,否則可能會發生重置。在放棄其他所有內容之後,我才通過閱讀勘誤表才發現了這一點。
現在,我習慣養成閱讀勘誤表的習慣,甚至在決定使用芯片來了解自己所學的內容以及是否可以管理之前,我都會養成這種習慣。不幸的是,畢業後,我真的沒有人要教我一些常見的習慣,所以我在現實世界中的很多學習都是通過失敗和挫折來完成的。