/* ADC12 Settings: */
P6SEL = 0xFF; // Port P6 used by ADC module
ADC12CTL0 &=~ ENC; // Disable conversion before changing
for(i=0; i<8; i++) ADC12MCTL[i] = i;
ADC12MCTL[7] |= EOS;
ADC12CTL1=SHS_1 | SHP | CONSEQ_1;
ADC12CTL0=SHT0_4 | REF2_5V | REFON | ADC12ON | MSC;
TACCR0 = Period-1; // Init TACCR0 w/ sample prd=CCR0+1
TACCR1 = Period-10;
TACCTL1 = OUTMOD_3;
TACTL = TACLR + MC_1 + TASSEL_1;
ADC12IE = 0x0080; // последнее измерение вызывает прерывание
//------------------------------------------------------------
#pragma vector=ADC_VECTOR
__interrupt void ADC12_handler(void)
{
unsigned short i;
P2OUT |= GLED;
ADC12CTL0 |= ENC; // следующий цикл измерения
wP=&Buf[0];
for (i=0;i<=7;i++)
{
*wP++ = ADCMEM[i] | (i<<13);
}
P2OUT &= ~GLED;
switch (ADCmode)
{
case CMD_STOP:
break;
case CMD_RUN:
if (IE1 & UTXIE0)
{
_DINT(); // Enable interrupts
P2OUT &= ~GLED;
P2OUT &= ~YLED;
while (1);
}
BytesToTransmit = SLICE_SIZE;
rP=(unsigned char*)&Buf[0];
TXBUF0 = *rP++;
IE1 |= UTXIE0; // старт передачи
Pila++;
break;
}