找回密码
 立即注册
查看: 616|回复: 7

【已解决】stc8h1k08如何测两路adc值?

[复制链接]
  • TA的每日心情
    开心
    2024-4-28 19:56
  • 签到天数: 61 天

    [LV.6]常住居民II

    13

    主题

    64

    回帖

    335

    积分

    中级会员

    积分
    335
    发表于 2023-10-17 11:00:35 | 显示全部楼层 |阅读模式
    本帖最后由 泰勒soc 于 2023-10-23 16:30 编辑

    假设,我想要测ADC_CH12和ADC_CH13。我先测ADC_CH12,然后更改通道,再测ADC_CH13。循环测这两路ADC值,这个方案可以吗?还有需要更改的地方吗?
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    3 小时前
  • 签到天数: 126 天

    [LV.7]常住居民III

    34

    主题

    404

    回帖

    2077

    积分

    荣誉版主

    积分
    2077
    发表于 2023-10-17 11:48:00 | 显示全部楼层
    这个操作是可以的
    如果想要进行性能优化,可以在以下方向改进
    ==打开adc中断,中断里存下值并且开启下一个通道读取,可以避免查询方式浪费时间
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-28 19:56
  • 签到天数: 61 天

    [LV.6]常住居民II

    13

    主题

    64

    回帖

    335

    积分

    中级会员

    积分
    335
     楼主| 发表于 2023-10-17 13:04:35 | 显示全部楼层
    王昱顺 发表于 2023-10-17 11:48
    这个操作是可以的
    如果想要进行性能优化,可以在以下方向改进
    ==打开adc中断,中断里存下值并且开启下一个 ...

    我是在中断里读值并更改通道的,但是好像更改通道没有成功。
    代码:
                    ADC_CONTR &= 0xf0;                                                //清空通道
                    ADC_CONTR |= ADC_CH12;                                        //选择通道电池
                    ADC_CONTR &= ~ADC_FLAG;                                        //清完成标志//清中断标志~0x20;
                    ADC_CONTR |= ADC_START;                 //继续AD转换

                    ADC_CONTR &= 0xf0;                                                //清空通道
                    ADC_CONTR |= ADC_CH13;                                        //选择通道电机
                    ADC_CONTR &= ~ADC_FLAG;                                        //清完成标志//清中断标志~0x20;
                    ADC_CONTR |= ADC_START;                 //继续AD转换


    还有需要注意的地方吗?

    点评

    每次转换只能转换一个通道,所以在中断里面需要先判断当前转换的通道,再设定下一个转换的通道 [attachimg]24410[/attachimg]  详情 回复 发表于 2023-10-17 14:05
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    3 小时前
  • 签到天数: 126 天

    [LV.7]常住居民III

    34

    主题

    404

    回帖

    2077

    积分

    荣誉版主

    积分
    2077
    发表于 2023-10-17 14:05:03 | 显示全部楼层
    本帖最后由 王昱顺 于 2023-10-17 14:09 编辑
    泰勒soc 发表于 2023-10-17 13:04
    我是在中断里读值并更改通道的,但是好像更改通道没有成功。
    代码:
                    ADC_CONTR &= 0xf0;                                                //清空通 ...

    每次转换只能转换一个通道,所以在中断里面需要先判断当前转换的通道,再设定下一个转换的通道
    截图202310171404379018.jpg
    你的转换如果不成功的话,可以试一下官方的程序模板
    根据你的程序来看,你似乎缺少了打开ADC电源的部分
    截图202310171409317120.jpg


    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    3060

    回帖

    6901

    积分

    超级版主

    积分
    6901
    发表于 2023-10-17 15:24:43 | 显示全部楼层
    必须可以!多个通道的ADC,就是不断切换通道数做ADC即可。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情

    2023-11-28 21:56
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    5

    回帖

    43

    积分

    新手上路

    积分
    43
    发表于 2023-11-19 19:40:09 | 显示全部楼层
    有没有双路adc采集的代码给一份
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-28 19:56
  • 签到天数: 61 天

    [LV.6]常住居民II

    13

    主题

    64

    回帖

    335

    积分

    中级会员

    积分
    335
     楼主| 发表于 2023-11-20 15:10:58 | 显示全部楼层
    本帖最后由 泰勒soc 于 2023-11-20 15:15 编辑
    曹+1 发表于 2023-11-19 19:40
    有没有双路adc采集的代码给一份

    在中断里面切换通道就行了,例如第一次通道为12,下一次通道为13
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情

    2023-11-28 21:56
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    5

    回帖

    43

    积分

    新手上路

    积分
    43
    发表于 2023-11-20 20:06:46 | 显示全部楼层
    我想要一个现成的代码
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-22 11:07 , Processed in 0.076609 second(s), 63 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表