[ZLG-ARM] 请教LPC2138定时器及RTC问题

[复制链接]
2894|1
 楼主| eaglewing 发表于 2007-9-12 13:58 | 显示全部楼层 |阅读模式
目前正在做这样一个实验:系统正常工作几秒后即进入掉电模式,掉电的唤醒由RTC中断担任。我用定时器对正常工作状态计数,定时器每秒产生一次中断,10秒后控制系统进入掉电状态。RTC采用独立时钟源,每隔一分钟产生一次中断。为了便于观察,当系统正常工作时控制一个LED闪烁;每次进入掉电另一个LED也闪烁。问题是每次掉电唤醒所用的时间很不稳定,十几秒、二十几秒、三十几秒都有。这是怎么回事?实在是想不通!请解答!下面是俺的代码。<br /><br />#include&nbsp;&quot;config.h&quot;<br />uint8&nbsp;i;<br /><br />void&nbsp;__irq&nbsp;IRQ_Timer0(void);<br />void&nbsp;__irq&nbsp;IRQ_Rtc(void);<br /><br />void&nbsp;__irq&nbsp;IRQ_Timer0(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;i=i+1;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((IO0SET&(1&lt&lt8))==0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IO0SET=1&lt&lt8;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR=1&lt&lt8;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;if(i==10)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCR=0x11;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PCON=0x02;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;T0IR=0x01;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr=0x00;<br />}<br /><br />void&nbsp;__irq&nbsp;IRQ_Rtc(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;if((IO0SET&(1&lt&lt9))==0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IO0SET=1&lt&lt9;<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR=1&lt&lt9;<br />&nbsp;&nbsp;&nbsp;&nbsp;ILR=0x01;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr=0x00;<br />}<br /><br />int&nbsp;main(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;i=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0DIR=(1&lt&lt8)|(1&lt&lt9);<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0SET=(1&lt&lt8)|(1&lt&lt9);<br />&nbsp;&nbsp;&nbsp;&nbsp;IRQEnable();<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;T0TC=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;T0PR=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;T0MCR=0x03;<br />&nbsp;&nbsp;&nbsp;&nbsp;T0MR0=Fpclk/4;<br />&nbsp;&nbsp;&nbsp;&nbsp;T0TCR=0x01;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;CCR=0x12;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//对RTC进行设置<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CIIR=0x02;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ILR=0x03;<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCR=0x11;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INTWAKE=1&lt&lt15;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICIntSelect=0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectCntl0=0x24;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectCntl2=0x2D;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr0=(uint32)IRQ_Timer0;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr2=(uint32)IRQ_Rtc;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICIntEnable=(1&lt&lt4)|(1&lt&lt13);<br />&nbsp;&nbsp;&nbsp;&nbsp;while(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}<br />
guohuimao 发表于 2008-8-18 10:53 | 显示全部楼层

时钟及RTC

确实,其计数时有些问题。我的程序也是这样,定时采样20S,自动停止采样时,时间在20S左右几秒都有可能,不一定准确。<br />另外RTC由3V电池供电时,也是不能连续工作。。。踩在屎上啦!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

15

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部