beautypg.com

14 interrupt-driven adc sampling – Texas Instruments MSC1210 User Manual

Page 156

background image

Interrupt-Driven ADC Sampling

12-20

12.14 Interrupt-Driven ADC Sampling

A useful, power-saving technique for obtaining ADC samples includes using
the power-down mode of the MSC1210 between the time that a sample is re-
quested and the time that a sample is made available to the MCU. During this
time, the MSC1210 may be put into power-down mode by setting PCON.1
(PD). This will reduce power consumption significantly while the ADC sample
is acquired.

The power−down mode is exited when the ADC unit triggers an interrupt. This
interrupt will take the MCU out of power-down mode, execute the appropriate
interrupt, and then continue with program execution.

#include

#include

#include

#include

#define LSB 298.0232e−9 /* LSB=5.0/2^24 */

extern void autobaud(void);

extern long bipolar(void);

long sample; // Hold the samples retrieved from A/D converter

void auxiliary_isr( void) interrupt 6 //AuxInt

{

sample = bipolar() * LSB; // Read sample & clear ADCIRQ

AI=CLEAR; // Clear Aux Int right before Aux ISR exit

}

void main(void)

{

float volts, temp, resistance, ratio, lr, ave;

int i, k, decimation = 1728, samples;

CKCON = 0; // 0 MOVX cycle stretch

autobaud();

printf(”MSC1210 Interrupt−Driven ADC Conversion Test\n”);

//Timer Setup

USEC= 10; // 11MHz Clock

ACLK = 9; // ACLK = 11,0592,000/10 = 1,105,920 Hz

// modclock = 1,105,920/64 = 17,280 Hz

// Setup interrupts

EAI = 1; // Enable auxiliary interrupts

AIE = 0x20; // Enable A/D aux. interrupt

// Setup ADC

PDCON &= 0x0f7; //turn on adc

ADMUX = 0x01; //Select AIN0/AIN1

ADCON0 = 0x30; // Vref On, Vref Hi, Buff off, BOD off, PGA=1