Doci 发表于 2019-11-7 13:52:25

mega64受到干扰复位,如何解决啊?

本帖最后由 Doci 于 2019-11-7 16:01 编辑

如题,
硬件电路:mega64,用12V开关电源+LM2576降压到5V供电,复位引脚都上拉10K,和对地104电容。12M晶振,熔丝位0xFFC19F。
复位现象,mega64上电正常工作后,同一个插座再引一根220V线接另一个别的设备或者开关电源,这个220V接头接触不好打火后,MEGA64就有可能产生复位,概率很大。
软件查看复位源:不属于下面任何一个。输出为 Reset error
请问大神有什么办法能解决吗?
unsigned char value_reset = 0;
value_reset = MCUCSR;
MCUCSR = 0;
init_devices();
RS_EN;
if(value_reset & 0x1F)
{
if(value_reset & 0x01)
      SendS(">Reset 1:Power Up\n");
if(value_reset & 0x02)
      SendS(">Reset 2:Extern\n");
if(value_reset & 0x04)
      SendS(">Reset 3:Power Down\n");
if(value_reset & 0x08)
      SendS(">Reset 4:WatchDog\n");
if(value_reset & 0x10)
      SendS(">Reset 5:JTAG\n");
}
else
{
SendS(">Reset error");
}
附:

MCUCSR寄存器说明
在 ATmega103 兼容模式下只有 EXTRF 和 PORF 存在。
• Bit 4 – JTRF: JTAG 复位标志
通过 JTAG 指令 AVR_RESET 可以使 JTAG 复位寄存器置位,并引发 MCU 复位,并使
JTRF 置位。上电复位将使其清零,也可以通过写 ”0” 来清除。
• Bit 3 – WDRF: 看门狗复位标志
看门狗复位发生时置位。上电复位将使其清零,也可以通过写 ”0” 来清除。
• Bit 2 – BORF: 掉电检测复位标志
掉电检测复位发生时置位。上电复位将使其清零,也可以通过写 ”0” 来清除。
• Bit 1 – EXTRF: 外部复位标志
外部复位发生时置位。上电复位将使其清零,也可以通过写 ”0” 来清除。
• Bit 0 – PORF: 上电复位标志
上电复位发生时置位。只能通过写 ”0” 来清除。
为了使用这些复位标志来识别复位条件,用户应该尽早读取此寄存器的数据,然后将其复
位。如果在其他复位发生之前将此寄存器复位,则后续复位源可以通过检查复位标志来了


编辑原因:增加熔丝配置。

wye11083 发表于 2019-11-7 14:04:44

告诉你一个方法,淘宝花1000买个示波器,问题就解决了

t3486784401 发表于 2019-11-7 14:06:55

首先换个独立的电源,看是否是空间干扰。

然后再排除12V+2596 是否有坑

Doci 发表于 2019-11-7 14:10:56

t3486784401 发表于 2019-11-7 14:06
首先换个独立的电源,看是否是空间干扰。

然后再排除12V+2596 是否有坑

刚试了用电脑的USB口接单片机下载口供电也有这个现象{:sad:}

Doci 发表于 2019-11-7 14:12:04

wye11083 发表于 2019-11-7 14:04
告诉你一个方法,淘宝花1000买个示波器,问题就解决了

刚试了用电脑的USB口接单片机下载口供电也有这个现象{:sad:} ,用示波器从哪入手啊,看复位引脚?

t3486784401 发表于 2019-11-7 14:59:19

Doci 发表于 2019-11-7 14:12
刚试了用电脑的USB口接单片机下载口供电也有这个现象 ,用示波器从哪入手啊,看复位引脚? ...

直接看 CKOPT 熔丝,要勾选的;
然后就是空的 IO 口,至少上拉,最好输出确定的电平

tomzbj 发表于 2019-11-7 15:19:22

我的经验:1. DCDC后再过1117之类,从5V降到3.3V再进MCU;
2. MCU的全部引脚都不能对外直接暴露,如果不是经过USB-TTL之类转换IC的话,要么加光耦,要么加74,实在不行加电阻和箝位二极管。

Doci 发表于 2019-11-7 15:45:37

t3486784401 发表于 2019-11-7 14:59
直接看 CKOPT 熔丝,要勾选的;
然后就是空的 IO 口,至少上拉,最好输出确定的电平 ...

CKOPT勾选了,空的IO,外面没有接,配置的时候都配置成输出0了.

辣条 发表于 2019-11-7 17:55:01

AVR的抗干扰能力还是相当不错的

7L正解,再补充两点:
1、检查一下IO输出线的长度,尽量控制在200mm以内
2、电源输入加磁珠
3、把BOD位电压调低

bblythe2017 发表于 2019-11-8 10:13:46

AVR单片机,按正确的最基本电路的就可以正常不受干扰的工作。

wuha 发表于 2019-11-8 11:24:36

把板子想法用个电池供电,看排除是否电源影响,或者示波器捕获电源是否有干扰

Doci 发表于 2019-11-8 13:42:57

wuha 发表于 2019-11-8 11:24
把板子想法用个电池供电,看排除是否电源影响,或者示波器捕获电源是否有干扰 ...

电脑电池通过USBisp编程器供电,也会受干扰,概率低一些

wuha 发表于 2019-11-8 14:01:47

Doci 发表于 2019-11-8 13:42
电脑电池通过USBisp编程器供电,也会受干扰,概率低一些

那估计你电路有问题,或者用到假器件了吧,AVR单片机算是单片机里抗干扰比较好的了。

mcu5i51 发表于 2019-11-8 16:32:36

程序飞了,超出PC指针后回到了原点,可以在不用的空间加上指令跳转并做标记测试;
在硬件上找问题吧,下载中途都会出问题

zhaoyuanxian 发表于 2019-11-9 09:53:18

硬件加一些保护器件吧

K32 发表于 2019-11-23 11:49:09

MCU的电源上并TVS,串个电感或者磁珠啥的试试。这个干扰可能是通过开关电源的Y电容或者你外部电路中的某个接地点的回路进入MCU内部的。既然你可以多次复现干扰就说明干扰很好排查,只需要来个隔离示波器就OK了(或者普通的示波器电池供电),否则示波器本身的接地也会影响你的测量。如果没有测量条件,就逐个拆除外部电路的连线,拆到不受干扰为止。然后针对检查这部分电路的电流回路和结构设计

K32 发表于 2019-11-23 11:52:39

MEGA8/16/32/64/128基本上都属于第一代mega AVR.从AT90S过渡过来的产品,应该都算是抗干扰很好的产品。后面的mega 48/88/168之类的玩意抗干扰相比前面一代就差一些。

newuseruser 发表于 2019-11-23 17:40:24

AVR算单片机里抗干扰能力非常强的了,硬件部分要差到什么程度才能这样。放图出来呀,估计是有些必须连接的引脚没有接。

Doci 发表于 2019-11-23 19:44:15

newuseruser 发表于 2019-11-23 17:40
AVR算单片机里抗干扰能力非常强的了,硬件部分要差到什么程度才能这样。放图出来呀,估计是有些必须连接的 ...

大神帮忙看看,谢谢

shhludb 发表于 2019-11-24 06:38:55

复位脚加100u电解
页: [1]
查看完整版本: mega64受到干扰复位,如何解决啊?