zq6220 发表于 2012-11-30 22:57:11

atmega16有没什么简单的方法可以识别单片机是否是第一次上电

atmega16有没什么简单的方法可以识别单片机是否是第一次上电啊? 我做的个板子,挂在机台上运行,可能是机台内部有很多大功率的继电器,板子偶尔会跑飞,单片机是ATMEGA16,
我用了看门狗,但是每次复位后都要初始化,费时间!所以有没什么简单的方法判断单片机是否是第一次上电呢?如果是第一次上电的话才初始化各个设备!

SmileEver 发表于 2012-11-30 23:20:14

个人之见:跑飞了当然要初始化。
如果硬要避开初始化,则在几个RAM中写入特定的数值,如0X55。启动后检测是否值有变动,如果有变动,视为第一次上电,如果没有变动,视为第二次上电。
如何?

huangdog 发表于 2012-11-30 23:23:26

AVR有个掉电的寄存器用来标志上次引起复位的原因,上电先读这个寄存器就知道单片机的复位源是什么了。但是话说跑飞后你还敢不重新初始化就继续工作?!!!

hsztc 发表于 2012-12-1 01:49:12

跑飞说明有干扰,有可能RAM寄存器等数据已经发生了变化,如果不初始化,可能后果很严重。

chengtina 发表于 2012-12-1 08:17:12

跑飞了你还是老实重新开始初始化吧

xslff 发表于 2012-12-1 09:26:36

胆大不要紧,只要手艺足够高!

zq6220 发表于 2012-12-1 11:29:41

huangdog 发表于 2012-11-30 23:23 static/image/common/back.gif
AVR有个掉电的寄存器用来标志上次引起复位的原因,上电先读这个寄存器就知道单片机的复位源是什么了。但是 ...

ATMEGA有那种寄存器吗?是哪个寄存器啊?

hsztc 发表于 2012-12-1 12:55:53

MCUCSR      

zq6220 发表于 2012-12-2 11:07:37

hsztc 发表于 2012-12-1 12:55 static/image/common/back.gif
MCUCSR

MCUCSR这寄存器上的位都会在上电复位时被清零呢!来得及读取他们吗?

hsztc 发表于 2012-12-3 01:23:37

zq6220 发表于 2012-12-2 11:07 static/image/common/back.gif
MCUCSR这寄存器上的位都会在上电复位时被清零呢!来得及读取他们吗?

你复位的时候并没有下过电,何来上电?

electricit 发表于 2012-12-3 06:13:41

你这样做是没用滴,想办法改电路,硬件稳定做好

fsclub 发表于 2012-12-3 08:36:57

做好稳定性能是根本,不要费力治标不治本。
页: [1]
查看完整版本: atmega16有没什么简单的方法可以识别单片机是否是第一次上电