完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好
我试图使用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个回答
|
|
欢迎来到论坛,Kristoffer!
从数据表:“YYYY”——16位LSB表示BCD中的一年,有效条目-gt;1900—2200。每个字节都是BCD格式。无效的日期条目保留先前设置的值。 BCD是二进制编码的十进制,所以年份2016必须是0x02000 106,年份2000是0x0200万。 鲍勃 |
|
|
|
Kristoffer Here是一个演示如何设置时间和读取终端和LCD上的时间的程序。它使用系统滴答,所以不太准确。由于您使用的是PSoC BLE,那么您可以使用板上的32.768晶体,这将是非常准确的。您需要将设备更改为您正在使用的PSoC BLE。
文件RTC.ZIP 2.6兆字节 |
|
|
|
你好,鲍伯。谢谢你的回复。我对这部电影很陌生。
0x02000 106为06;01;B2;00。 第一;当你say0x02000106;你是在写二进制2016(六角应fineaswellisuppose,只有较少的符号)因为theinparametershould使用所有8进制符号为今年auint32and不离为日/月的房间。 能够写年、月、日using32bit,= & gt;(二)16foryear,8formonth,8forday或(HEX)4一年之久,2 formonth,2天。但也许我错过了其他的东西… 也谢谢你bobgoar,我会看看代码示例近一点但我想明白为什么不简单地输入日期/时间值的作品。 |
|
|
|
组件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格式。无效的日期条目保留先前设置的值。 |
|
|
|
你好,我是Kristoffer(来自不同的帐户)。
Bob Marlowe: 我已经尝试输入0x20160514,其结果0E:05:E000(在我的GATDATA数据库中)以及其他尝试: 0x20160514=gt;0e:05:E000 0x20160422= & 16:04:E000 0x20140428=gt;1c:04:DE:00 0x20131 109= & 09:0B:DD:00 它似乎起作用了(至少是一个月和一天)。我还是有点困惑,我怎么能标记NBR作为十六进制NBR,仍然写在NBR我想要在小数(即使它是写在BCD)。对我来说,我觉得我应该用四个十六进制数字写2000,作为07D0(在十六进制中有2000个值吗?)但是把它写进十进制是可行的,我现在可以解决了。我肯定我只是在混淆自己,我的头脑会解决这个问题。但今年NBR仍然不太正确。也许是我分解字节的方法? TimeHurmin Se[ 2 ]=((RTCHGETYONE(日期)& lt;and 0;)和0xFF);TimeHurmin SEC[2]=((RTCHGETYONE(DATE)& LT;&L.;8;0xFF)); Bobgoar: SysStle示例使用大量代码来定义日期,但它对数据库中的年值产生相同的结果。然而,该示例使用不同的打印方法,在不必拆分年值的情况下。 SimultFF(TimeBuffe,%02LU:%02LU:%02LU),RTCI GethRes(时间),RTCHGETMIX(时间),RTCHGETS2(时间));SaMPTF(DATEFULL,“%02LU/%02LU/%02LU”,RTCHGET月(日期),RTCHGETDAY(日期),RTCL GETYEY(日期)); 最好的问候Kristoffer |
|
|
|
另一个用于RTC的API具有BCD到十六进制和BCD到二进制转换例程,因此您只需要对例程进行单次调用。
************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************每个字节都被单独转换,并作为32位**变量中的单个字节返回。**参数:*BCDNUM:一个4字节的BCD数字。每个字节表示BCD。*0x11223 34--gt;4字节0x11,0x22,0x33和0x44,以bCD格式。**返回:*DENNUM:一个4字节的BCD数的十六进制等效数。* BCD号码0x11223 34 4- &返回的十六进制数0x0b16212c***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** MULT= 1U;ReTVAL=0U; 对于(i=0u;i & lt;16u;i++){RtVaL+=(BCDNUM和RTCH-BCDA OND数字Debug)* Mult;BCDNUM & Gt;=RTCH-BCD*No.No.B;Mult*= 10U;} 返回(ReVALL);} *******将4字节十六进制数转换为4字节的BCD号码。每个字节*被单独转换并作为32位**变量中的单个字节返回。**参数:*DENNUM:一个4字节的十六进制数。每个字节用十六进制表示。*0x1123244- & 4字节0x11、0x22、0x33和0x44的十六进制格式。**返回:*BCDNUM:一个4字节BCD等价于已过的十六进制数。十六进制*号码0x11223 34 4-以及返回的BCD号码0x17345 168。* **************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 移位=0u;ReTVAL=0U;TMPVAL=DENNUM; {{RestVal==((tMPVAL %10u)& lt;and lt;shift);tMPaVal/=10u;移位+= RTCH-BCD*NoMuthByShigy;}(TMPVAL和Gt;=10U); RITVAL=(TMPVAL和LT;LT;移位); 返回(ReVALL);} |
|
|
|
只有小组成员才能发言,加入小组>>
752个成员聚集在这个小组
加入小组2086 浏览 1 评论
1837 浏览 1 评论
3652 浏览 1 评论
请问可以直接使用来自FX2LP固件的端点向主机FIFO写入数据吗?
1777 浏览 6 评论
1525 浏览 1 评论
CY8C4025LQI在程序中调用函数,通过示波器观察SCL引脚波形,无法将pin0.4(SCL)下拉是什么原因导致?
532浏览 2评论
CYUSB3065焊接到USB3.0 TYPE-B口的焊接触点就无法使用是什么原因导致的?
387浏览 2评论
CX3连接Camera修改分辨率之后,播放器无法播出camera的画面怎么解决?
421浏览 2评论
368浏览 2评论
使用stm32+cyw43438 wifi驱动whd,WHD驱动固件加载失败的原因?
880浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-3 19:24 , Processed in 1.036289 second(s), Total 88, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号