[求助] rtcc闹钟中断为什么进不去,会是什么原因??

zhuanxing   2015-10-26 21:06 楼主
悬赏 5 分 芯积分未解决
#pragma interrupt InterruptHandlerHigh
void InterruptHandlerHigh (void)
{
     PIR3bits.RTCCIF=0;   
     read();
}

#pragma code high_vector =0x0008
void InterruptVectorHigh (void)
{
     _asm
     GOTO InterruptHandlerHigh                 
     _endasm

}
#pragma code
void main(void)
{
        //unsigned int i;
        OSCCONbits.SCS = 3;
        OSCCONbits.IRCF = 7;
    OSCTUNEbits.PLLEN = 1;                          //定义使用内部振荡器

    TRISAbits.TRISA5 = 0;
    DSCONHbits.RTCWDIS = 0;   
        ANCON0 = 0XFF;       
        ANCON1 = 0X1F;       
        T1CONbits.T1OSCEN = 1;       
        RTCC_Init();
       
        PIR3bits.RTCCIF = 0;                
        PIE3bits.RTCCIE = 1;
        IPR3bits.RTCCIP = 1;
               
        while(1)
        {

        }       
}

void unlock(void)
{
        _asm movlb 0x0F   _endasm
        INTCONbits.GIE = 0;
        EECON2 = 0X55;
        EECON2 = 0XAA;
    RTCCFGbits.RTCWREN = 1;
}
void setALARM(void)
{
        unsigned int t;
        unlock();
        ALRMCFGbits.ALRMEN = 0;
        while(RTCCFGbits.RTCSYNC==1);
       
        ALRMCFG |= 0x02;       

        ALRMVALL=0X01;   //day  11日
        ALRMVALH=0X01;   //month 12月

        ALRMVALL=0X00;   //hour 14时  
        ALRMVALH=0X05;      //weekday 星期五

        ALRMVALL=0X00;   //second  59秒
        ALRMVALH=0X00;   //minute  39分
       
        ALRMCFG |= 0x02;
       
        alarm.day = ALRMVALL;
        alarm.month = ALRMVALH;
       
        alarm.hour = ALRMVALL;
        alarm.week = ALRMVALH;
       
        alarm.seconds = ALRMVALL;
        alarm.minutes = ALRMVALH;
        RTCCFGbits.RTCEN = 1;
        RTCCFGbits.RTCWREN = 0;
}
void setRTCCtime(void)
{
        unlock();
        RTCCFGbits.RTCEN = 0;
        ALRMCFGbits.ALRMEN = 0;
        ALRMCFGbits.AMASK = 0;
        ALRMRPT = 0;               
        ALRMCFGbits.CHIME = 1;
        PADCFG1 = 0X00;
        RTCCFG |= 0x03;       
        RTCVALL=0X15; //year 0x
        RTCVALH=0X0;

        RTCVALL=0X31; //day
        RTCVALH=0X12; //month

        RTCVALL=0X23; //hour
        RTCVALH=0X04; //weekday

        RTCVALL=0X58; //second
        RTCVALH=0X59; //min 0x
       
        RTCCFGbits.RTCOE = 0;
        ALRMCFGbits.ALRMEN = 1;       
        RTCCFGbits.RTCWREN = 0;
}

void RTCC_Init(void)
{
        setRTCCtime();
       
        setALARM();
       
}

为什么中断进不去呢,求高手来看一下,时钟正常,alarm寄存器也写入了,就是在中断进不去?为什么?

回复评论 (7)

中断设置清楚了么?中断开启了么?有没有中断位关闭着?检查下~给你发群里呼唤大神们来看看了~
玩板看这里: https://bbs.eeworld.com.cn/elecplay.html EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
点赞  2015-10-27 08:35
引用: okhxyyo 发表于 2015-10-27 08:35
中断设置清楚了么?中断开启了么?有没有中断位关闭着?检查下~给你发群里呼唤大神们来看看了~

中断允许了,高优先级,中断标志位已经清零
点赞  2015-10-27 09:18
引用: zhuanxing 发表于 2015-10-27 09:18
中断允许了,高优先级,中断标志位已经清零

有个中断屏蔽位我记得,那个弄了么
玩板看这里: https://bbs.eeworld.com.cn/elecplay.html EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
点赞  2015-10-27 09:27
引用: okhxyyo 发表于 2015-10-27 09:27
有个中断屏蔽位我记得,那个弄了么

我看了一下这款芯片好像没有需要设置的中断屏蔽位
点赞  2015-10-27 09:43
所使用芯片型号是什么?
点赞  2015-10-27 11:51
需要配置PEIE = 1,GIE = 1;才可以进入中断
点赞  2015-10-27 13:03
RTCC中断是固定1s进一次吗
点赞  2018-6-27 18:25
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复