硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2597|回复: 6
收起左侧

[其它] DS1302使用的疑惑

[复制链接]

58

主题

267

回帖

446

积分

高级会员

积分
446
发表于 2019-9-17 14:14:33 | 显示全部楼层 |阅读模式
目前在使用DS1302时钟芯片。基本操作什么的都没问题,但有个疑问。
在写入或读取时间寄存器的时候,是一个一个读写的,那有没有可能刚好写了一半然后芯片内部自动进位了,造成数据错误的情况呢?
比如现在时间为10:59:59,马上就要变成11:00:00了。这时候我想更新时间为12:00:00,先写入了小时寄存器为12,芯片内部寄存器就变成了12:59:59,后面还没写的时候,芯片进位了,就会变成13:00:00,接着再写分钟和秒钟寄存器为0,那实际时间就会变成13:00:00。

这个现象应该是有可能发生的吧?读时间也是一样的,先读一个寄存器,在后面还没读的时候时间变了,那么再读取后面的就会出错。
有个办法是先将秒钟寄存器的bit7置1,时间就不会更新,再读写。但这样子对写入时间是没问题,但是读取时间的时候,每次都要停止更新,次数多了就会影响计时精度。


有没有更好的解决办法呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2019-9-17 14:50:48 | 显示全部楼层
配置后,可以考虑读取简单验证下。
回复

使用道具 举报

58

主题

267

回帖

446

积分

高级会员

积分
446
 楼主| 发表于 2019-9-17 18:13:47 | 显示全部楼层
eric2013 发表于 2019-9-17 14:50
配置后,可以考虑读取简单验证下。

配置的时候可以验证,但只要关掉了更新位,那就不验证也不会有问题。主要是读取的时候,为了确保读到的时间是对的,估计是要读两次,两次相同才行。暂时也没想到其他更加简单的方法了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2019-9-18 00:17:33 | 显示全部楼层
ihavedone 发表于 2019-9-17 18:13
配置的时候可以验证,但只要关掉了更新位,那就不验证也不会有问题。主要是读取的时候,为了确保读到的时 ...

关掉靠谱
回复

使用道具 举报

36

主题

1445

回帖

1553

积分

至尊会员

积分
1553
发表于 2019-9-18 18:07:22 | 显示全部楼层
一般时钟都有缓存,或者读取的时候停止更新。
回复

使用道具 举报

36

主题

1445

回帖

1553

积分

至尊会员

积分
1553
发表于 2019-9-18 18:07:51 | 显示全部楼层
看图:
DS1302.jpg
RX8010SJ.jpg
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2019-9-18 18:47:29 | 显示全部楼层

还是兄弟认真,直接帮忙看下手册
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 13:15 , Processed in 0.211555 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表