Что не так? Помогите плз малоопытному))
из 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;
}