查看: 5645|回复: 6

MC9S08DZ60的AD转换中的比较功能

[复制链接]

该用户从未签到

6

主题

21

帖子

0

新手上路

Rank: 1

积分
45
最后登录
1970-1-1
发表于 2011-7-23 20:19:47 | 显示全部楼层 |阅读模式
各位大侠,有谁熟悉MC9S08DZ60的AD转换模块的比较功能啊。急需帮助,捣鼓了一天啊,还是一头雾水。模拟输入0-5V变化,要求使用AD转换的比较功能,使得在输入电压大于4.5V时,报警(也就是LED灯闪烁),AD模块的各寄存器应该怎么设置呢?
void ADint(void) {
 PTADD=0xfe;//PORTA第一口配置为输入
 PTAPE=0x01;//上拉器件使能
 ADCCFG=0x71;//高速配置 时钟分频为8 长采样时间 8位模式 总线时钟除以2,转换频率为0.125MHz
 ADCSC2=0x20;//软件触发转换,比较功能使能,当输入小于比较值时触发
 ADCSC1=0x40;//转换完成中断使能,单次转换
 ADCCVL=0xe6;//设置比较值
 APCTL1=0x01;//通用IO口禁止
}
回复

使用道具 举报

该用户从未签到

6

主题

21

帖子

0

新手上路

Rank: 1

积分
45
最后登录
1970-1-1
 楼主| 发表于 2011-7-23 20:21:00 | 显示全部楼层

RE:MC9S08DZ60的AD转换中的比较功能

上面的设置对吗?偶是实在找不出错误来了。
  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2011-7-23 22:30:00 | 显示全部楼层

    RE:MC9S08DZ60的AD转换中的比较功能

    我看设置没有问题,但是不知道你怎么处理的ADC,是通过查询方式还是想通过中断方式获取当前是否发生变换。
    该会员没有填写今日想说内容.

    该用户从未签到

    6

    主题

    21

    帖子

    0

    新手上路

    Rank: 1

    积分
    45
    最后登录
    1970-1-1
     楼主| 发表于 2011-7-24 10:33:38 | 显示全部楼层

    RE:MC9S08DZ60的AD转换中的比较功能

    偶查询方式和中断方式都试过了。AD能转换,但转换出来的数据不对。我理解的AD模块的比较功能是这样的:0V对应0x00,5V对应0xff,我设置的比较值0xe6对应的差不多是4.5V,当使能比较功能时,当输入电压大于4.5V时,AD的数据结果寄存器不会再更新,也不会置位标志位或中断。datasheet上的意思我理解是这样的,但调试结果却是,当ADCCVL=0xe6;//设置比较值
    时,0V对应的转换值变成了0xff-0xe6,当修改ADCVL的值时,0v对应的转换值为0xff-ADCVL..怎么会这样,Oh my god.
  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2011-7-24 15:14:10 | 显示全部楼层

    RE:MC9S08DZ60的AD转换中的比较功能

    If the conversion was aborted by a reset, ADCRH and ADCRL return to their reset states.
    看这句话,也就是当你产生中断以后,这个值就是你发生中断时的值。
    该会员没有填写今日想说内容.

    该用户从未签到

    11

    主题

    52

    帖子

    0

    新手上路

    Rank: 1

    积分
    130
    最后登录
    1970-1-1
    发表于 2011-7-25 15:39:29 | 显示全部楼层

    回复:MC9S08DZ60的AD转换中的比较功能

    //===================================
    //函数名: ADC_INIT
    //作用:   初始化ADC   总线时钟8M
    //===================================
    void ADC_INIT(void)
    {
       ADCCFG = 0xf9;                        //低功耗模式,10位精度,ADCK=总线频率/8/2=500K
       ADCSC2 = 0x00;                        //0x00:软件触发,比较功能禁止
       APCTL1 = 0x14;                        //通道引脚使能: 使用通道为AD19 AD11 AD3 AD4
       APCTL2 = 0x08;
       APCTL3 = 0x08;
       ADch_s = 19;                          //选择19通道开始
        ADCSC1 = 0x73;                        //0x53:中断使能,单次转换,选择19通道启动转换.
    }

    该用户从未签到

    1

    主题

    7

    帖子

    0

    新手上路

    Rank: 1

    积分
    37
    最后登录
    1970-1-1
    发表于 2012-2-16 10:09:44 | 显示全部楼层

    回复:MC9S08DZ60的AD转换中的比较功能

    我也搞了很久,根据datasheet的描述,当比较成立时,结果寄存器的值是采样值与比较值之和。但是我这里还是不对啊。不知道是不是我理解错误。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-8-3 18:09 , Processed in 0.090517 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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