开始以来的时间?

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
4个帖子/ 0新
最后一篇
oren.
离线
最后一次露面:1年7个月前
专家
加入:2014-06-28 22:03
开始以来的时间?

你好,
我们使用DA14580 SDK 5.0.4。
我们需要一种方法来获得全局时间戳,因为开始以秒为单位。
简单的方法是设置一个定时器以每分钟运行,并通过60次增加计数器 - 并获得不准确的测量(分钟的准确性)。
如果我们需要时间戳的准确性,那么怎么办?我们需要每秒醒来吗?
是否有一些寄存器\ Memory-Address只读取时间戳(在某些单位)?
如果我们刚从计时器醒来,这将很容易 - 如果定时器是X秒,我们每次醒来时都会通过x增加柜台。
但是,我们也从按钮开始醒来,需要获得时间戳。

我看到Systick Timer有一个systick_value()函数来获得剩余的时间量,但不建议使用Systick计时器。
app_easy_timers是否具有相似的“值”功能?获得剩下的时间?这可以解决我的问题 - 创建一个重复5分钟的定时器来增加计数器,并且只要单击按钮,获取当前时间:计数器* 5minutes +(5minutes - time_left_to_timer)获取当前时间。

问候,
oren.

关键词:
设备:
mt_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2015-06-08 11:34
嗨oren,

嗨oren,

关于Systick定时器知道,为了使用定时器,设备需要唤醒,如果设备睡眠,则计时器将停止计数,就是App_easy_timers()他们没有功能,您可以在其中检查其的功能留下来过去。580可用的是,您可以使用(熄灭当然取决于您想要的时间戳的准确性)是lld_evt_time_get(),此函数返回BasetImEcnt的值,这是设备所在的时间的值在625US时比赛中运行。所以通过阅读这个柜台,你将能够计算您的设备运行的时间,因此当您击中按钮时设备睡觉,设备唤醒您只需轮询将其寄存器转换为秒。也意识到,为了从该寄存器获取有效值,BLE应该启动并运行,因此请在App_On_ble_powered回调中读取寄存器,而不是在计时器回调中。

谢谢mt_dialog.

oren.
离线
最后一次露面:1年7个月前
专家
加入:2014-06-28 22:03
不确定是什么“时间

不确定“设备上运行的时间”的意思是什么。
例如,如果我的程序通过广告启动10秒,则停止广告并进入睡眠(深睡眠\延长睡眠)10秒钟,然后从计时器回调和呼叫:lld_evt_time_get()唤醒。
价值是否为32000?(32000 * 625US = 20000000US = 20秒)。

如果我在app_on_ble_powered回调中呼叫它,我也不确定为什么它很掩饰,而不是在易于计时器回调中。当程序不是广告时,我也需要能够调用该功能 -
即,在重复的深度睡眠模式中没有广告,每5分钟唤醒每5分钟,但也等待外部唤醒(按钮)。当我从按钮唤醒时,我需要能够获得确切的时间戳。

问候,
oren.

mt_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2015-06-08 11:34
嗨oren,

嗨oren,

通过LLD_EVT_TIME_GETGET()读取的寄存器一旦设备启动FW,就会读取,是您应该得到的值应该是近20秒的值。

关于你应该将函数放在app_on_ble_powered回调中的原因我认为我在我的前一篇文章中提到了,以便从该寄存器获取有效值,所以需要升起并运行,所以为了确保你应该将功能放在提到的回调中。如果您使用的是app_easy_timer()API,则不应有一个问题,但我假设设备将通过唤醒定时器唤醒设备。当设备未广告时,您可以调用该功能,只需通过BLE定时器和轮询寄存器或通过唤醒中断调用唤醒它。

由于您将使用唤醒中断,因此您必须强制使用相应的函数arch_ble_force_wakeup()唤醒ble;问题是,当您这样做时,BLE不会立即唤醒,以确保它令人醒着,您必须在提到的回调中读取寄存器。或者如果您不想这样做,您可以尝试使用app_easy_wakeup_set()API,以便设置唤醒回调。您将能够在BLE_APP_SLEEPMODE中查找如何使用该API的示例。

谢谢mt_dialog.