查看: 2388|回复: 2

[S12] 急求助 S12XS128 AD转换通道4至7不能置位

[复制链接]

该用户从未签到

2

主题

8

帖子

0

新手上路

Rank: 1

积分
17
最后登录
1970-1-1
发表于 2012-8-30 17:41:58 | 显示全部楼层 |阅读模式
在调试的过程中AD转换通道0至3转换结束后ATD0STAT2_CCF0,ATD0STAT2_CCF1,ATD0STAT2_CCF2,ATD0STAT2_CCF3这些位都可以自动置位,为什么ATD0STAT2_CCF4,ATD0STAT2_CCF5,ATD0STAT2_CCF6,ATD0STAT2_CC7不能自置位,单片机采用9S12XS128  LQFP64引脚封装。代码如下:
//*********************AD初始化*********************//
void ATD_Init(void)
{
  ATD0CTL1=0x40;                //选择12位转换精度
  ATD0CTL2=0x40;                //打开CCF快速清零位,关闭外部触发输入,关闭中断
  ATD0CTL3=0x88;                //数据右对齐,no fifo,转换序列长度为1
  ATD0CTL4=0x04;                //采样时间为4个ATD时钟周期, ATDCLK=20MB/(2*(4+1))=1MHZ
  ATD0CTL5=0x20;                //单通道采样,通道0
  ATD0DIEN=0;                   //禁止数字电压输入
}
//*********************读取AD值*********************//
word ADCValue(byte channel)
{
  word result;
  result=0;
  switch(channel)
  {
  case 0: ATD0CTL5=0x00;
    while(!ATD0STAT2_CCF0);
    result=ATD0DR0&0x0fff;
    break;
    case 1: ATD0CTL5=0x01;
    while(!ATD0STAT2_CCF1);
    result=ATD0DR1&0x0fff;
    break;
    case 2: ATD0CTL5=0x02;
    while(!ATD0STAT2_CCF2);
    result=ATD0DR2&0x0fff;
    break;
    case 3: ATD0CTL5=0x03;
    while(!ATD0STAT2_CCF3);
    result=ATD0DR3&0x0fff;
    break;
    case 4: ATD0CTL5=0x04;
    while(!ATD0STAT2_CCF4);
    result=ATD0DR4&0x0fff;
    break;
    case 5: ATD0CTL5=0x05;
    while(!ATD0STAT2_CCF5);
    result=ATD0DR5&0x0fff;
    break;
    case 6: ATD0CTL5=0x06;
    while(!ATD0STAT2_CCF6);
    result=ATD0DR6&0x0fff;
    break;
    case 7: ATD0CTL5=0x07;
    while(!ATD0STAT2_CCF7);
    result=ATD0DR7&0x0fff;
    break;
  }
return result;
}
在case中  while(!ATD0STAT2_CCF4); while(!ATD0STAT2_CCF5); while(!ATD0STAT2_CCF6); while(!ATD0STAT2_CCF7)一直不能置位,其余0至3好用。
望各位高手指点



 
我知道答案 目前已有1人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2012-8-31 09:27:40 | 显示全部楼层

    RE:急求助 S12XS128 AD转换通道4至7不能置位

    看代码没有问题,建议每次配置的时候先关闭ADC,然后再配置,再开启ADC。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    8

    帖子

    0

    新手上路

    Rank: 1

    积分
    17
    最后登录
    1970-1-1
     楼主| 发表于 2012-9-11 16:48:44 | 显示全部楼层

    RE:急求助 S12XS128 AD转换通道4至7不能置位

    问题得以解决  ATD0CTL3=0x88;  改为 ATD0CTL3=0xB8;  这样8个通道全能转换  问题虽解决了  但还是不解
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-9-6 15:32 , Processed in 0.090095 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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