![]() |
發布時間: 2020-12-25 09:16
正文摘要:本帖最后由 不吃魚的貓2012 于 2021-1-12 13:05 編輯 采用MAX813來代替復位電路(未單獨采用復位電路),在while(1)大循環中喂狗,設備上電、調試、現場運行均正常,但是不定期有幾臺出現程序跑飛的現象,感覺就 ... |
不吃魚的貓2012 發表于 2021-1-12 13:04 樓主的程序寫得有點繁雜,嵌套有點深。全局變量滿天飛,也沒有注釋,看得眼花繚亂。感覺是兩路18B20組成的多點溫度監控報警電路。按常理這點功能有其一半的代碼量就夠了。樓主懷疑MAX813看門狗不能復位這很容易判斷。沒有示波器用萬用表也能根據平均電壓判斷喂狗脈沖和復位脈沖的存在。程序中也沒有看出《最近發現一次是在不停按按鈕時出現過一次類似現象》的按鈕在哪。操控出問題也不一定是程序跑飛。數據類型使用不當也是常見因素。振動環境也有可能使按鈕觸點不穩定。不知樓主實際電路采用哪個型號MCU。STC的芯片內置看門狗和EEPROM,EEPROM保存運行數據,測試過程中人為引發看門狗復位,如果不是做了標記,直觀感覺不到熱復位重啟過程。 |
我最近發現過一次:是在不停按按鈕時出現類似現象,重啟設備又正常了,請問是什么原因早成的? |
您的意思是放在初始化函數的最后一句(中斷初始化后面)嗎?void INIT_main() { //P0=0xff; P1=0xff; //JBTZ_moto(); INIT_BJmoto(); second=second_30=count=second_300=BJ_count=count_clk=second_clk=an_count=second_1=beep=0; FBAN_flag=CLAN_flag=BJ_flag=flag_sh=flag_hw=power_flag=JR_flag=DW_flag=GW_flag=JR_GZ_flag=0; EA=1; ET0=1; ET1=1; TR0=1; TR1=0; TMOD=0x11; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TH1=(65536-250)/256; TL1=(65536-250)%256; JBTZ_moto(); } 我現在直接把這句話刪掉了,還是會出現這個問題, |
會不會是數碼管掃描引起混亂? |
glinfei 發表于 2020-12-28 14:26 關鍵有故障的時候才能看到,有時候幾天都沒有故障,偶爾有一個出現這種現象。100個里面過幾天偶爾有1個出現這種問題,只要出過這種問題的,重啟正常后,連續運行10天都沒有問題。 |
不吃魚的貓2012 發表于 2020-12-28 12:56 總之,我的意思程序跑飛跟變量的值有關,雖然程序反復不能喂狗而復位,但初始化沒做好,變量的值一直處于無法執行下去的狀態,導致反復的復位,建議觀察一下RST,估計一直在復位。但如果冷啟動就清了變量,進而就正常了。如果我說的對,那PCB板還是少改吧,多麻煩啊。 |
不吃魚的貓2012 發表于 2020-12-28 12:56 就是放到初始化的最后,也不行嗎? 我建議你重點考慮一下,復位與冷啟動對變量的差異。另外,1、用狗的時候,時間中斷應該先賦值再開中斷;2、T1時間太短吧? |
glinfei 發表于 2020-12-28 11:40 放在初始化函數的最后一句嗎? |
麥麥123 發表于 2020-12-28 12:51 麻煩標注一下 |
我感覺是中斷程序出問題了 |
本帖最后由 不吃魚的貓2012 于 2020-12-28 12:17 編輯 glinfei 發表于 2020-12-28 11:40 您的意思是放在初始化函數的最后一句(中斷初始化后面)嗎?void INIT_main() { //P0=0xff; P1=0xff; //JBTZ_moto(); INIT_BJmoto(); second=second_30=count=second_300=BJ_count=count_clk=second_clk=an_count=second_1=beep=0; FBAN_flag=CLAN_flag=BJ_flag=flag_sh=flag_hw=power_flag=JR_flag=DW_flag=GW_flag=JR_GZ_flag=0; EA=1; ET0=1; ET1=1; TR0=1; TR1=0; TMOD=0x11; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TH1=(65536-250)/256; TL1=(65536-250)%256; JBTZ_moto(); } |
glinfei 發表于 2020-12-25 15:07 程序已經上傳到附件,麻煩幫我看看呢? |
anli88 發表于 2020-12-28 10:04 程序已經貼在附件,麻煩幫我看看呢? |
你的程序有沒有沒寫錯呢? |
本帖最后由 不吃魚的貓2012 于 2020-12-28 09:20 編輯 程序已經貼出來了,麻煩看看那里有毛病,我最近發現我的PCB板上繼電器離晶振太近,會不會是這個原因造成的? |
2.87 KB, 下載次數: 17
本帖最后由 不吃魚的貓2012 于 2020-12-28 09:28 編輯 會不會是因為數碼管時間太長,引起中斷沖突,我吧數碼管驅動由原來的74HC573改成MAX7219會不會好一點呢? |
頂一下 |