|
本帖最后由 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” 来清除。
为了使用这些复位标志来识别复位条件,用户应该尽早读取此寄存器的数据,然后将其复
位。如果在其他复位发生之前将此寄存器复位,则后续复位源可以通过检查复位标志来了
解
编辑原因:增加熔丝配置。 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|