请问下,
现象:就是我在使用MSP430FR5887单片机的ESI功能时候,当手碰触到低速晶振时候,导致晶振不稳定,感觉程序运行跑飞了,没有在主循环中运行。
1、我怀疑的是,因为我ESI使用的外部低速的晶振32.768KHZ,其他功能都关闭了,所以手碰触到晶振后,会导致进入ESI中断,我用调试模式有印证有进入ESI中断。
2、然后我怀疑可能原因是频繁进入ESI中断,然后在进入中断前关闭总中断,退出时候再打开,但是用手碰触,发现还是跑飞了。
3、我去掉ESI,运行,用手碰触,看功耗,有进入芯片休眠模式,然后我在醒来的后面有做点平输出,发现有电平输出。那应该就是外部低频不稳定,导致ESI频繁中断,然后导致芯片跑飞了。
以上就是我做的步骤,问下芯片晶振不稳定时候,可以有什么方式使其复位吗?我记得其他单片机当出现不稳定的时候会复位的。
灰小子:
勘误手册里有个ESI的bug,你看看是不是掉这个坑里了
user3877568:
回复 灰小子:
应该不是这个坑,因为我在ESI中断里面就只有清除中断,感觉是手碰到晶振后,程序跑飞了,我用示波器看了晶振的振荡和ESI振荡都正常,但是程序运行就是不正常
user3877568:
现在我处理方式是在ESI中关闭总中断,然后在ESI中判断CSCTL5中的LFXTOFFG是否为1,如果为1,则清空,并重新配置振荡寄存器,这样效果上会好很多,但是碰触晶振还是偶尔出现电流大的情况。正常工作休眠功耗在7uA左右,但是如果碰触晶振,有时候会达到40uA。这时候芯片肯定是休眠的,但是LFXTOFFG这个我猜测应该是为1的,晶振振荡用示波器看恢复了正常。但是电流没有降下来,这个是不是芯片起振时候的BUG
gaoyang9992006:
回复 user3877568:
好多单片机都是不可以手摸晶振的,都容易引起停振和跑飞。实际的产品,你也是摸不到晶振的。
user3877568:
回复 gaoyang9992006:
就是产品是电池类的产品,就是放入外壳的时候就已经上电运行了,这时候组装的人万一碰触,这时候也不好检测功耗,这样不是会带来产品的不稳定性。
我的设想是晶振碰到没关系,只要能碰触后复位或者什么措施让他重新进入低功耗休眠就可以了。但是现在是进入休眠,但是功耗没下去,应该是晶振振荡带来的,我有试过在休眠时候大电流后,强制一个定时器唤醒源, HWREG8(CS_BASE + OFS_CSCTL5) &= ~(LFXTOFFG);判断清空这个标志位,再进入休眠后电流就降下来了,所以几乎可以判断芯片外部低频晶振当有错误标志的时候,导致的功耗上去休眠功耗在36uA左右。