搜索
bottom↓
回复: 5

求助:关于msp430f149的ADC12的问题

[复制链接]

出0入0汤圆

发表于 2012-4-15 21:32:32 | 显示全部楼层 |阅读模式
前辈们好,我刚接触430,现在遇到了点问题,在下面TI所提供的例子中,中断服务程序里面的“ADC12MEM0 < 0x7FF”怎么就表示A0<0.5Vcc了呢,还有上面因为没有开转换,是不是ADC12MEM0里面存储的是A0里面的值?刚接触,问的问题可能没技术含量,还望前辈们不吝赐教。
  1. //******************************************************************************
  2. //  MSP-FET430P140 Demo - ADC12, Sample A0, Set P1.0 if A0 > 0.5*AVcc
  3. //
  4. //  Description: A single sample is made on A0 with reference to AVcc.
  5. //  Software sets ADC10SC to start sample and conversion - ADC12SC
  6. //  automatically cleared at EOC. ADC12 internal oscillator times sample (16x)
  7. //  and conversion. In Mainloop MSP430 waits in LPM0 to save power until ADC12
  8. //  conversion complete, ADC12_ISR will force exit from LPM0 in Mainloop on
  9. //  reti. If A0 > 0.5*AVcc, P1.0 set, else reset.
  10. //
  11. //                MSP430F149
  12. //             -----------------
  13. //         /|\|              XIN|-
  14. //          | |                 |
  15. //          --|RST          XOUT|-
  16. //            |                 |
  17. //      Vin-->|P6.0/A0      P1.0|--> LED
  18. //
  19. //  M. Buccini
  20. //  Texas Instruments Inc.
  21. //  Feb 2005
  22. //  Built with IAR Embedded Workbench Version: 3.21A
  23. //******************************************************************************

  24. #include  <msp430x14x.h>

  25. void main(void)
  26. {
  27.   WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  28.   ADC12CTL0 = SHT0_2 + ADC12ON;             // Set sampling time, turn on ADC12
  29.   ADC12CTL1 = SHP;                          // Use sampling timer
  30.   ADC12IE = 0x01;                           // Enable interrupt
  31.   ADC12CTL0 |= ENC;                         // Conversion enabled
  32.   P6SEL |= 0x01;                            // P6.0 ADC option select
  33.   P1DIR |= 0x01;                            // P1.0 output

  34.   for (;;)
  35.   {
  36.     ADC12CTL0 |= ADC12SC;                   // Sampling open
  37.     _BIS_SR(CPUOFF + GIE);                  // LPM0, ADC12_ISR will force exit
  38.   }
  39. }

  40. // ADC12 interrupt service routine
  41. #pragma vector=ADC_VECTOR
  42. __interrupt void ADC12_ISR (void)
  43. {
  44.     if (ADC12MEM0 < 0x7FF)
  45.       P1OUT &= ~0x01;                       // Clear P1.0 LED off
  46.     else
  47.       P1OUT |= 0x01;                        // Set P1.0 LED on
  48.     _BIC_SR_IRQ(CPUOFF);                    // Clear CPUOFF bit from 0(SR)
  49. }
复制代码

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入42汤圆

发表于 2012-4-15 23:25:59 | 显示全部楼层
设置连续转换
ADC12CTL0 = SHT0_2 + ADC12ON;             // Set sampling time, turn on ADC12
ADC12CTL1 = SHP;                          // Use sampling timer
启动转换
ADC12CTL0 |= ADC12SC;                   // Sampling open
每次转换完成后进入中断服务函数

ADC12MEM0里面就是转换结果了
参考电压使用VCC,因为ADC精度为12位(4096),所以0x7FF(2047)就是0.5Vcc的AD值

出0入0汤圆

 楼主| 发表于 2012-4-16 07:22:54 | 显示全部楼层
ccstc 发表于 2012-4-15 23:25
设置连续转换
ADC12CTL0 = SHT0_2 + ADC12ON;             // Set sampling time, turn on ADC12
ADC12CTL1 ...

你好,我不明白的是TI所提供的例子里面并没有开始转换,那ADC12MEM0 所存储的是哪个量?

出0入0汤圆

发表于 2012-4-16 07:47:09 | 显示全部楼层
ADC12CTL0 |= ADC12SC;                  开始转换

出0入0汤圆

 楼主| 发表于 2012-4-16 12:18:14 | 显示全部楼层
万安文 发表于 2012-4-16 07:22
你好,我不明白的是TI所提供的例子里面并没有开始转换,那ADC12MEM0 所存储的是哪个量? ...

对不起,我看漏了,谢谢你的解答

出0入0汤圆

 楼主| 发表于 2012-4-16 12:19:36 | 显示全部楼层
15085362 发表于 2012-4-16 07:47
ADC12CTL0 |= ADC12SC;                  开始转换

嗯,谢谢,我看漏了。不管怎样还是谢谢你的帮忙,以后有问题希望还能请教各位
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-6 10:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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