错误报告多周期app_easy_timer回调

12个新帖子/ 0
最后发表
toughworld
离线
最后看到:3年4个月前
加入:2015-05-12 09:55
错误报告多周期app_easy_timer回调

我有三个定时器app_easy_time宣布。一个周期是一个第二,第二个叫做在某些场合,最后一个是叫埃维在随机时间30秒。
与这三个定时器,第二个定时器回调被称为不正确ocassionly。我相信这是由第一个周期定时器。
如果我只使用前两个定时器,一切似乎好了。

更新:一些简化代码ilustrting计时设置,错误的triggerd hanler问题是我的错,但另一个问题发生。

静态孔隙app_watchdog_second_timer_handler() / /调用每一秒,
{
second_coun + +;
app_watchdog_second_timer_handler APP_WATCHDOG_SECOND_TIMER = app_easy_timer (100);/ / 1000毫秒

如果(second_count = = 10)
{
uint32_t延迟= (co_rand_byte () % 20) * 10 + 30;
APP_SEND_DATA_TIMER = app_easy_timer(延迟,sendSensorDataHandler);

}

如果(second_count = = 30) / /一段30秒
{
second_coun = 0;
}

}

空白sendSensorDataHandler(空白)/ /调用一次
{
APP_SEND_DATA_TIMER = EASY_TIMER_INVALID_TIMER;/ /这条线解决我之前的问题,现在定时器触发正确的处理程序
}

空白resetSendData (void) / / triggerd在某些情况下
{
如果这条线(APP_SEND_DATA_TIMER ! = EASY_TIMER_INVALID_TIMER) / /解决我之前的问题,现在定时器触发正确的处理程序
{
/ / - - - - - - - - - - -另一个问题出现在这里,这functionocassionly删除我APP_WATCHDOG_SECOND_TIMER结果没有计时器运行,我检查timer_callbacks APP_TIMER_MAX_NUM,空的

APP_SEND_DATA_TIMER = app_easy_timer_modify (APP_SEND_DATA_TIMER RESET_SEND_DATA_TIME + (co_rand_byte () % 20) * 10);
}

}

设备:
MT_dialog
离线
最后看到:2个月3周前
工作人员
加入:2015-06-08 34
嗨toughworld,

嗨toughworld,

你能给我一些关于您的设置的更多细节吗?我设置3定时器1)60秒,2)30秒,3)增加延迟。他们似乎走的。在你的测试中,如果我正确undestood似乎一个定时器触发错误的处理程序,对吗?

由于MT_dialog

toughworld
离线
最后看到:3年4个月前
加入:2015-05-12 09:55
谢谢你,我已经上传一些

谢谢你,我上传一些简化代码ilustrting定时器设置,错误的triggerd hanler问题是我的错,但另一个问题发生,
顺便说一下,在csr api,回调为避免赛车coditon timerid参数,在简单的定时器,可以没有这个吗?
typedef无效(* timer_callback_arg) (timer_id const)
timer_id TimerCreate (uint32 const, bool const亲戚,timer_callback_arg处理程序)

MT_dialog
离线
最后看到:2个月3周前
工作人员
加入:2015-06-08 34
嗨toughworld,

嗨toughworld,

如果我正确undestood app_easy_timer_modify ();而不是修改定时器删除另一个计时器?你能验证的值传递到app_easy_timer_modify并检查处理程序的id传递给函数。我已经试过app_easy_timer_modify,它不会取消计时器。你可以尝试执行一些简单的为了试试这样:

空白testing_timer_handler1(空白)
{
testing_timer1 = EASY_TIMER_INVALID_TIMER;
如果(testing_timer ! = EASY_TIMER_INVALID_TIMER)
{
testing_timer = app_easy_timer_modify (testing_timer RESET_SEND_DATA_TIME + (co_rand_byte () % 20) * 10);
}
testing_timer1 = app_easy_timer (60, testing_timer_handler1);
}

空白testing_timer_handler(空白)
{
如果(testing_timer ! = EASY_TIMER_INVALID_TIMER)
{
testing_timer = EASY_TIMER_INVALID_TIMER;
arch_set_pxact_gpio ();
}
}

由于MT_dialog

马赫什
离线
最后看到:3年4个月前
加入:2016-01-04 14:03
你好,

你好,
我用SDK 5.0.3软件DA14583DEVKT-B板上。
我采取了“ble_app_peripheral”(BLE示例项目)。

修改以支持两个特点。需要发送的数据在每10毫秒和30毫秒通过特征1和2分别移动特征。

在每一个周期操作,我需要我的1包,三包data-II期间(即30毫秒)。但我收到1包data-II data-1和2包。
“app_easy_timer (APP_PERIPHERAL_CTRL_TIMER_DELAY DataVal1TimerCbHandler)””和“app_easy_timer (APP_PERIPHERAL_CTRL_TIMER_DELAY2 DataVal2TimerCbHandler)”用于触发周期调用。

请帮我解决问题。

问候,
Mahesh Chandana。

MT_dialog
离线
最后看到:2个月3周前
工作人员
加入:2015-06-08 34
嗨的卖方,

嗨的卖方,

请检查下面的帖子http://support.dialog-semiconductor.com/whats-kernel-timer-accuracy

由于MT_dialog

马赫什
离线
最后看到:3年4个月前
加入:2016-01-04 14:03
你好,

你好,
我用“ble_app_peripheral”(BLE示例项目给定)代码。
我需要以下信息将是有用的
1。现在我可以能够达到最低10毫秒。有没有可能增加调度内核计时器频率(即app_easy_timer ())。
2。我希望在我的应用程序使用队列实现。请指导我如何创建和使用的队列。
3所示。按我的申请要求,我需要将传感器数据发送到内核通过祝福(传播),当数据是可用的。我是否可以叫“ke_msg_send(点播)”当我有传感器数据。是有任何约束和限制。至少连续两个数据包之间的时间或消息到内核。

问候,
Mahesh Chandana。

MT_dialog
离线
最后看到:2个月3周前
工作人员
加入:2015-06-08 34
嗨的卖方,

嗨的卖方,

1。我不明白你的意思,调度频率,所有的消息都将当代码经过rwip_schedule()在主循环。没有办法增加内核定时器的分辨率,如果这就是你的意思。

2。你可以找到相关信息在RW-BT-KERNEL-SW-FS RW内核。

3所示。正如上面我已经提到,信息通过rwip_schedule内核将(),这个函数如何频繁执行取决于循环,如果系统决定去睡觉或不的functionallity app_asynch_trm()函数(app_on_ble_powered)。如果app_on_ble_powered返回GOTO_SLEEP设备将继续,做适当的睡眠检查和进入睡眠,如果返回KEEP_POWERED这将迫使调度程序再次运行。

由于MT_dialog

马赫什
离线
最后看到:3年4个月前
加入:2016-01-04 14:03
你好,

你好,
谢谢你快速的反应。
是否可以发送多个数据单(即多个)通知连接间隔。

问候,
Mahesh Chandana。

MT_dialog
离线
最后看到:2个月3周前
工作人员
加入:2015-06-08 34
嗨的卖方,

嗨的卖方,

是的它的可能,你不需要做什么特别的,就发送通知的时间间隔更喜欢和堆栈将发送一个数据包如果不止一个通知是可用的队列中。关于有多少包可以发送一个连接间隔请检查下一个线程http://support.dialog-semiconductor.com/number-packets-connection-event

由于MT_dialog

马赫什
离线
最后看到:3年4个月前
加入:2016-01-04 14:03
你好,

你好,
当我发送过启用通知(即。(即写请求。1值)从移动到服务器),这是应收在服务器端(即在user_catch_rest_hndl ())。但是当我发送过禁用通知(即写请求(例如0值)从移动到服务器),我不能够接收服务器端(即user_catch_rest_hndl ())。

我需要显示(在服务器端)当我收到禁用通知。我怀疑这是处理内核级别本身。
如何确定禁用的接收通知。

问候,
Mahesh Chandana。

MT_dialog
离线
最后看到:2个月3周前
工作人员
加入:2015-06-08 34
嗨的卖方,

嗨的卖方,

当中央写特征表明在应用程序,例如ble_app_peripheral项目中你应该能够赶上CUST1_IDX_ADC_VAL_1_NTF_CFG情况user_catch_rest_hndl()函数,当你得到这个指示应用程序可以检查参数的值是否有PRF_CLI_START_NTF或PRF_CLI_STOP_NTFIND。

由于MT_dialog