我想在SDK5中的外围示例中添加实时时钟功能。我的计划是使用16MHz计时器分为1Hz中断,该中断每秒唤醒DA14580,并使用实际时间HRS Mins Secs和Date等更新一些内存。计时器大部分时间都会睡觉,仅唤醒广告和上述功能。我是否可以使用一个示例来为16MHz计时器设置计时器中断函数,并在中断结束时实现“进入睡眠”?
关键点..1我希望它每秒醒来并做一些事情。2我希望它在那之后睡觉。
嗨,大卫·泰勒(David Taylor),
当设备入睡时,外围域也被关闭,这意味着计时器和XTAL16也会关闭。该设备无法通过硬件计时器中断从睡眠中醒来,只有BLE事件(包括内核计时器)和唤醒计时器(外部唤醒模块)能够从睡眠模式唤醒处理器。
如果您想每秒醒来,就可以使用内核计时器,但是请注意,使用此方案,您将无法测量时间准确和醒来的时间在每个唤醒中会稍微漂移。
如果没有立即进行设备的待处理操作(待处理的BLE事件,计时器等),只要启用睡眠模式,设备就会入睡。
谢谢mt_dialog
感谢你的回答。我也许可以使用大于1秒的时间并最大程度地减少错误。
是否可以在每个标准的BLE唤醒(在广告模式下)生成一个计数,并使用该时期的知识来生成我的计数?
另外,您能否指出我的内核计时器接口示例,以便我也可以调查吗?
设备在每个广告事件上计数并知道广告的期限将为您提供较少的可靠值,以测量BLE计时器,因为在广告中唤醒,还添加了一个随机延迟,与 + +不同-0至10毫秒。您可以检查内核计时器,看看它们是否适合您实施。尽管如此,在支持论坛上有很多讨论,如何测量时间,最有效的方法是通过LLD_EVT_TIME_GET()函数读取BLE计时器时钟,但是为了成为RTC,它仍然不准确。
嗨,大卫·泰勒(David Taylor),
当设备入睡时,外围域也被关闭,这意味着计时器和XTAL16也会关闭。该设备无法通过硬件计时器中断从睡眠中醒来,只有BLE事件(包括内核计时器)和唤醒计时器(外部唤醒模块)能够从睡眠模式唤醒处理器。
如果您想每秒醒来,就可以使用内核计时器,但是请注意,使用此方案,您将无法测量时间准确和醒来的时间在每个唤醒中会稍微漂移。
如果没有立即进行设备的待处理操作(待处理的BLE事件,计时器等),只要启用睡眠模式,设备就会入睡。
谢谢mt_dialog
感谢你的回答。
我也许可以使用大于1秒的时间并最大程度地减少错误。
是否可以在每个标准的BLE唤醒(在广告模式下)生成一个计数,并使用该时期的知识来生成我的计数?
另外,您能否指出我的内核计时器接口示例,以便我也可以调查吗?
嗨,大卫·泰勒(David Taylor),
设备在每个广告事件上计数并知道广告的期限将为您提供较少的可靠值,以测量BLE计时器,因为在广告中唤醒,还添加了一个随机延迟,与 + +不同-0至10毫秒。您可以检查内核计时器,看看它们是否适合您实施。尽管如此,在支持论坛上有很多讨论,如何测量时间,最有效的方法是通过LLD_EVT_TIME_GET()函数读取BLE计时器时钟,但是为了成为RTC,它仍然不准确。
谢谢mt_dialog