Ⅰ avr單片機的死鎖是怎麼造成的這種死鎖是一種什麼狀態
AVR系列單片機在模擬調試之前返拿核,首先必須對AVR的熔絲位和鎖定位進行配置。如果配置不當,則可敏數能造成單片機不能正常工作,嚴重時可能導致單片機死鎖。
鎖死後不能使用isp
只能使用高壓編程器編程並漏掘恢復熔絲位
Ⅱ dspic33ep運行中發生死鎖
dspic33ep運行中發生死鎖的原因:
1、對於沒中哪漏有時鍾安全機制的單片機緩薯,設置了錯誤的、無效的時鍾源,導致單片機內核無法工作。該情況常見於Atmega單片機。
2、誤關閉了對應的編程介面,或者將編程介面復用為其它功能,導致無法再通過這個介面更新程序。
3、誤操作了保護功能,導致暫時無法編程。STM8鎖死一般是賣爛這個原因,ROP出錯導致編程功能被禁止。
Ⅲ 如何解決I2C器件死鎖的問題
正常情況下,I2C匯流排協議能夠保證匯流排正常的讀寫操作。但是在某些異常情況下會導致I2C匯流排鎖死。例如主控制器突然復位、或者I2C匯流排上存在干擾、或者電源異常等都可能導致I2C匯流排鎖死。
在I2C主設備進行讀寫操作的過程中,主設備在開始信號後控制SCL產生8個時鍾脈沖。然後拉低SCL信號為低電平,在這個時候,從設備輸出應答信號,將SDA信號拉為低電平 如果這個時候主設備異常復位,SCL就會被釋放為高電平。此時,如果從設備沒有復位,就會繼續I2C的應答,將SDA拉為低電平,直到SCL變為低帶襲畢電平,才會結束應答信號。而對於I2C主設備來說,復位後檢測SCL和SDA信號,如果發現SDA信號為低電平,則會認為I2C匯流排被佔用,會一直等待SCL和SDA信號變為高電平。這樣,I2C主設備等待從設備釋放SDA信號,而同時I2C從設備又在等待主設備將SCL信號拉低以釋放應答信號,兩禪仿者相互等待,I2C匯流排進入一種死鎖狀態。
同樣,當I2C進行讀操作,I2C從設備應答後輸出數據,如果在這個時刻I2C主設備異常復位而此時I2C從設備輸出的數據位正好為0,也會導致I2C匯流排進入死鎖狀態。
廣州致遠電子ARM核心板使用IIC設備時,遇到匯流排死鎖是如何讓匯流排死鎖恢復呢,常用方法如下:
(1) 盡量選用帶復位輸人的I2C從器件,從I2C匯流排死鎖產生的原因可以發現I2C匯流排死鎖的一個必要條件是主設備復位了而從設備沒有復位。如果從設備選用帶復位輸入的晶元,將主從設備的復位信號連接在一起,當外部產生復位事件時,主從設備同時復位,這樣就不會發生I2C匯流排死鎖現象了。 這種方法的缺點也是顯而易見的,首先,大部分I2C從器件都沒有復位輸入,器件選型受到了很大的限制;其次,這種對於主設備集成看門狗引起的復位也沒有效果。
(2) 將所有的從I2C設備的電源連接在一起,通過M0S管連接到主電源,而MOS管的導通關斷由I2C主設備來實現一般來說,I2C主設備都是具有運算單元的處理器。控制功能可以通過處理器的GPIO來實現。每次主設備復位時,運行程序控制GPIO關斷MOS,使從設備失去電源。 然後延時一段時間後再導通MOS管,給從設備上電,從而達到讓從設備強制復位的效果。這種方法能彌補第一種方法的不足,但是會增加電源設計的復雜性,影響Layout設計時電源的完整性; 同時還需要更改處理器的底層boot代碼,影響底層軟體的通用性和可移植性。
(3) 在I2C從設備設計看門狗的功能。當I2C從設備檢測到自身處於應答狀態或者低電平輸出超過指定時間時,看門狗動作,復位I2C從設備。這種情況下不用增加額外的硬體設計蠢芹,但是要求I2C從設備具有可編程功能,比較適合從設備是單片機或CPLD的情況。
(4) 在I2C主設備中增加I2C匯流排恢復程序。 每次I2C主設備復位後,如果檢測到SDA數據線被拉低,則控制I2C 中的SCL時鍾線產生9個時鍾脈沖(針對8位數據的情況),這樣I2C從設備就可以完成被掛起的讀操作,從死鎖狀態中恢復過來。這種方法有很大的局限性,因為大部分主設備的I2C模塊由內置的硬體電路來實現。軟體並不能夠直接控制SCL信號模擬產生需要時鍾脈沖。使用此種方法可以使用IO模擬I2C,SCL時鍾易控制。
(5) 在I2C匯流排上增加一個額外的匯流排恢復設備,這個設備監視I2C匯流排。當設備檢測到SDA信號被拉低超過指定時間時,就在SCL匯流排上產生9個時鍾脈沖,使I2C從設備完成讀操作,從死鎖狀態上恢復出來。匯流排恢復設備需要有具有編程功能,一般可以用單片機或CPLD實現這一功能。
(6) 在I2C上串人一個具有死鎖恢復的I2C緩沖器。
Ⅳ 死循環,死遞歸和死鎖對CPU的消耗有什麼異同點
死循環,死遞歸和死鎖對CPU的消耗基本相同,但是產生的原因是不一樣的。
一、死循環。
例如在VB語言程序中,下列語句:
Do While i=1
print "*"
Loop
就是一個死循環,運行它將無休止地列印*號。
不存在一種演算法,對任何一個程序及相應的輸入數據,都可以判斷是否會出現死循環。因此,任何編譯系統都不做死循環檢查。
在設計程序時,若遇到死循環,我們可以通過按下Ctrl+Pause/Break的方法,結束死循環。
然而,在編程中死循環並不是一個需要避免的問題,相反,在實際應用中,經常需要用到死循環。例如,我們使用的Windows操作系統下的窗口程序中的窗口都是通過一個叫消息循環的死循環實現的。在單片機、嵌入式編程中也經常要用到死循環。在各類編程語言中,死循環都有多種實現的方法,以C語言為例,可分別使用while.for,goto實現。
二、死鎖。
兩個或兩個以上的進程在執行過程中,由於競爭資源或者由於彼此通信而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的進程稱為死鎖進程。
計算機系統中,如果系統的資源分配策略不當,更常見的可能是程序員寫的程序有錯誤等,則會導致進程因競爭資源不當而產生死鎖的現象。
在兩個或多個任務中,如果每個任務鎖定了其他任務試圖鎖定的資源,此時會造成這些任務永久阻塞,從而出現死鎖。例如:事務A 獲取了行 1 的共享鎖。事務 B 獲取了行 2 的共享鎖。
排他鎖,等待事務 B 完成並釋放其對行 2 持有的共享鎖之前被阻塞。
排他鎖,等待事務 A 完成並釋放其對行 1 持有的共享鎖之前被阻塞。
事務 B 完成之後事務 A 才能完成,但是事務 B 由事務 A 阻塞。該條件也稱為循環依賴關系:事務 A 依賴於事務 B,事務 B 通過對事務 A 的依賴關系關閉循環。
三、死機及其對策。
無論是死循環還是死鎖,都會造成電腦死機現象。
電腦系統在工作中,有時候會出現滑鼠停滯、鍵盤不能輸入命令等情況,這時的系統已經不能接收任何命令,這種情況被稱為死機,死機可能是多種原因造成的,比如同時運行了過多的應用程序,程序的使用方法錯誤,電腦中某一硬體的損壞(比如硬碟或者內存)等都可能引起死機。解決的常用方法有:
同時按下鍵盤上的控制鍵加換檔鍵加刪除鍵,在顯示的列表中單擊【啟動任務管理器】命令,彈出【任務管理器】對話框,單擊出現問題的程序,再單擊【結束任務】按鈕,所選程序立即結束運行。在大多數情況下,都可以通過上述方法關閉已經失去響應的程序,並且可以繼續在Windows10中操作。
如果鍵盤已經不能輸入任何命令,可按下機箱上的復位鍵,幾秒鍾後電腦將重新啟動。
如果機箱上沒有復位鍵,可以直接按住機箱上的電源開關幾秒鍾,關閉電腦電源,稍後,再按機箱上的電源開關重新啟動電腦即可。
Ⅳ 單片機有哪幾種工作狀態
單片機有哪幾種?
好多好多種。
Ⅵ 請教如何讓單片機「死鎖」
讓單片機「死鎖」?是相當於死機的意思嗎?不再執行任何指令了?
這需要有條件的,即是在達到這個條件時,才進入死機狀態,否則,正常的工作都不能做了。例如:按了什麼鍵了,密碼鎖輸入密碼錯了,等等,才會進入死鎖狀態。
當達到這個條件後,執行一條無限循環指令就行了。
匯編程序:SJMP $ ;就在此處無限循環了
C語言程序:while(1); //就在此處無限循環了
Ⅶ 基於51單片機的電子密碼鎖系統設計製作材料要買些什麼東西,詳細點,我在網上只能找到圖片。急用啊!!!
購買的東西是很早悄多,不知道你PCB板是不是有了?
1、必須購買的硬體:
單片機 1片 stc89系列
按鍵 13個
晶振 1個 11.0592
瓷片電容 2個 30P
復位電容 1個 10@
復位電阻 1個 10K
USB座陸銀渣 1個
發光二極體 10個
蜂鳴器 1個
隔離電阻 10個 1K
2、硬體的焊接:
單片機最後安裝在插座內,因為40腳的單片機直接焊接,如果單片機燒毀,不容易換。
其他電阻、電容、按鈕類的,直接焊接便可。
千萬注意的是,焊接過程中防止靜電擊穿器件搏沖。
電烙鐵選擇30W左右的為宜。
3、單片機軟體的編寫:
硬體焊接無誤後,便可以著手軟體的編寫。
Ⅷ 單片機無論下載什麼程序進去都下不了,而且還一直發出很高頻率的聲音,像震動一樣
檢查電源和MAX232
檢查方法:
電源:就用萬族悄用表檢查了,這個就不說了。
MAX232:電源正常的話下載一個串口調試助手,先用鑷子或螺絲刀之類的東西將P3.0和P3.1短路,用串口調試助手向單片機下載所用的埠隨便發送一個數據,此時如核攜果接收串口返回了你發送的數據則說明MAX232是好的。
如改穗伏果檢查至此兩樣都是好的那麼極有可能是單片機損壞,買一片新的試試。
Ⅸ 單片機信號採集有干擾怎麼辦
1)你的信號採集是個什麼環境,傳輸距離很遠嗎;
2)單片機電源是獨立的嗎;
3)你的單片機需要和電腦一直連接著的嗎;