Что не так? Помогите плз малоопытному))
из main():
1) volatile float U[4]; //--------------------------- Конфигурация портов --------------------------- ....... P6SEL |= 0xFF; P6DIR = 0x00; ....... 2) case cmCURRENT: { Counter=0; SetADC_Current(); /// Настройка АЦП. P2OUT &= ~UPRAKS1; P2OUT |= ON1+ON2; P2OUT &= ~ON3; /// delay_ms(300); // (пробовал задержки и больше везде где можно, нужно только тут) ADC12CTL0 |= ADC12SC; // Start conversion while(ADC12CTL1&ADC12BUSY) // пока выполняется оцифровка... {} P2OUT |= ON3; delay_ms(300); ADC12CTL0 |= ADC12SC; // вкл. преобразование вручную // Start conversion while(ADC12CTL1&ADC12BUSY) // пока выполняется оцифровка... {} // ADC12CTL0 &= ~ADC12SC; P2OUT &= ~ON3; P2OUT |= UPRAKS1; /// Вкл. акс. delay_ms(300); ADC12CTL0 |= ADC12SC; // вкл. преобразование вручную // Start conversion while(ADC12CTL1&ADC12BUSY) // пока выполняется оцифровка... {} P2OUT |= ON3; delay_ms(300); ADC12CTL0 |= ADC12SC; // вкл. преобразование вручную // Start conversion while(ADC12CTL1&ADC12BUSY) // пока выполняется оцифровка... {} P2OUT &= ~(UPRAKS1+ON1+ON2+ON3); ResetADC(); .................................. }
ОБРАБОТКА ДАННЫХ С АЦП #pragma vector=ADC_VECTOR __interrupt void ADC12_ISR (void) { ...................
else if(Command_USB ==cmCURRENT) { U[Counter++] = ADC12MEM0; } ............... }
void SetADC_Current() { ADC12CTL0 = ADC12ON | SHT0_7 | ADC12OVIE | ADC12TOVIE; //SHT0_0; ADC12CTL1 = ADC12SSEL_3 | SHP | CSTARTADD_0; ADC12MCTL0 = INCH_3 | SREF_0 | EOS; /// канал 4 - единственный, INCH_3 ADC12IE = 0x01; //08; /// разрешить нужное прерывание for (int i=0; i<0x3600; i++) // выполнить настройки {} ADC12CTL0 |= ENC; }
Сообщение отредактировал *Leo* - Dec 21 2010, 19:53
|