Greetings I would like to know how to switch between a simple ADC conversion from 1 analog input and a sequence of conversión from 2 analog inputs, for 2 current sensors with MSP430F5529 . I need to have the reading of only one sensor each second, and the reading of both sensors each 5 minutes. Currently I'm making the reading of both sensors each second, but the idea is save resources through ignoring one reading until the next 5 minutes. There's my ADC code: #include #include "ADC.h" /* * LOCAL VARIABLES */ volatile unsigned int current1; volatile unsigned int current2; /* * FUNCTIONS */ void initADC(void) { P6SEL = 0x0F; // Enable A/D channel inputs ADC12CTL0 = ADC12ON+ADC12MSC+ADC12SHT0_2; // Turn on ADC12, set sampling time ADC12CTL1 = ADC12SHP+ADC12CONSEQ_1; // Use sampling timer, single sequence ADC12MCTL0 = ADC12INCH_0; // ref+=AVcc, channel = A0 ADC12MCTL1 = ADC12INCH_1+ADC12EOS; // ref+=AVcc, channel = A1, end seq. ADC12IE = ADC12IFG1; // Enable ADC12IFG.1 ADC12CTL0 |= ADC12ENC; // Enable conversions __bis_SR_register(GIE); // Enable interrupts return; } void getADC(int * currents){ ADC12CTL0 |= ADC12SC; currents[0]=current1; currents[1]=current2; ADC12CTL0 &= ~ADC12SC; return; } /* * INTERRUPTIONS */ #pragma vector=ADC12_VECTOR __interrupt void ADC12ISR(void) { switch(__even_in_range(ADC12IV,34)) { case 0: break; // Vector 0: No interrupt case 2: break; // Vector 2: ADC overflow case 4: break; // Vector 4: ADC timing overflow case 6: break; // Vector 6: ADC12IFG0 case 8: // Vector 8: ADC12IFG1 current1 = ADC12MEM0; // Move results, IFG is cleared current2 = ADC12MEM1; // Move results, IFG is cleared __bic_SR_register_on_exit(LPM4_bits); // Exit active CPU, SET BREAKPOINT HERE break; case 10: break; // Vector 10: ADC12IFG2 case 12: break; // Vector 12: ADC12IFG3 case 14: break; // Vector 14: ADC12IFG4 case 16: break; // Vector 16: ADC12IFG5 case 18: break; // Vector 18: ADC12IFG6 case 20: break; // Vector 20: ADC12IFG7 case 22: break; // Vector 22: ADC12IFG8 case 24: break; // Vector 24: ADC12IFG9 case 26: break; // Vector 26: ADC12IFG10 case 28: break; // Vector 28: ADC12IFG11 case 30: break; // Vector 30: ADC12IFG12 case 32: break; // Vector 32: ADC12IFG13 case 34: break; // Vector 34: ADC12IFG14 default: break; } } Thank you for your attention, every suggestion is welcome. Have a nice day.
↧