找回密码
 立即注册
查看: 246|回复: 4

大家好,请教一个ADC的问题

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:351
  • 最近打卡:2025-05-02 07:09:45

35

主题

189

回帖

833

积分

高级会员

积分
833
发表于 2025-1-27 21:48:02 | 显示全部楼层 |阅读模式
明天就是除夕了,给大家拜个早年,祝各位新春大吉,万事如意。

虽说是放假了,有一个关于ADC的问题念念不忘:有10个模拟量需要用AD口来测,这些模拟量变化频率不高,周期都是毫秒级的,硬件设计是用10个AD口去测这些模拟量,以前的程序是在主程序中打开AD电源,选中相应的AD口,ADC_START 位置为1,
然后死等1毫秒,再去读ADC_RESL的值。但是最近需要把这部分程序改到中断中去执行,这个中断的周期是1毫秒,这样就不行了。所以我参照例程《ADC键盘扫描数码管显示键值和调整时间》,把以上程序改为:在主程序初始化时就打开AD的电源,死等1毫秒后启动一个1毫秒中断,在中断中选中要读的模拟量的端口,设置到ADC_CONTR中,执行4次 NOP,然后置位ADC_START ,然后执行如下程序:
    L_WaitAdcLoop:
    MOV     A, ADC_CONTR
    JNB     ACC.5, L_WaitAdcLoop
    ANL     ADC_CONTR, #NOT 020H    ;清除完成标志
读出ADC_RESL中的值,然后再选中下一个要读的模拟量的端口,再执行上述操作,直到把所有的AD口的值读出。在实际应用中,偶尔会发现读出的AD值不准,程序中关于AD的其他设置都是用的默认值,这段程序的核心是选中相应的AD口后,置位ADC_START,等待ADC_FLAG 变为1,完成后读出数值,后来我改为置位ADC_START后,等待ADC_START变为0也不行,难道置位ADC_START后,死等1毫秒,比置位ADC_START后,等AD完成,读出的数据准确吗?单片机用的是STC32G12K128,谢谢大家。

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2025-1-27 22:51:54 | 显示全部楼层
不要死等
只要ADC转换完成,标志位被置位,再读,就是准确的
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:351
  • 最近打卡:2025-05-02 07:09:45

35

主题

189

回帖

833

积分

高级会员

积分
833
发表于 2025-1-28 02:18:22 | 显示全部楼层
Debu*** 发表于 2025-1-27 22:51
不要死等
只要AD转换完成,标志位被置位,再读,就是准确的

谢谢版主的回复,假设我把一部分的AD口在主程序中读,另一部分在中断中读,请问哪些寄存器需要保护?另外需要注意什么?

点评

读寄存器中的ADC值之前,不要启动新的一次转换就行,以免值被覆盖  详情 回复 发表于 2025-1-29 10:24
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2025-1-29 10:24:18 | 显示全部楼层
newl*** 发表于 2025-1-28 02:18
谢谢版主的回复,假设我把一部分的AD口在主程序中读,另一部分在中断中读,请问哪些寄存器需要保护?另外 ...

读寄存器中的ADC值之前,不要启动新的一次转换就行,以免值被覆盖
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:351
  • 最近打卡:2025-05-02 07:09:45

35

主题

189

回帖

833

积分

高级会员

积分
833
发表于 2025-2-8 08:24:03 | 显示全部楼层
Debu*** 发表于 2025-1-29 10:24
读寄存器中的ADC值之前,不要启动新的一次转换就行,以免值被覆盖

谢谢版主的回复,我是担心在主程序中的ADC执行过程中,又产生中断,执行另一个ADC。看来我需要做一个标志,或者想办法采取措施。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 09:01 , Processed in 0.135897 second(s), 74 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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