3706|8

7228

帖子

192

TA的资源

五彩晶圆(高级)

楼主
 

【课后练习】launchpad课后练习十五之ADC中断 [复制链接]

课后练习十五之ADC中断

1. ADC寄存器

ADC10CTL0设置参考电压、采样保持时间、采样速率、开启ADC、中断使能、中断标志位、开始转换。

ADC10CTL1设置通道选择、时钟源选择。

 

 

2. 应用——ADC中断

  实验现象: 通过P1.0插针引线接外接电平 (GND或者VCC)

   当杜邦线接GND LED2           

   当杜邦线接VCC LED2 

(没有通过数码管显示测试的数据,只通过判断大于某值灯亮来判断进行了采样中断)

 

课后练习十五之ADC中断.pdf (175.82 KB, 下载次数: 316)

 

最新回复

不好意思 前面写错字, 应该是GIE 和ADC10IE ,中断标志位是ADC10IFG 再补充下如果你开了DTC的话,中断一次后要么你重写ADC10SA,要么你就在程序前先写 ADC10DTC0 |= ADC10CT; 就可以再进入中断了 要不然的话你就只能进一次中断,以后就一直不能进中断的 这是我个人调试的结果 ,不一定对,希望大家一直讨论。。一直学习  详情 回复 发表于 2012-8-2 21:00
 
点赞 关注(1)

回复
举报

7228

帖子

192

TA的资源

五彩晶圆(高级)

沙发
 

3. 例程

  1. /***********************************************
    **** LAUNCH PAD 学习之ADC中断 ***
    **** MCU: MSP430 ***
    **** 作者: 常见泽 ***
    **** ***
    **** ***
    **** 2012.05.30.20:40 ***
    **** 实验现象: 通过P1.0插针引线接外接电平 ***
    **** 当杜邦线接GND LED2灭 ***
    **** 当杜邦线接VCC LED2亮 ***
    ***********************************************/

    #include <msp430g2452.h>


    void main(void)
    {
    WDTCTL = WDTPW + WDTHOLD; // Stop WDT
    ADC10CTL0 = ADC10ON + ADC10IE+SREF_1 + REFON; // 使能中断
    ADC10CTL1 = INCH_0+ADC10SSEL_0; // A0通道 ADC内部时钟源
    ADC10AE0 |= BIT0; // P1.0使能AD
    P1DIR |= BIT6; // P1.6为输出模式

    for (;;)
    {
    ADC10CTL0 |= ENC + ADC10SC; // 转换开始
    __bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR
    if (ADC10MEM < 0x1FF)
    P1OUT &= ~BIT6; // P1.6 LED2 灭
    else
    P1OUT |= BIT6; // P1.6 LED2 亮
    }
    }

    // ADC10 interrupt service routine
    #pragma vector=ADC10_VECTOR
    __interrupt void ADC10_ISR(void)
    {
    __bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR)
    }
复制代码

 
 

回复

28

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
您好,昨天用您的程序调试了下,想把采集到的电压值经过转换后  在1602上显示,请问你的参考电压时多少?
我的语句如下:int temp=(int)(ADC10MEM*2.5*1000/1023.0);    //ADC10转换 
然后再把temp 数值在液晶上显示,每次显示都是2.5V,但是采集输入的电压并没有超过2.5啊,请您指点一下,谢谢

点评

参考电压 是要看配置的寄存器ADC10CTL0的 我这个应该是1.5V把你试试看因为REF2_5这一位 我并没有选中   我的这个例程只是提出一个思路 具体的配置还要你自己配置比较好 发个 launchpad的ADC配置的文件给你  详情 回复 发表于 2012-7-12 13:02
 
 
 

回复

7228

帖子

192

TA的资源

五彩晶圆(高级)

4
 

回复 板凳 huanzxj 的帖子

参考电压 是要看配置的寄存器ADC10CTL0的 我这个应该是1.5V把你试试看因为REF2_5这一位 我并没有选中

 

我的这个例程只是提出一个思路

具体的配置还要你自己配置比较好

发个

launchpad的ADC配置的文件给你

比较好

【LaunchPad】ADC10介绍.pdf (220.21 KB, 下载次数: 97)

[ 本帖最后由 常见泽1 于 2012-7-12 13:04 编辑 ]

点评

谢谢了  详情 回复 发表于 2012-7-12 14:19
 
 
 

回复

28

帖子

0

TA的资源

一粒金砂(中级)

5
 

回复 4楼 常见泽1 的帖子

谢谢了

点评

客气了  详情 回复 发表于 2012-7-12 15:40
 
 
 

回复

7228

帖子

192

TA的资源

五彩晶圆(高级)

6
 

回复 5楼 huanzxj 的帖子

客气了
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

7
 
初学请教  ADC中断是怎样进去的?不需要中断信号的吗?
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

8
 
楼主的例程没有进中断,默认是单通道单次的,要中断的话,前提是你先开IEG 和ADC10IE这两个位,然后再分别看否开了DTC,

如果没开DTC的话:
单通道单次是每检测完一次进一次中断
单通道多次的话我测试是一直在中断 不出去的
序列通道 单次我调试了下是每测一个通道 进一次中断
序列通道 多次的话我没试了,不过我想应该是一直在中断 中的


如果你开了DTC的话,就要等到你设置的ADC10DTC1中的n次检测完才会中断 ,
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

9
 
不好意思 前面写错字, 应该是GIE 和ADC10IE ,中断标志位是ADC10IFG


再补充下如果你开了DTC的话,中断一次后要么你重写ADC10SA,要么你就在程序前先写
ADC10DTC0 |= ADC10CT;
就可以再进入中断了

要不然的话你就只能进一次中断,以后就一直不能进中断的

这是我个人调试的结果 ,不一定对,希望大家一直讨论。。一直学习
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表