2909|2

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于430 RTC的一个问题,请赐教 [复制链接]

我用RTC实现日历功能,使用BCD编码,提供设置日期功能。在设置年份是,当增大或减小年份数值,都能写入RTCYEAR寄存器,
但是当设置月份和day时,有时出现,增加或者减小数值后,执行写入寄存器功能,写不进去(寄存器不变)。
int SetRTCDAY(unsigned char day)
{
RTCDAY = (day);//
return 1;
}
红色执行寄存器写入,但是执行后寄存器值不变?不知道为什么。

还有就是如下现象,不断减小day值,从0x30减 1,BCD码应该为0x29,下面程序计算的结果是正确的,当执行蓝色的寄存器写入
语句后,寄存器值变成了0x38. 不知道这是什么原因?
if(dayBCD == 0x01)
   dayBCD = 0x31;
  else if((dayBCD & 0x0F) == 0)
  {
   dayBCD -= 0x10;
   dayBCD |= 0x09;
  }
  else
   dayBCD--;
SetRTCDAY(dayBCD);

最新回复

解决了吗  详情 回复 发表于 2016-5-4 15:09
 
点赞 关注

回复
举报

5276

帖子

5

TA的资源

裸片初长成(中级)

沙发
 
RTCCTL1里RTCBCD设置为 RTCBCD_H了么?

什么型号的cpu?什么类型的RTC?你是怎么读的?开发环境查看?

Because the system clock may in fact be asynchronous to the RTC_X clock source, special care must be
used when accessing the real-time clock registers.


When the counter clock is asynchronous to the CPU clock, any read from any RTCSEC,
RTCMIN, RTCHOUR, RTCDOW, RTCDAY, RTCMON, or RTCYEAR register while the
RTCRDY is reset may result in invalid data being read. To safely read the counting registers,
either polling of the RTCRDY bit or the synchronization procedure previously described can
be used. Alternatively, the counter register can be read multiple times while operating, and a
majority vote taken in software to determine the correct reading.
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 

回复

22

帖子

1

TA的资源

一粒金砂(初级)

板凳
 
解决了吗
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表