feifan00 发表于 2012-9-17 17:37:54

求助:PCF8563无中断输出

硬件是LM3S6911+PCF8563T,INT脚上拉一个10K的电阻;
现在PCF8563时钟读写都没有问题了,现在需要做一个功能:每小时中断一次,做了以下的尝试:
1.    现在把PCF8563T的分钟报警寄存器设成0x00,把控制/状态寄存器2设成0x02(AIE=1),没有中断输出;
2.   又尝试把控制/状态寄存器2设成0x12(TI/TP=1,AIE=1),还是没有中断输出;
3.   又尝试把控制/状态寄存器2设成0x13(TI/TP=1,AIE=1,TIE=1),倒计时控制寄存器设成0x81,倒计时计数器设成60,还是没有中断输出。
现在实在是无辄了,只好求助大家。

jiaowoxiaolu 发表于 2012-9-17 18:10:31

/********************************************************************
设置闹钟,                                                (TIMER被关)
输入:Time结构体
                contol         =0为全开闹钟,
                contol         bit0=1        :关分闹钟
                                bit1=1        :关时闹钟
                                bit2=1        :关日闹钟
                                bit3=1        :关星期闹钟
时间到INT引脚(PB8)有一个低电平               
***********************************************************************/
bool STE_Alarm (struct TIME *tm,u8 Contol)        //设置闹钟:min.hh.day.wday
{                                                                                  //Contol bit:0   12   3          
        if(tm->tm_min>59)return FALSE;
        if(tm->tm_hour>24) return FALSE;
        if(tm->tm_mday>31) return FALSE;
        if(tm->tm_wday>6)return FALSE;

        if(Contol&0x01)
                tm->tm_min|=0x80;                        //关分闹钟
        if(Contol&0x02)
                tm->tm_hour |=0x80;                        //关时闹钟
        if(Contol&0x04)
                tm->tm_mday |=0x80;                        //关日闹钟
        if(Contol&0x08)
                tm->tm_wday |=0x80;                        //关星期闹钟       

    if(!I2C_Start())return FALSE;
    I2C_SendByte(0xa2);                  
    if(!I2C_WaitAck()){I2C_Stop(); return FALSE;}
    I2C_SendByte(0x09);                                                //star addr   
    I2C_WaitAck();               
    I2C_SendByte(shi_to_bcd(tm->tm_min));        //min      
    I2C_WaitAck();       
    I2C_SendByte(shi_to_bcd(tm->tm_hour));        //hh
    I2C_WaitAck();
    I2C_SendByte(shi_to_bcd(tm->tm_mday));        //dd      
    I2C_WaitAck();       
    I2C_SendByte(tm->tm_wday);                                //wdd
    I2C_WaitAck();   
    I2C_Stop();

        if(!I2C_Start())return FALSE;       
    I2C_SendByte(0xa2);        //写器件地址
    if(!I2C_WaitAck()){I2C_Stop(); return FALSE;}
    I2C_SendByte(0x01);        //写起始地址   
    I2C_WaitAck();       
    I2C_SendByte(0x02);        //01H,控制/状态寄存器2开闹钟中断输出   
    I2C_WaitAck();
        I2C_Stop();

    return TRUE;
}

feifan00 发表于 2012-9-18 10:37:27

jiaowoxiaolu 发表于 2012-9-17 18:10 static/image/common/back.gif


看了你的代码,跟我的代码比较,我认为我的也没有问题啊,我也是把控制/状态寄存器2设成0x02(AIE=1),分钟报警AE设成0。但是为什么就没有输出呢?

airwolf09921 发表于 2014-5-27 01:08:11

楼主问题解决了吗?我也遇见了同样的问题,求帮助!

hfjydq 发表于 2017-4-26 17:52:50

feifan00 发表于 2012-9-18 10:37
看了你的代码,跟我的代码比较,我认为我的也没有问题啊,我也是把控制/状态寄存器2设成0x02(AIE=1),分 ...

楼主解决了吗?我遇到的问题跟你的一模一样
页: [1]
查看完整版本: 求助:PCF8563无中断输出