查看: 3159|回复: 3

MC9S08AW32,ADC读数总是不对,为何?

[复制链接]

该用户从未签到

12

主题

59

帖子

0

注册会员

Rank: 2

积分
123
最后登录
1970-1-1
发表于 2013-3-7 14:03:26 | 显示全部楼层 |阅读模式
 MC9S08AW32,ADC读数总是不对,开了5个通道,只有两个通道能读到数(其他通道读数为0)且读数误差很大,会是什么原因呢?

部分代码如下:

        V_BATT = ADC_GetValue(8);
        V_SOLAR = ADC_GetValue(1);
        CURR = ADC_GetValue(2);
        TEMP = ADC_GetValue(3);
        VCC = ADC_GetValue(10);

ADC模块代码:

u16 ADC_GetValue(unsigned char Channel) 
{
    u16 AdcResult = 0; 
   
    if(Channel < 24) 
        ADC1SC1 = Channel;
    else 
        return 0;
    while(!ADC1SC1_COCO);
    AdcResult = ADC1RH;
<span style="font-family: 宋体, Arial, 'Times New Roman'; background-color: rgb(239, 239, 239);">    AdcResult = (AdcResult
回复

使用道具 举报

该用户从未签到

11

主题

288

帖子

0

版主

Rank: 7Rank: 7Rank: 7

积分
610
最后登录
1970-1-1
发表于 2013-3-7 14:41:50 | 显示全部楼层

RE:MC9S08AW32,ADC读数总是不对,为何?

ADC在采集的时候,建议用多通道,然后根据产生的AD中断来放入对应的AD缓冲区,直接读取缓冲区的值就可以了。而你这样的试用,应该重新初始化一下,而不是只简单的给某个寄存器赋值就可以的。
回复 支持 反对

使用道具 举报

该用户从未签到

12

主题

59

帖子

0

注册会员

Rank: 2

积分
123
最后登录
1970-1-1
 楼主| 发表于 2013-3-7 22:26:37 | 显示全部楼层

RE:MC9S08AW32,ADC读数总是不对,为何?

非常感谢楼上的回复!你介绍的方法很好,我以后会试试的。

问题已经解决:我忘记把 ADC.H 头文件包含到 main.c 文件里了,添加了这个头文件后就OK了。
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

4

帖子

0

新手上路

Rank: 1

积分
10
最后登录
2017-1-11
发表于 2017-1-11 10:33:24 | 显示全部楼层
帮顶帮顶
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-9-1 09:32 , Processed in 0.087897 second(s), 22 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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