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 标志值。
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 结构体值打印出来。 怀疑是这结构体资源异常了。可能存在内存越界,踩内存情况。
Re: IOTOS运行一段时间adc报错
Posted: 2022年 Oct 28日 10:30
by 愚者千虑必有一得
Re: IOTOS运行一段时间adc报错
Posted: 2022年 Nov 2日 12:00
by 狂扇赵四那半拉好嘴
Re: IOTOS运行一段时间adc报错
Posted: 2022年 Nov 14日 09:25
by 狂扇赵四那半拉好嘴
目前该问题还是出现,代码已经给到对接工程师,能否再帮忙看一下。