打印
[ZLG-ARM]

请教LPC2138定时器及RTC问题

[复制链接]
2137|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
eaglewing|  楼主 | 2007-9-12 13:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目前正在做这样一个实验:系统正常工作几秒后即进入掉电模式,掉电的唤醒由RTC中断担任。我用定时器对正常工作状态计数,定时器每秒产生一次中断,10秒后控制系统进入掉电状态。RTC采用独立时钟源,每隔一分钟产生一次中断。为了便于观察,当系统正常工作时控制一个LED闪烁;每次进入掉电另一个LED也闪烁。问题是每次掉电唤醒所用的时间很不稳定,十几秒、二十几秒、三十几秒都有。这是怎么回事?实在是想不通!请解答!下面是俺的代码。

#include "config.h"
uint8 i;

void __irq IRQ_Timer0(void);
void __irq IRQ_Rtc(void);

void __irq IRQ_Timer0(void)
{
    i=i+1;
    {
        if((IO0SET&(1<<8))==0)
            IO0SET=1<<8;
        else
            IO0CLR=1<<8;
    }
    if(i==10)
    {
        CCR=0x11;
        i=0;        
        PCON=0x02;    
    }
    T0IR=0x01;
    VICVectAddr=0x00;
}

void __irq IRQ_Rtc(void)
{
    if((IO0SET&(1<<9))==0)
        IO0SET=1<<9;
    else
        IO0CLR=1<<9;
    ILR=0x01;
    VICVectAddr=0x00;
}

int main(void)
{
    i=0;
    IO0DIR=(1<<8)|(1<<9);
    IO0SET=(1<<8)|(1<<9);
    IRQEnable();
    
    T0TC=0;
    T0PR=0;
    T0MCR=0x03;
    T0MR0=Fpclk/4;
    T0TCR=0x01;
    
    CCR=0x12;         //对RTC进行设置
      CIIR=0x02;
      ILR=0x03;
//      CCR=0x11;
      INTWAKE=1<<15;
    
    VICIntSelect=0x00;
    VICVectCntl0=0x24;
    VICVectCntl2=0x2D;
    VICVectAddr0=(uint32)IRQ_Timer0;
    VICVectAddr2=(uint32)IRQ_Rtc;
    VICIntEnable=(1<<4)|(1<<13);
    while(1);
    return 0;
}

相关帖子

沙发
guohuimao| | 2008-8-18 10:53 | 只看该作者

时钟及RTC

确实,其计数时有些问题。我的程序也是这样,定时采样20S,自动停止采样时,时间在20S左右几秒都有可能,不一定准确。
另外RTC由3V电池供电时,也是不能连续工作。。。踩在屎上啦!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

15

帖子

0

粉丝