Сегодня просмотрел примеры использования
DTC для ADC от TIvoid main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
ADC10CTL1 = INCH_1 + CONSEQ_3; // A1/A0, repeat multi channel
ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE;
ADC10AE = 0x03; // P2.0,1 ADC option select
ADC10DTC1 = 0x40; // 40 conversions
P1DIR |= 0x01; // Set P1.0 output
for (;;)
{
P1OUT |= 0x01; // Set P1.0 LED on
ADC10CTL0 &= ~ENC;
while (ADC10CTL1 & BUSY); // Wait if ADC10 core is active
ADC10SA = 0x200; // Data buffer start
ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion ready
_BIS_SR(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit
P1OUT &= ~0x01; // Clear P1.0 LED off
}
}
// ADC10 interrupt service routine
#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR (void)
{
_BIC_SR_IRQ(CPUOFF); // Clear CPUOFF bit from 0(SR)
}
Наверное он мнея м запутал. Большое Вам спасибо,
rezident, переписал свою функцию (начальную конфиг. не менял) теперь она выглядит так:
void adc_service(void)
{
Цитата
while (!(ADC10CTL0&ADC10IFG));
ADC10CTL0 &= ~ENC; //
//Забираю данные с вектора
Цитата
ADC10CTL0&=~ADC10IFG;
ADC10SA = 0x204; // Data buffer start
ADC10DTC1 = 8;
ADC10CTL0 |= ENC + ADC10SC;
}