不吃鱼的猫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会不会好一点呢? |
顶一下 |