搜索
bottom↓
回复: 14

RTC中的寄存器读/写的原子性.

[复制链接]

出0入0汤圆

发表于 2012-4-19 23:27:15 | 显示全部楼层 |阅读模式
在手册中没有提及怎么保证读/写24位寄存器的原子性. 如果单片机是参考atmal的话,是否是有不可见的临时寄存器存放高位的寄存器值?

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2012-4-19 23:49:53 | 显示全部楼层
仁兄说24bit寄存器的RTC,貌似没有。

出0入0汤圆

发表于 2012-4-19 23:56:45 | 显示全部楼层
the usual solution is to continue to read the rtc until two consecutive reads return the same value.

出0入0汤圆

发表于 2012-4-20 00:08:24 | 显示全部楼层
没有读取24位寄存器的指令吧? 或者读的时候停止计数一下?

V1.1 P79:
$D3 RTCTOPH          RTC 定时寄存器中间字节

错了吧?

出0入0汤圆

发表于 2012-4-20 00:40:41 | 显示全部楼层
本帖最后由 LGT 于 2012-4-20 00:41 编辑

RTC中没有实现LZ所说的shadow registers. 安全的做法如3、4楼所言:
1. 连续读2次, 相同为有效
2. 读之前关闭RTC

建议操作之前关闭系统中断使能 (CLI)

因为系统RTC的时钟为1KHz左右, 远远低于系统时钟, 所以以上两种做法都是可行的。
另外, RTC的时钟精度并不高, 不建议用于精确定时。

to 楼上, 请参考V1.2, 已经修正。

出0入0汤圆

发表于 2012-4-20 07:20:59 | 显示全部楼层
RTC 1K HZ,正好把寄存器的值作为时钟节拍。
不过就是24位有点难操作,换成32位更好。

出0入0汤圆

发表于 2012-4-20 08:08:10 | 显示全部楼层
不过就是24位有点难操作,换成32位更好。


agreed. with 32-bit rtc registers, you can use the standard timing functions in time.h, making the code infinitely more portable.

出0入0汤圆

 楼主| 发表于 2012-4-20 09:25:25 | 显示全部楼层
logicgreen 发表于 2012-4-19 23:49
仁兄说24bit寄存器的RTC,貌似没有。

没有吗?我看到编程手册上有描述. v1.2版的 81页.

出0入0汤圆

发表于 2012-4-20 10:26:49 | 显示全部楼层
bank741236 发表于 2012-4-20 09:25
没有吗?我看到编程手册上有描述. v1.2版的 81页.

可用于定时唤醒功能,不过精度有待测试。

出0入0汤圆

 楼主| 发表于 2012-4-20 10:27:08 | 显示全部楼层
另外文档中有些内容貌似前后矛盾. 引脚说明中PB3-0,PC3-0,PD5-0, 但是在封装图上却看到 PC6(5) PD6(16) PD7(15)
还有个问题,当作为通用输出时,引脚最大输出电流有多大?

CC: LGT
没有shadow register?那么读取T1值就必须暂停然后才读取或者设置了,而且这个是唯一的可靠方法了,因为在Fsys/1的情况下,读2次比较相同行不通. 我的理解对吗?

出0入0汤圆

发表于 2012-4-20 10:32:53 | 显示全部楼层
bank741236 发表于 2012-4-20 10:27
另外文档中有些内容貌似前后矛盾. 引脚说明中PB3-0,PC3-0,PD5-0, 但是在封装图上却看到 PC6(5) PD6(16) PD7 ...

读两次相同 行得通。

关闭中断,读两次,两次相同,就为 寄存器的值。
如果两次的值不同,再度一次,就为 寄存器的值。

出0入0汤圆

发表于 2012-4-20 10:43:40 | 显示全部楼层
1. 多谢提醒, 引脚说明部分是有遗漏, 请以封装图为准。 我们将在下一版本中改正。
    在手册V1.2的19页, PMCR寄存器描述中, 参考CFDS控制位的介绍。

2. 可以连续读两次,比较高位(高16位)相同即有效。 即使在Fsys/1的情况下, 也是可以的。 不用关闭RTC

3. 此RTC设计的目的是用于Power/off之后的定时唤醒, 不建议将RTC时钟用于系统工作。

出0入0汤圆

 楼主| 发表于 2012-4-20 11:44:10 | 显示全部楼层
LGT 发表于 2012-4-20 10:43
1. 多谢提醒, 引脚说明部分是有遗漏, 请以封装图为准。 我们将在下一版本中改正。
    在手册V1.2的19页 ...

我看到了谢谢,最大输出是25mA.

关于第二点,你应该指的是不用关TIMER1吗?

另外精调内部时钟,有什么方案可以在量产时快速调整时钟?

出0入0汤圆

发表于 2012-4-20 12:56:24 | 显示全部楼层
恩, 是指的不用关闭Timer1/0

我们量产的芯片都是经过校准的, 用户不需要自己校准。
用户通过读取OSCCAL ($66), 可以得到这个出厂的校准值。

出0入0汤圆

 楼主| 发表于 2012-4-20 17:31:49 | 显示全部楼层
通用输出脚能并联起来输出以增加驱动能力吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-13 00:39

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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