1695|2

5

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

MSP430F1232中断学习 [复制链接]

ADC10中断:

和定时器一样,ADC10也有中断请求的能力,如果不使用DCT(ADC10DCT1=0),当转换结果装载到ADC10MEM时,ADC10中断标志位即ADC10IFG置1。如果使用DCT,当DCT设定的所有转换完成之后,中断标志为置1。


大概过程是这样的:

    //对于中断来说,当每次两个整个数据块都传递完成时,中断标志置1,此时产生中断,让CPU跳出低功耗状态,继续执行进入低功耗后续没有执行的代码

    //又继续使能AD转换,CPU又进入低功耗状态,由于AD转换独立于CPU,当转换完成时再次进入中断,跳出低功耗,这样不断进入跳出,实现低功耗。

    //所以低功耗跳出之后,以下应该写串口传输的代码,将转换完的数字量给USART

  1. int main(void)  
  2. {  
  3.   WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT  
  4.   ADC10CTL1 = INCH_1 + CONSEQ_1;            // A1/A0, single sequence  
  5.   ADC10CTL0 = ADC10SHT_1 + MSC + ADC10ON + ADC10IE + REFON + REF2_5V;     //时钟源分频+连续  
  6.   ADC10DTC1 = 0x02;                         // 2 conversions  
  7.   ADC10AE |= 0x03;                          // P2.1,0 ADC10 option select  
  8.   
  9.   for (;;)  
  10.   {  
  11.     ADC10CTL0 &= ~ENC;  
  12.     while (ADC10CTL1 & BUSY);               // Wait if ADC10 core is active  
  13.     ADC10SA = 0x200;                        // Data buffer start  
  14.     ADC10CTL0 |= ENC + ADC10SC;             // Sampling and conversion start  
  15.     __bis_SR_register(CPUOFF + GIE);        // LPM0, ADC10_ISR will force exit  
  16.     //AD把两路转换完成,给了ADC10SA,控制将长度为2的数据块放到某个地址中,那么可以从地址中取出转换完成的数据  
  17.     //一个块放着两个转换完的数据,每个转换完的数据长度是2个字节,因为MEM长度是16位,一个地址是一个字节,现在的地址是在0x200的基础上加4  
  18.     //但是这个地址是个什么意思不太明白  
  19.     //对于中断来说,当每次两个整个数据块都传递完成时,中断标志置1,此时产生中断,让CPU跳出低功耗状态,继续执行上面的for循环  
  20.     //继续开始转换,由于AD转换独立于CPU,所以CPU又进入低功耗状态,当转换完成时再次跳出低功耗,这样不断进入跳出,实现低功耗。  
  21.     //所以低功耗跳出之后,以下应该写串口传输的代码,将转换完的数字量给USART  
  22.     //....  
  23.   }  
  24. }  
  25.   
  26. // ADC10 interrupt service routine  
  27. #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)  
  28. #pragma vector=ADC10_VECTOR  
  29. __interrupt void ADC10_ISR (void)  
  30. #elif defined(__GNUC__)  
  31. void __attribute__ ((interrupt(ADC10_VECTOR))) ADC10_ISR (void)  
  32. #else  
  33. #error Compiler not supported!  
  34. #endif  
  35. {  
  36.     __bic_SR_register_on_exit(CPUOFF);      // Clear CPUOFF bit from 0(SR)  
  37. }  
复制代码


最新回复

我的是msp430g2553  详情 回复 发表于 2016-6-30 22:28
 
点赞 关注

回复
举报

3

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
领教了~请问可以请教一下关于430ADC的问题吗?我做的adc采正弦波峰值,怎么也猜不出来,谢谢,可以的话请回复细聊
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我的是msp430g2553
 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表