PSOC6 RTC重新配置时间无效的问题

公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
JeHa_3912621
Level 3
Level 3
25 replies posted 10 replies posted 10 questions asked

!参考CE218542的例程。 做利用RCT时钟唤醒Deepsleep的功能。

void Cy_RTC_Alarm2Interrupt(void)

如果我在这个中断里面更改RTC时间。 可以实现唤醒功能。 但是如果参考例程中的方法,在此中断中设置1个标志位,在主循环里面查询到标志位后调用RCT配置函数。 就再也无法唤醒Deepsleep。

pastedImage_1.png

pastedImage_0.png

pastedImage_2.png

次函数参考void RtcStepAlarm(void)改写。 我希望在主循环里面重新配置RTC唤醒时间。 因为我发现在RTC中断中更改这个RTC时间,有的时候会让我的数据采集出问题,感觉有些时候这部分耗时可能会长一些,会倒是我数据采集的时候丢数据。

我是在系统唤醒后第一时间就调用了rtc重新配置的函数。 希望能够帮忙解决一下此问题。 感谢!

0 点赞
1 解答
ShipingW_81
Moderator
Moderator
Moderator
500 replies posted 250 solutions authored 250 replies posted

“如果我放到喂狗函数以后。 RCT就配置失败了”,有没有具体研究如何失败的?本身API调用就返回失败,还是调用是成功的,但是实际执行出现问题?

CE218542任意配置时间间隔,从DSM唤醒在你的硬件上运行有问题吗?

另外根据CE218542,如果alarm间隔为1s,不需要重新配置(组件默认间隔),如果是大于1s,每次中断产生要重新配置step,也就是到下次alarm产生的step time.

在原帖中查看解决方案

0 点赞
3 回复数
ShipingW_81
Moderator
Moderator
Moderator
500 replies posted 250 solutions authored 250 replies posted

看上去比较奇怪,你有没有试过CE218542在你目前的硬件上功能是否正常?如果功能是正常的,再需要排查你的code跟CE218542的区别。

比如,

1. 中断设标志位的情况下,在main loop根据标志位是否置位调用RtcStepAlarmWakeup()时,RtcAlarmConfig()是否返回了success?时间是否真正配对?

2. 不重新配置RTC是否能从DSM中正常唤醒?如果是,可以初步判断是调用RtcStepAlarmWakeup()时出了问题。

0 点赞

您好。 我试了。 我发现不是喂狗出了问题。 是我的rtc唤醒部分出了问题。 因为我的rtc唤醒有更改过唤醒时间。 初始化后按照1s唤醒1次。 我根据时钟后续会配置成5s唤醒1次。  我的rct部分是参考了CE218542的代码实现的。 利用Cy_RTC_Alarm2Interrupt()函数设置标志位。 在主循环里面识别到标志位后更新RTC时间。  

我发现我必须在Cy_SysPm_DeepSleep(CY_SYSPM_WAIT_FOR_INTERRUPT); 这个函数后马上调用更新RTC函数。RCT才能配置成功。 如果我放到喂狗函数以后。 RCT就配置失败了。 不会在被唤醒。 所以导致喂狗失败而复位。

0 点赞
ShipingW_81
Moderator
Moderator
Moderator
500 replies posted 250 solutions authored 250 replies posted

“如果我放到喂狗函数以后。 RCT就配置失败了”,有没有具体研究如何失败的?本身API调用就返回失败,还是调用是成功的,但是实际执行出现问题?

CE218542任意配置时间间隔,从DSM唤醒在你的硬件上运行有问题吗?

另外根据CE218542,如果alarm间隔为1s,不需要重新配置(组件默认间隔),如果是大于1s,每次中断产生要重新配置step,也就是到下次alarm产生的step time.

0 点赞