Cypress技术论坛
直播中

徐伟

7年用户 936经验值
私信 关注
[问答]

rtc api的提取方法是什么?

你好
我试图使用RTC来跟踪时间,但是对于一些提取值的方法来说,我遇到了一些困难。
RTCHSETATEDATAND时间(0x00亿,0x14000 0101);尝试启动时间为00;00;00(HH;mm;SS)和年为2000;01;01(YYYY;MM;DD)的值。
对于提取和控制,我只使用GATDATAB+CyScript(Windows)。
RTCHETGATEDATEOND(时间;DATEtiME);Time= DATETME.DATE;DATATEMEDATE(4)=RTCGETGESTEN(时间);DATATEMEDATE(5)=RTCHETGETMILL(时间);DATA(6)=RTCI GethRes(时间);DATATEMEDATE [7 ]=RTCH-GETDAY(DATE);DATATEMEDATE [8 ]=RTCH-GET月(日期);
//DATA(9)=((RTCHGETYONE(日期)& LT;0;)和0xFF);//DATA(10)=((RTCGGETYONE(DATE)& LT;8;);0xFF);
上面的两行是试图提取Yyyy的两个第一位数字和最后两个数字。
我成功写入数据库并用CyScript读取的值分别为00;00;00,其次是01;01;B2;00。
由此得出结论:时间价值是正确的(“秒”的值当然开始移动),但对于日期值,只有一天和一个月是正确的。这一年总是写B2,不管我设置的值是从什么开始的。
最佳后卫
克里斯塔弗

回帖(6)

王琳

2019-10-16 08:52:45
欢迎来到论坛,Kristoffer!
从数据表:“YYYY”——16位LSB表示BCD中的一年,有效条目-gt;1900—2200。每个字节都是BCD格式。无效的日期条目保留先前设置的值。
BCD是二进制编码的十进制,所以年份2016必须是0x02000 106,年份2000是0x0200万。
鲍勃
举报

付雯瑶

2019-10-16 09:11:15
Kristoffer Here是一个演示如何设置时间和读取终端和LCD上的时间的程序。它使用系统滴答,所以不太准确。由于您使用的是PSoC BLE,那么您可以使用板上的32.768晶体,这将是非常准确的。您需要将设备更改为您正在使用的PSoC BLE。
文件RTC.ZIP
2.6兆字节
举报

徐伟

2019-10-16 09:23:33
你好,鲍伯。谢谢你的回复。我对这部电影很陌生。
0x02000 106为06;01;B2;00。
第一;当你say0x02000106;你是在写二进制2016(六角应fineaswellisuppose,只有较少的符号)因为theinparametershould使用所有8进制符号为今年auint32and不离为日/月的房间。
能够写年、月、日using32bit,= & gt;(二)16foryear,8formonth,8forday或(HEX)4一年之久,2 formonth,2天。但也许我错过了其他的东西…
也谢谢你bobgoar,我会看看代码示例近一点但我想明白为什么不简单地输入日期/时间值的作品。
举报

付雯瑶

2019-10-16 09:47:16
组件RTC以BCD格式存储数据。我把代码发给你,因为它比在文本中解释更容易。当查询RTC组件时,它也以BCD格式返回数据。这就是为什么你的数据看起来如此奇怪。
空RTCUSEDATEDATE和TIME(UIT32时间,UIT32日期)描述:将时间和日期值设置为当前时间和日期。参数:时间:“HH:MM:SS”格式的时间值:“HH”-表示小时值的第二MSB。24小时格式为0~23,12小时格式为1-12。该值的MSB位表示AM/PM为12小时格式(0AM和1-PM)。“第三”8位MSB表示分钟值,有效条目-gt;0~59。SS”- LSB表示秒值,有效条目-gt;059。每个字节都是BCD格式。无效的时间条目保留先前设置的值。日期:在客户机中选择的格式的日期值。对于MM/DD/YYYY格式:“MM”- 8位MSB表示BCD中的月份值,有效条目-GT;1-12“DD”-第二个8位MSB表示BCD中月份值的一天,有效条目-gt;1-31。“YYYY”- 16位LSB表示BCD中的一年,有效条目-gt;1900—2200。每个字节都是BCD格式。无效的日期条目保留先前设置的值。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分