Page 1 of 2

【已解决】IOTOS运行一段时间adc报错

Posted: 2022年 Oct 19日 10:34
by 狂扇赵四那半拉好嘴

[11;28;45][PLATFORM ERROR]tuya_hal_adc_value_get ddev_open error:-5
[11;28;45][PLATFORM ERROR]tuya_hal_adc_value_get ddev_open error:-5
[11;28;45][PLATFORM ERROR]tuya_hal_adc_value_get ddev_open error:-5
[11;28;45][PLATFORM ERROR]tuya_hal_adc_value_get ddev_open error:-5
[11;28;45][PLATFORM ERROR]tuya_hal_adc_value_get ddev_open error:-5
[11;28;45][PLATFORM ERROR]tuya_hal_adc_value_get ddev_open error:-5
[11;28;45][PLATFORM ERROR]tuya_hal_adc_value_get ddev_open error:-5
[11;28;45][PLATFORM ERROR]tuya_hal_adc_value_get ddev_open error:-5
[11;28;45][PLATFORM ERROR]tuya_hal_adc_value_get ddev_open error:-5
[11;28;45][PLATFORM ERROR]tuya_hal_adc_value_get ddev_open error:-5
[11;28;45][10-18 11:28:45 TUYA Notice][lr:0x585f3] [smdz_ntc_temp_control_fun]ntc_abnormal_count:8
具体的报错信息如上:
用到的SDK版本:ty_iot_sdk_bk7231n-2.3.3
现象是挂机挂个两三天可能就出现这种情况了。
帮忙看一下,谢谢


Re: IOTOS运行一段时间adc报错

Posted: 2022年 Oct 19日 10:35
by 狂扇赵四那半拉好嘴

tuya_adc_t *adc ;
THREAD_HANDLE thread_ntc_temp_sampling_handle = NULL;//温度采样线程
static NTC_SENSOR *ntc_sensor; //定义传感器指针变量

/**

  • @Function: void adc_init
  • @Description: 初始化adc io
  • @Output: none
  • @Return: none
  • @Others: 无
    */
    void adc_init(void)
    {
    adc= (tuya_adc_t *)tuya_driver_find(TUYA_DRV_ADC, TUYA_ADC2);
    if (NULL == adc) {
    PR_ERR("tuya hal find failed");
    return;
    }
    TUYA_ADC_CFG(adc, TUYA_ADC2, 0);
    tuya_adc_init(adc);//ADC初始化

}

**

  • @brief thread_ntc_arry_func
  • 线程调用函数
  • @param[in] none
  • @return none
  • @output
    */
    void thread_ntc_temp_sampling_func(void){
    adc_init();
    for (;;) {
    set_ntc_temp_param();//设置ntc温度参数值
    }

// PR_NOTICE("thread ntc task will release");
// op_ret = tuya_hal_thread_release(thread_ntc_temp_sampling_handle);//释放线程
// if (OPRT_OK != op_ret) {
// PR_ERR("release thread_ntc_temp_sampling_handle failed, err_num:%d", op_ret);
// return;
// }
}

/**

  • @brief thread_ntc_init
  • ntc线程
  • @param[in] none
  • @return none
    */
    void thread_ntc_init(NTC_SENSOR *ntc10)
    {
    OPERATE_RET op_ret = OPRT_OK;
    ntc_sensor_int(ntc10);

op_ret = tuya_hal_thread_create(&thread_ntc_temp_sampling_handle, "thread_ntc_temp_sampling", 2048, TRD_PRIO_4, thread_ntc_temp_sampling_func, NULL);
if (op_ret != OPRT_OK) {
PR_ERR("thread_ntc_temp_sampling_func task failed, err_num:%d", op_ret);
return;
}
}
部分代码如图


Re: IOTOS运行一段时间adc报错

Posted: 2022年 Oct 19日 11:17
by 愚者千虑必有一得

你好,这是一个已知问题,等一下我们整理一下问题描述,再给你答复。


Re: IOTOS运行一段时间adc报错

Posted: 2022年 Oct 19日 11:51
by 狂扇赵四那半拉好嘴

好的谢谢。因为也是按照提供的DEMO写的,也没改什么,定位问题比较难~


Re: IOTOS运行一段时间adc报错

Posted: 2022年 Oct 19日 12:01
by chaser

adc ddev_open失败。 可能是adc资源一直被占用导致。需要加些打印复现确认。看下出现异常时,adc资源情况。
当出现这个异常时,把adc 的结构体打印出来。主要就是当前adc使用的通道和saradc_is_busy 标志值。

企业微信截图_1666151351217.png
企业微信截图_16661513742623.png

Re: IOTOS运行一段时间adc报错

Posted: 2022年 Oct 20日 15:12
by 狂扇赵四那半拉好嘴

复现出来时这样子的,帮忙看一下。


Re: IOTOS运行一段时间adc报错

Posted: 2022年 Oct 20日 16:56
by chaser

从打印日志看, saradc_is_busy 为 0, 不是adc 资源被抢占导致 adc open失败。
可以在 saradc.c 文件中的saradc_open函数中添加必要的报错打印,同时把 saradc_desc_t 结构体值打印出来。 怀疑是这结构体资源异常了。可能存在内存越界,踩内存情况。

企业微信截图_20221020164636.png

Re: IOTOS运行一段时间adc报错

Posted: 2022年 Oct 28日 10:30
by 愚者千虑必有一得

你好,这个问题有什么进度可以更新的吗?


Re: IOTOS运行一段时间adc报错

Posted: 2022年 Nov 2日 12:00
by 狂扇赵四那半拉好嘴

这个问题工程师给了新得SDK,目前还在测试哈~


Re: IOTOS运行一段时间adc报错

Posted: 2022年 Nov 14日 09:25
by 狂扇赵四那半拉好嘴

目前该问题还是出现,代码已经给到对接工程师,能否再帮忙看一下。