⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fet140_adc12_storeram_timerasample.c

📁 msp430f14x 系列片内外设的实例代码
💻 C
字号:
//******************************************************************************
//  MSP-FET430P140 Demo - Single channel repeat mode using TimerA1 as Sample 
//                        Trigger
//  ADC12 sample rate is 4.096Khz 
//  Sample and Convert A0
//  Put "Num_of_Results" ADC12MEM0 values in results[array]
//  and Light LED (P1.0) when done
//
//  H.Grewal
//  Texas Instruments, Inc
//  Oct 2004
//  Updated for IAR Embedded Workbench Version: 2.21B
//******************************************************************************

#include  <msp430x14x.h>
#define   Num_of_Results   512
int results[Num_of_Results] = {0};

void ADC_Init (void);

void main (void)
{ 
  WDTCTL = WDTPW | WDTHOLD;            // Disable the Watchdog.
  ADC_Init ();                         // Initialize ADC12
  pwmgen();  
   
  ADC12CTL0 |= ENC;                  // Start conversion 
  _BIS_SR(LPM0_bits);                // Enter LPM0
  
}


void ADC_Init (void)
{
  _EINT();                             // Enable interrupts  
  
  P1DIR = 0xff;                        // set port to outputs
  P1OUT = 0;                           //reset port outputs
  ADC12CTL0 = ADC12ON+SHT0_1+REF2_5V+REFON;// Setup ADC12, ref., sampling time
  ADC12CTL1 = SHP+CONSEQ_2+SHS_1;      // Timer triggers sampling,ADC12OSC=ADC12CLK
  ADC12MCTL0 = INCH_0 + SREF_1;
  ADC12IE = 0x0001;                    // Enable ADC12IFG.0
  

  TACCR0 = 1500;                       // Delay to allow Ref to settle
  TACCTL0 |= CCIE;                     // Compare-mode interrupt.
  TACTL = TASSEL_1 | MC_1;             // TACLK = ACLK, Up mode.  
  LPM3;                                // Wait for delay.
  TACCTL0 &= ~CCIE;                    // Disable timer
  
  P2SEL |= BIT2;                       // set for Timer A1
  TACCR0 = 8;                          // Init TACCR0 w/ sample prd
  TACCR1 = 4;                          // Trigger for ADC12 sample & convert
  TACCTL1 = OUTMOD_3;                  // Set/reset                                    
  TACTL = TACLR | MC_1 | TASSEL_1;     // SMCLK, clear TAR, up mode
}


#pragma vector=TIMERA0_VECTOR
__interrupt void ta0_isr(void)
{
  TACTL = 0;
  LPM3_EXIT;                           // Exit LPM3 on return
}// ta0_isr()


// The following ISR puts ADC12MEM values into an array

#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR (void)
{
  static unsigned int index = 0;
  
  results[index++] = ADC12MEM0;        // Move results
  
  if (index == 512)
  {
   ADC12CTL0 &= ~ENC;                  // Stop conversion 
   index = 0;
   P1OUT |= 0x01;
   _BIS_SR(LPM3_bits);                 // Enter LPM3 after "results[Array] is filled    
  }
  
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -