历史上的今天
返回首页

历史上的今天

今天是:2024年10月10日(星期四)

正在发生

2019年10月10日 | MSP430学习笔记2-ADC12

2019-10-10 来源:eefocus

开发版型号:SEED—MSP430F5529A


开发工具   :CCS 5.4v


以下内容是CCS中ADC12操作的一些简单的demo,现整理如下:


有关MSP430F5529芯片ADC12相关资料,可参考《MSP430x5xx and MSP430x6xx Family User's Guide (Rev. M)——Chapter 28 ADC12_A》


1:demo描述


Description: A single sample is made on A0 with reference to AVcc.


Software sets ADC12SC to start sample and conversion - ADC12SC 


automatically cleared at EOC. ADC12 internal oscillator times sample (16x)


and conversion. In Mainloop MSP430 waits in LPM0 to save power until ADC12


conversion complete, ADC12_ISR will force exit from LPM0 in Mainloop on


reti. If A0 > 0.5*AVcc, P1.0 set, else reset.


参考AVcc电压、以A0定时器作为采样输入信号源的、单通道单次模式采样,当采样信号大于0.5*AVcc时,P1.0置位,否则为0。

代码如下:

 1 #include

 2 

 3 int main(void)

 4 {

 5   WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

 6   ADC12CTL0 = ADC12SHT02 + ADC12ON;         // Sampling time, ADC12 on

 7   ADC12CTL1 = ADC12SHP;                     // Use sampling timer

 8   ADC12IE = 0x01;                           // Enable interrupt

 9   ADC12CTL0 |= ADC12ENC;

10   P6SEL |= 0x01;                            // P6.0 ADC option select

11   P1DIR |= 0x01;                            // P1.0 output

12 

13   while (1)

14   {

15     ADC12CTL0 |= ADC12SC;                   // Start sampling/conversion

16 

17     __bis_SR_register(LPM0_bits + GIE);     // LPM0, ADC12_ISR will force exit

18     __no_operation();                       // For debugger

19   }

20 }

21 

22 #pragma vector = ADC12_VECTOR

23 __interrupt void ADC12_ISR(void)

24 {

25   switch(__even_in_range(ADC12IV,34))

26   {

27   case  0: break;                           // Vector  0:  No interrupt

28   case  2: break;                           // Vector  2:  ADC overflow

29   case  4: break;                           // Vector  4:  ADC timing overflow

30   case  6:                                  // Vector  6:  ADC12IFG0

31     if (ADC12MEM0 >= 0x7ff)                 // ADC12MEM = A0 > 0.5AVcc?

32       P1OUT |= BIT0;                        // P1.0 = 1

33     else

34       P1OUT &= ~BIT0;                       // P1.0 = 0

35 

36     __bic_SR_register_on_exit(LPM0_bits);   // Exit active CPU

37   case  8: break;                           // Vector  8:  ADC12IFG1

38   case 10: break;                           // Vector 10:  ADC12IFG2

39   case 12: break;                           // Vector 12:  ADC12IFG3

40   case 14: break;                           // Vector 14:  ADC12IFG4

41   case 16: break;                           // Vector 16:  ADC12IFG5

42   case 18: break;                           // Vector 18:  ADC12IFG6

43   case 20: break;                           // Vector 20:  ADC12IFG7

44   case 22: break;                           // Vector 22:  ADC12IFG8

45   case 24: break;                           // Vector 24:  ADC12IFG9

46   case 26: break;                           // Vector 26:  ADC12IFG10

47   case 28: break;                           // Vector 28:  ADC12IFG11

48   case 30: break;                           // Vector 30:  ADC12IFG12

49   case 32: break;                           // Vector 32:  ADC12IFG13

50   case 34: break;                           // Vector 34:  ADC12IFG14

51   default: break;

52   }

53 }

2:代码分析


1)主函数中代码:


1 ADC12CTL0 = ADC12SHT02 + ADC12ON;         // Sampling time, ADC12 on

2 ADC12CTL1 = ADC12SHP;                     // Use sampling timer

3 ADC12IE = 0x01;                           // Enable interrupt

4 ADC12CTL0 |= ADC12ENC;

6 ADC12CTL0 |= ADC12SC;                   // Start sampling/conversion

参考控制寄存器如下:

 

ADCSHT0x :采样保持定时器0,该四位定义了保存在转换存储寄存器中转换结果的采样周期;

ADC12ENC:转换允许

ADC12SHP:选择采样定时器A0输出 

ADC12IE:中断允许 (来自中断允许寄存器)

 

2)中断部分代码:


中断寄存向量ADC12IV中的数字(0-36)用来判断中断标志寄存器中相关位是否置位,此时表明转换结果已经装入转换存储寄存器中,具体数字的含义参见下图:

3)


1  if (ADC12MEM0 >= 0x7ff)                 // ADC12MEM = A0 > 0.5AVcc?

2       P1OUT |= BIT0;                        // P1.0 = 1

3     else

4       P1OUT &= ~BIT0;                       // P1.0 = 0

参考电压使用VCC,因为ADC精度为12位(4095),所以0x7FF(2047)就是0.5Vcc的AD值


推荐阅读

史海拾趣

EM Devices Corporation公司的发展小趣事

EM Devices Corporation始终将产品质量放在首位。公司建立了一套严格的质量管理体系,对生产过程中的每一个环节都进行严格的监控和检测。同时,公司还不断引入先进的生产设备和工艺,提高产品的生产效率和质量。此外,公司还鼓励员工提出改进意见和建议,以便及时发现并解决问题。这种持续改进的精神使得EM Devices Corporation的产品在市场上始终保持着良好的口碑。

DAVE Embedded Systems公司的发展小趣事

随着公司的发展,DAVE Embedded Systems不断投入研发力量,致力于技术创新和产品创新。他们基于最新技术(如多核ARM Cortex、PowerPC和X86)设计了一系列高端嵌入式系统模块,这些产品不仅满足了客户对性能的需求,还提供了更好的可靠性和可扩展性。此外,公司还积极开发基于Android和Windows平台的嵌入式系统模块,以满足不同客户的需求。

Alpha (Taiwan)公司的发展小趣事

随着全球电子市场的不断扩大,Alpha (Taiwan)公司积极寻求国际合作,拓宽市场渠道。公司与多家国际知名电子企业建立了战略合作关系,共同研发新产品,开拓新市场。此外,公司还积极参加国际电子展会,展示公司的最新技术和产品,吸引更多的潜在客户。这些国际合作的开展,不仅提升了公司的国际影响力,也为公司的长远发展注入了新的动力。

Dresden Elektronik公司的发展小趣事

在Dresden Elektronik公司创立之初,其创始人看中了电子行业中嵌入式系统技术的巨大潜力。他们凭借对技术的深刻理解和敏锐的市场洞察力,开发出了一系列高性能、低成本的嵌入式系统解决方案。这些创新产品迅速在市场上获得了认可,为公司赢得了第一桶金,也为后续的发展奠定了坚实的基础。

Engelking Elektronik GmbH公司的发展小趣事

Engelking Elektronik一直将品质管理作为公司的核心竞争力之一。公司建立了完善的质量管理体系,从原材料采购到产品制造、测试和包装等各个环节都进行严格的质量控制。此外,公司还定期邀请第三方机构进行质量审核和评估,确保产品符合国际标准和客户要求。通过持续改进和优化生产流程,Engelking Elektronik的产品质量得到了客户的高度认可和信赖。

Allen Avionics Inc公司的发展小趣事

为了进一步提升技术实力和产品竞争力,Engelking Elektronik积极寻求与高校和研究机构的合作。通过与多家知名科技院校的合作,公司获得了多项技术专利和研发成果。其中,一项重要的技术突破是开发了一种新型的高效能电子元件,该元件在能效和可靠性方面均达到了行业领先水平。这一成果不仅为公司带来了可观的经济效益,也提升了公司在业界的地位。

问答坊 | AI 解惑

基本功放问题,

我是一个才进入应用电子的学生,今年的学习是模拟电子技术,而老师的第一堂课就是这个图,要求我们今年做一个这个功放为成绩,但是我拿着这个电路是蒙的,撒意思都不懂(电容在里面干撒的...等等),麻烦大哥们给我解释这个电路(详细点)!!还有 ...…

查看全部问答>

FPGA业界第一种精度可调DSP模块体系结构

在实现复杂信号处理算法时,FPGA硬件数字信号处理(DSP)体系结构发挥了很大的作用。Altera Stratix®V FPGA 具有精度可调DSP模块体系结构,是能够有效支持包括浮点实现等多种不同精度级的唯一可编程器件。采用64位级联总线和累加器,设计人员不 ...…

查看全部问答>

telit模块ge863-gps问题~!

有没有熟悉此模块的大哥啊~小弟最近在用这个模块。用其内部的python编程接口。在采到gps信息,放入一个变量A当中后,我该怎样操作,才能将这些gps信息通过短信的方式发送出去啊。也就是短信内容,不需要自己输入,而是发送一个变量中的内容,该如何 ...…

查看全部问答>

不安全状态一定导致死锁状态吗?

不安全状态一定导致死锁状态吗? 不安全状态是指不存在任何一个安全序列,那最终结果将导致死锁吧, 有没可能当前处于不安全状态,有不会导致死锁呢? 我搜了搜,有的说一定会,一定说不一定,到底答案是什么?…

查看全部问答>

转让一些用不上的板子(多图)明码标价 也可交换

12864液晶模块,3块,每块40元     320240液晶显示模块,用的时间不超过一小时,50元   1.8液晶模块,做实验用的,带转接板 15元   智峰脱机下载器,95成新,用的时间不超过10个小时,100元(买的时候260元) ...…

查看全部问答>

MSP430学习笔记之十一:RF2500库

我这几天又有点忙,不过我有空还是搞了下EZ430-RF2500 看了下库: 觉得不错唉: 首先这个库可以在任何MSP430单片机上实现,设立这个库的目地就是为了RF2500能很方便地同MSP430单片机接口 传一下我找的资料从资料来看这个库很好理解,只要修下定 ...…

查看全部问答>

第三个无眠夜,参与的顶一顶?

本帖最后由 paulhyde 于 2014-9-15 03:58 编辑 累,困!!!!拼了  …

查看全部问答>

泰克:射频微波领域 我们是一定要进入的

    一个不容忽视的事实是,整个射频微波市场早已大过了示波器市场。这让某些测试测量厂商有点坐不住了。 “泰克一直就很想进入射频微波领域,我们一直在寻找机会。”泰克产品市场经理钱永先生说。      &nb ...…

查看全部问答>

VHDL实现高基乘法器

高基乘法器又称补码两位乘法,使用基4的布斯算法。…

查看全部问答>

提问+USBDongle 原理图哪里可以下载

想要用一下CC2540 USBDongle 的IO口,哪里有原理图哪里可以看一下啊 …

查看全部问答>