泰勒soc 发表于 2023-10-17 11:00:35

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

本帖最后由 泰勒soc 于 2023-10-23 16:30 编辑

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

王昱顺 发表于 2023-10-17 11:48:00

这个操作是可以的
如果想要进行性能优化,可以在以下方向改进
==打开adc中断,中断里存下值并且开启下一个通道读取,可以避免查询方式浪费时间

泰勒soc 发表于 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转换


还有需要注意的地方吗?

王昱顺 发表于 2023-10-17 14:05:03

本帖最后由 王昱顺 于 2023-10-17 14:09 编辑

泰勒soc 发表于 2023-10-17 13:04
我是在中断里读值并更改通道的,但是好像更改通道没有成功。
代码:
                ADC_CONTR &= 0xf0;                                                //清空通 ...
每次转换只能转换一个通道,所以在中断里面需要先判断当前转换的通道,再设定下一个转换的通道

你的转换如果不成功的话,可以试一下官方的程序模板
根据你的程序来看,你似乎缺少了打开ADC电源的部分



梁工 发表于 2023-10-17 15:24:43

必须可以!多个通道的ADC,就是不断切换通道数做ADC即可。

曹+1 发表于 2023-11-19 19:40:09

有没有双路adc采集的代码给一份

泰勒soc 发表于 2023-11-20 15:10:58

本帖最后由 泰勒soc 于 2023-11-20 15:15 编辑

曹+1 发表于 2023-11-19 19:40
有没有双路adc采集的代码给一份
在中断里面切换通道就行了,例如第一次通道为12,下一次通道为13

曹+1 发表于 2023-11-20 20:06:46

我想要一个现成的代码

rip 发表于 2024-6-27 21:13:36

曹+1 发表于 2023-11-20 20:06
我想要一个现成的代码

请问解决了吗
页: [1]
查看完整版本: 【已解决】stc8h1k08如何测两路adc值?