【求助】ztu如何检测脉冲输入

Zigbee 子设备开发


Post Reply
leslieli
Posts: 91

ztu 用的是非tuyaos的sdk开发的低功耗项目 目前有个项目需要检测高频的脉冲输入该如何操作

huanghuan
Posts: 202

Re: 【求助】ztu如何检测脉冲输入

输入频率大概在多少?

leslieli
Posts: 91

Re: 【求助】ztu如何检测脉冲输入

250hz左右

leslieli
Posts: 91

Re: 【求助】ztu如何检测脉冲输入

huanghuan 2023年 Aug 11日 14:55

输入频率大概在多少?

250hz这样

leslieli
Posts: 91

Re: 【求助】ztu如何检测脉冲输入

leslieli 2023年 Aug 12日 13:21

250hz左右

现在我在因为是低功耗的设备 低频的情况下不会有漏 但是高频的情况下会计数会有偏差

huanghuan
Posts: 202

Re: 【求助】ztu如何检测脉冲输入

1.您好,我先和您确认下,您现在的问题是,相同的程序如果开发框架是低功耗的那么高频时会有漏;如果是强电的会不会有漏?
2.如果强电的不会有漏的话,建议可以使用 tal_cpu_force_wakeup ,tal_cpu_allow_sleep 控制固件是否进入休眠状态
3.如果强电也会有漏的话,可能是高频输入时在处理输入回调函数中又有相同的中断进来,这时候这个中断会被漏掉;在TuyaOS 3.8.0中我们有快速处理中断的接口用于提高处理中断的速度可以解决高频输入的问题

  1. 请您先留下您的 涂鸦iot平台账号 https://iot.tuya.com/ 我给您添加 telink 3.8.0的百名单
huanghuan
Posts: 202

Re: 【求助】ztu如何检测脉冲输入

1.在 3.8.0中 tkl_reallocate_gpio_interrupt_source(TUYA_GPIO_NUM_E pin,UINT8_T before_mode,UINT8_T* after_mode)
定义该函数用于重新分配管脚中断源,一般与 gpio_int_fast_handle 配合使用用于处理快速中断输入
2.您可在demo 中确认函数的具体用法,建议 tkl_reallocate_gpio_interrupt_source 将快速输入管脚中断源与其余中断管脚分开,并在 gpio_int_fast_handle 函数中对快速中断源管脚进行处理

Attachments
quick_input_demo.rar
(100.4 KiB) Downloaded 67 times
leslieli
Posts: 91

Re: 【求助】ztu如何检测脉冲输入

huanghuan 2023年 Aug 14日 11:43

1.在 3.8.0中 tkl_reallocate_gpio_interrupt_source(TUYA_GPIO_NUM_E pin,UINT8_T before_mode,UINT8_T* after_mode)
定义该函数用于重新分配管脚中断源,一般与 gpio_int_fast_handle 配合使用用于处理快速中断输入
2.您可在demo 中确认函数的具体用法,建议 tkl_reallocate_gpio_interrupt_source 将快速输入管脚中断源与其余中断管脚分开,并在 gpio_int_fast_handle 函数中对快速中断源管脚进行处理

好的 目前我是通过加中断回调里加tal_cpu_force_wake_up和allow sleep配合的 目前检测没有漏,但是目前还有个问题是 因为是sleepend device 我发现 设备经常在tal_zg_send_data 没用发完的时候就进入休眠的了 我通过加了发送回调和 sleep_pre_cb发现的 再force wake up的时候 能进入发送回调 但是如果allow 休眠了就 进不了发送回调 还有就是 我这里由于个别dp是标准dp 但是我都想走透传通道 所以用了mcu的模型TZ4290 但是回调一直是发送失败 但是奇怪的是有时候我云端能看到我上报dp点的日志

leslieli
Posts: 91

Re: 【求助】ztu如何检测脉冲输入

leslieli 2023年 Aug 14日 11:58
huanghuan 2023年 Aug 14日 11:43

1.在 3.8.0中 tkl_reallocate_gpio_interrupt_source(TUYA_GPIO_NUM_E pin,UINT8_T before_mode,UINT8_T* after_mode)
定义该函数用于重新分配管脚中断源,一般与 gpio_int_fast_handle 配合使用用于处理快速中断输入
2.您可在demo 中确认函数的具体用法,建议 tkl_reallocate_gpio_interrupt_source 将快速输入管脚中断源与其余中断管脚分开,并在 gpio_int_fast_handle 函数中对快速中断源管脚进行处理

好的 目前我是通过加中断回调里加tal_cpu_force_wake_up和allow sleep配合的 目前检测没有漏,但是目前还有个问题是 因为是sleepend device 我发现 设备经常在tal_zg_send_data 没用发完的时候就进入休眠的了 我通过加了发送回调和 sleep_pre_cb发现的 再force wake up的时候 能进入发送回调 但是如果allow 休眠了就 进不了发送回调 还有就是 我这里由于个别dp是标准dp 但是我都想走透传通道 所以用了mcu的模型TZ4290 但是回调一直是发送失败 但是奇怪的是有时候我云端能看到我上报dp点的日志

已解决 另外想问一下能否调整主频 因为发现在高频采集脉冲的时候 整个模组功耗过高有没有什么方法能够降低 还有就是 我目前设置的是2s的poll 但是如果跟网关断开连接后好像不会一直维持2s的poll 了

huanghuan
Posts: 202

Re: 【求助】ztu如何检测脉冲输入

1.和网关断开连接后,不维持2s poll是正常的,当poll fail 到达fail max times后会触发rejoin 机制,发起beacon request。当成功rejoin后会回复原来的2s poll。

Post Reply