![]() |
發布時間: 2020-12-24 14:44
正文摘要:這個自鎖電路哪位大哥看得懂的,幫忙分析一下。VPP為電池電壓(接3.7V的鋰電池),POWER1接電源開關按鈕(按鍵按下接地)。INTI、P301接單片機IO口,怎么控制這兩個IO口電平達到開關機的作用 |
void main(void) { . . . . while(1) { P301=0; } } |
cheney03 發表于 2020-12-26 20:10 上電開機,這個要從硬件上去查了,測一下Q301的G極電壓,看是不是這個MOS管壞了或焊錯了 P301置低不關機,你還要查一下,是不是被其它代碼置位了, 正常的來說,關機過程是先把要保存的數據存好,然后P301置低,之后不再運行任何代碼。 |
感謝大家的解釋。 這非常有幫助。 |
名字不是重點 發表于 2020-12-25 13:32 還有兩個問題,能再幫忙分析一下嗎 ①接上電池,沒按POWER1鍵,我單片機就有電工作了 ②單片機運行后,我程序中直接置P301=0;(沒按POWER1鍵,POWER1為高電平),沒關機,而是單片機復位重新上電 (主電路電壓)VDD=5V,(電池電壓)VPP=4V,單片機IO口輸出3.3V(上面兩個問題跟這些電壓有沒關系) |
1樓講述很清晰了 |
power為低/P301為高,這個兩條件有一個為真時,Vpp不掉電,都為假時,掉電 |
本帖最后由 cheney03 于 2020-12-24 23:04 編輯 cheney03 發表于 2020-12-24 20:18 上面說的是在程序執行過程中 P301=0;當執行到這條語句會不會關機?或者在單片機初始化設置P301=0;能不能開機? |
本帖最后由 cheney03 于 2020-12-24 22:56 編輯 名字不是重點 發表于 2020-12-24 14:44 還有個疑問我程序中直接設置P301為低電平(不按POWER1鍵,也不檢測INT1電平),會不會關機? |
名字不是重點 發表于 2020-12-24 14:44 分析很正確,也很詳細,分給你了 ![]() |
開機: power1按下,Q301的G極經D302/R303拉低而導通,VPP得電供CPU, CPU上電初始IO后,P301輸出高電平,致Q302導通, Q301的G極通過R304/Q302被鎖定為導通態,此時即使POWER1釋放,也不會斷電。 關機: power1按下(最好能軟件設為長按),CPU檢測到INT為低,開始計時, 計時超過設定值時,啟動關機程序,待power1釋放后,P301輸出低電平, Q302截止、Q301截止,VPP失電,CPU失電,完成關機。 這個電路很常見,邏輯分析并不難。 |