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

Wi-Fi 设备、Wi-Fi 低功耗设备、Wi-Fi BLE 双模设备、Ethernet设备、Ethernet+Wi-Fi设备等
狂扇赵四那半拉好嘴
Posts: 39

[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
现象是挂机挂个两三天可能就出现这种情况了。
帮忙看一下,谢谢

狂扇赵四那半拉好嘴
Posts: 39

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

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;
}
}
部分代码如图

愚者千虑必有一得
Posts: 498

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

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

狂扇赵四那半拉好嘴
Posts: 39

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

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

chaser
Posts: 75

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

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

企业微信截图_1666151351217.png
企业微信截图_16661513742623.png
狂扇赵四那半拉好嘴
Posts: 39

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

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

Attachments
ffa91355-91f2-4232-92f5-145eddc36e03.png
5a713a7f-53a8-43ee-a9b5-8e6a0fbd25c5.png
14399835-b7e8-476d-a4c4-948f78035365.png
chaser
Posts: 75

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

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

企业微信截图_20221020164636.png
愚者千虑必有一得
Posts: 498

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

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

狂扇赵四那半拉好嘴
Posts: 39

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

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

狂扇赵四那半拉好嘴
Posts: 39

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

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

Post Reply