AVR单片机定时器2异步时钟模式进行休眠定时唤醒时,定时器不工作的问题总结

AVR单片机ATMEGA88利用定时器2异步时钟模式进行休眠定时唤醒时,定时器不工作的问题总结

今天调试一个ATMEGA88单片机项目,碰到一个很奇怪的问题,因项目需求,需要低功耗设计,所以在工作期间,会打开休眠模式,我的休眠设置是设为省电模式,因为项目需要设置定时进行数据采集操作,所以利用了单片机的定时器2作异步时钟,外接32.768KHz的晶振作基准时钟源,用来作秒定时中断,结果在调试时发现程序并未按照设定的定时状态工作,在进入休眠后,定时器没有正常唤醒休眠。经过2天的调试摸索,在程序中发现在进入休眠前,需要增加一个延时,等待CPU内部处理寄存器全部OK后再进入休眠指令,定时器才能正常工作,否则,如果定时器第一次唤醒后立即进入休眠指令,定时器就工作异常了,导致后续的溢出中断唤醒休眠不工作(也有可能是定时器状态不正常,自己没有正常计时)。

查数据手册,其中138页开始有几段关于定时器2异步模式的说明:

 最终经过调试,我的程序如下:

 经过测试,定时时间是很准确的,比喻我测试时,设置定时10S唤醒一次,通过串口打印唤醒标志,结果如下:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值