MSP430F5529 ADC12代码疑问

2019-03-24 12:05发布

参照各种官方示例程序之后编写了一段ADC12的转换程序。程序实现的功能是:通过I/O端口P6.6获取输入模拟信号,通过TA0获取取样频率10μs/sample,并触发ADC转换。时钟源取SMCLK,用DCO配置0.7MHz,采用Up-Mode和Repeat single-channel conversion,中断时将ADC12MEM0的值存入ADC_Results[index]。

为了验证程序是否正确运行,用了示例程序里的HAL_Dogs102x6.h(为了显示在LCD屏上)和HAL_Board.h(为了点亮或熄灭LED灯),但没法运行。所以问题就是:

1. ADC12这部分是不是能实现10μs/sample的功能

2.如何验证此程序按预期正确运行了

主程序附件添加了

麻烦各位了,我找不出程序的错又没有办法验证它是否正确运行

[ 本帖最后由 haiqibian 于 2013-11-4 20:02 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
wstt
1楼-- · 2019-03-24 12:09
 精彩回答 2  元偷偷看……
wstt
2楼-- · 2019-03-24 13:09
< :TI_MSP430_内容页_SA7 -->
  1. //******************************************************************************
  2. //  MSP430G2x33/G2x53 Demo - ADC10, Sample A1, 1.5V, TA1 Trig, Set P1.0 if > 0.5V
  3. //
  4. //  Description: A1 is sampled 16/second (ACLK/2048) with reference to 1.5V.
  5. //  Timer_A is run in upmode and TA1 is used to automatically trigger
  6. //  ADC10 conversion, TA0 defines the period. Internal oscillator times sample
  7. //  (16x) and conversion (13x). Inside ADC10_ISR if A1 > 0.5Vcc, P1.0 is set,
  8. //  else reset. Normal mode is LPM3.
  9. //  //* An external watch crystal on XIN XOUT is required for ACLK *//
  10. //
  11. //               MSP430G2x33/G2x53
  12. //            -----------------
  13. //        /||              XIN|-
  14. //         | |                 | 32kHz
  15. //         --|RST          XOUT|-
  16. //           |                 |
  17. //       >---|P1.1/A1     P1.0 |--> LED
  18. //
  19. //  D. Dang
  20. //  Texas Instruments Inc.
  21. //  December 2010
  22. //   Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10
  23. //******************************************************************************
  24. #include  "msp430g2553.h"

  25. void main(void)
  26. {
  27.   WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  28.   ADC10CTL1 = SHS_1 + CONSEQ_2 + INCH_1;    // TA1 trigger sample start
  29.   ADC10CTL0 = SREF_1 + ADC10SHT_2 + REFON + ADC10ON + ADC10IE;
  30.   __enable_interrupt();                     // Enable interrupts.
  31.   TACCR0 = 30;                              // Delay to allow Ref to settle
  32.   TACCTL0 |= CCIE;                          // Compare-mode interrupt.
  33.   TACTL = TASSEL_2 + MC_1;                  // TACLK = SMCLK, Up mode.
  34.   LPM0;                                     // Wait for delay.
  35.   TACCTL0 &= ~CCIE;                         // Disable timer Interrupt
  36.   __disable_interrupt();
  37.   ADC10CTL0 |= ENC;                         // ADC10 Enable
  38.   ADC10AE0 |= 0x02;                         // P1.1 ADC10 option select
  39.   P1DIR |= 0x01;                            // Set P1.0 output
  40.   TACCR0 = 2048-1;                          // PWM Period
  41.   TACCTL1 = OUTMOD_3;                       // TACCR1 set/reset
  42.   TACCR1 = 2047;                            // TACCR1 PWM Duty Cycle
  43.   TACTL = TASSEL_1 + MC_1;                  // ACLK, up mode

  44.   __bis_SR_register(LPM3_bits + GIE);       // Enter LPM3 w/ interrupts
  45. }

  46. // ADC10 interrupt service routine
  47. #pragma vector=ADC10_VECTOR
  48. __interrupt void ADC10_ISR(void)
  49. {
  50.   if (ADC10MEM < 0x155)                     // ADC10MEM = A1 > 0.5V?
  51.     P1OUT &= ~0x01;                         // Clear P1.0 LED off
  52.   else
  53.     P1OUT |= 0x01;                          // Set P1.0 LED on
  54. }

  55. #pragma vector=TIMER0_A0_VECTOR
  56. __interrupt void ta0_isr(void)
  57. {
  58.   TACTL = 0;
  59.   LPM0_EXIT;                                // Exit LPM0 on return
  60. }
复制代码
haiqibian
3楼-- · 2019-03-24 14:23
你给我的是G2553的示例程序吗?和F5529原理一样的是吧?
haiqibian
4楼-- · 2019-03-24 18:52
 精彩回答 2  元偷偷看……

一周热门 更多>

相关问题

    相关文章