我想向SDK5中的外围示例添加实时时钟功能。我的计划是使用16MHz的定时器分为1Hz的中断其唤醒DA14580每秒,并更新与实际时间小时分钟秒和日期等一些内存。定时器将睡在大部分时间,只有广告和上述功能才能睡觉。有一个例子我可以用来设置16MHz定时器的定时器中断功能,并在中断结束时实现“转到睡眠”?
关键点..1我希望它每秒唤醒并做一些东西。2我想在那之后睡觉。
嗨David Taylor,
当设备进入睡眠时,外围域也会断电,这意味着定时器和XTAL16也被断电。设备无法通过硬件定时器中断从睡眠中唤醒,只有BLE事件(包括内核定时器)和唤醒定时器(外部唤醒模块)都能够从睡眠模式唤醒处理器。
如果您想唤醒每秒每秒,可以使用内核计时器,但是要注意,使用此方案,您不会准确测量时间,并且醒来将在每个唤醒中稍微漂移。
如果设备(未决的BLE事件,定时器等)没有立即待定操作,只要启用睡眠模式,设备就会睡眠。
谢谢mt_dialog.
感谢您的回答。我可能能够使用大于1秒的时间,并最大限度地减少错误。
是否有可能在每个标准BLE唤醒(在广告模式期间)生成计数,并使用该期间的知识来生成我的计数?
此外,你能把我指向内核定时器界面的例子,所以我也可以调查这一点吗?
拥有设备数目,通过了解广告时段,将为您使用BLE定时器测量的可靠值,因为在广告唤醒,通过规范,还有一个随机延迟,从+变化。-0到10ms。您可以查看内核定时器,看看它们是否适合您的实现。然而,在支持论坛上有大量的讨论,如何测量时间,最有效的方式是通过LLD_EVT_TIME_GET()函数读取BLE定时器时钟,但仍然是不是那么准确,以便成为RTC。
嗨David Taylor,
当设备进入睡眠时,外围域也会断电,这意味着定时器和XTAL16也被断电。设备无法通过硬件定时器中断从睡眠中唤醒,只有BLE事件(包括内核定时器)和唤醒定时器(外部唤醒模块)都能够从睡眠模式唤醒处理器。
如果您想唤醒每秒每秒,可以使用内核计时器,但是要注意,使用此方案,您不会准确测量时间,并且醒来将在每个唤醒中稍微漂移。
如果设备(未决的BLE事件,定时器等)没有立即待定操作,只要启用睡眠模式,设备就会睡眠。
谢谢mt_dialog.
感谢您的回答。
我可能能够使用大于1秒的时间,并最大限度地减少错误。
是否有可能在每个标准BLE唤醒(在广告模式期间)生成计数,并使用该期间的知识来生成我的计数?
此外,你能把我指向内核定时器界面的例子,所以我也可以调查这一点吗?
嗨David Taylor,
拥有设备数目,通过了解广告时段,将为您使用BLE定时器测量的可靠值,因为在广告唤醒,通过规范,还有一个随机延迟,从+变化。-0到10ms。您可以查看内核定时器,看看它们是否适合您的实现。然而,在支持论坛上有大量的讨论,如何测量时间,最有效的方式是通过LLD_EVT_TIME_GET()函数读取BLE定时器时钟,但仍然是不是那么准确,以便成为RTC。
谢谢mt_dialog.