求助: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,还是没有中断输出。
现在实在是无辄了,只好求助大家。 /********************************************************************
设置闹钟, (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;
} jiaowoxiaolu 发表于 2012-9-17 18:10 static/image/common/back.gif
看了你的代码,跟我的代码比较,我认为我的也没有问题啊,我也是把控制/状态寄存器2设成0x02(AIE=1),分钟报警AE设成0。但是为什么就没有输出呢? 楼主问题解决了吗?我也遇见了同样的问题,求帮助! feifan00 发表于 2012-9-18 10:37
看了你的代码,跟我的代码比较,我认为我的也没有问题啊,我也是把控制/状态寄存器2设成0x02(AIE=1),分 ...
楼主解决了吗?我遇到的问题跟你的一模一样
页:
[1]