智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2090|回复: 1
打印 上一主题 下一主题

关于ADC10序列通道重复采样

[复制链接]

1

主题

1

帖子

0

精华

注册会员

Rank: 2

积分
54
威望
40
贡献
12
兑换币
8
注册时间
2013-7-25
在线时间
2 小时
毕业学校
何方
跳转到指定楼层
1#
发表于 2013-7-30 22:05:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的A7、A4、A3三个外部通道采样,但是每次采样完一个序列周期,串口显示的采样结果只有A7的,A4、A3的和A7的一样,并且跟随它变化。通过寄存器窗口查看ADC10MEM发现问题是出现在采样转换阶段,但是检查了好几遍不知道哪里错了!
还有觉得中断赋值的时候写的不对!
求大神指点!!

void ADC()
{
ADC10CTL1=CONSEQ_3;    //ADC工作模式选择位单通道重复采样
ADC10CTL0=REFON+SREF_1+REF2_5V;   //开启参考源,基准源选择内部参考源,参考源电压默认为1.5V
ADC10CTL0 |= ADC10SHT_3+MSC; //采样保持时间设为64个ADC10CTLK周期,采样转换模式为采样输入信号单次触发模式
ADC10CTL1|= ADC10SSEL_3+SHS_0; // ADC10时钟源选择MCLK,采样保持源选择ADC10SC
ADC10CTL1=INCH_7;    //采样通道选择内部温度采样通道A10
ADC10CTL0 |= ADC10ON+ADC10IE;   //打开ADC10模块
ADC10AE0=0x98;
}


主函数里面:
.............
  __bis_SR_register(GIE); //开总中断
  while(1)
  {
    ADC10CTL0 |=ENC+ADC10SC;
    __delay_cycles(10000);
}
...........


中断部分:
#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR (void)
{
ADC10_Result=ADC10MEM;
       u++;
       if(u>2)
       {
        u=0;
        ADC10_A7=ADC10_Result[0];
        ADC10_A4=ADC10_Result[1];
        ADC10_A3=ADC10_Result[2];
       }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

22

主题

518

帖子

0

精华

版主

Rank: 9Rank: 9Rank: 9

积分
6442
QQ
威望
943
贡献
5041
兑换币
99
注册时间
2008-2-26
在线时间
229 小时
2#
发表于 2013-10-7 19:38:49 | 只看该作者
ADC12MEM0寄存器要选择采集那个通道,你程序里没有体现
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-6 00:46 , Processed in 0.058432 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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