Escolar Documentos
Profissional Documentos
Cultura Documentos
h" void initializeADC(void) { ADC10CTL0 = REF2_5V + REFON + ADC10ON + ADC10SHT_2 + ADC10IE; //ADC Configuration: //High ref 2.5V, Reference generator ADC ON, ADC ON, Sample and Hold, Interrupt enabled } unsigned short int readADC(char channel) { unsigned short int res6 = 0xFF; //changed from int to volatile int to avoid warnings unsigned short int res7 = 0xFF; //changed from int to volatile int to avoid warnings if (channel == 12) { ADC10CTL0 &= ~(ENC); ADC10CTL1 = INCH_12; ADC10AE0 = BITC; ADC10CTL0 |= ENC + ADC10SC; ADC10SC __bis_SR_register(CPUOFF + GIE); //delay_ms(1); res6 = ADC10MEM; return res6; } else if (channel == 13) { ADC10CTL0 &= ~(ENC); ADC10CTL1 = INCH_13; ADC10AE0 = BITD; ADC10CTL0 |= ENC + ADC10SC; ADC10SC __bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit // LPM0, ADC10_ISR will force exit
//Write 0 on ENC in order to reconfigure ADC //Channel 12 ADC enabled //Pin for Channel 12 ADC enabled //Trigger conversion 1 by toggling ENC and //causing high edge on
//Write 0 on ENC in order to reconfigure ADC //Channel 13 ADC enabled //Pin for Channel 13 ADC enabled //Trigger conversion 2 by toggling ENC and //causing high edge on
//delay_ms(1); res7 = ADC10MEM; return res7; } else return 0; } // ADC10 interrupt service routine #pragma vector=ADC10_VECTOR __interrupt void ADC10_ISR(void) { __bic_SR_register_on_exit(CPUOFF); }
unsigned short int readADC_oldVersion(char channel) { unsigned short int res6 = 0xFF; //changed from int to volatile int to avoid warnings unsigned short int res7 = 0xFF; //changed from int to volatile int to avoid warnings if (channel == 12) { ADC10CTL0 &= ~(ENC); ADC10CTL1 = INCH_12; ADC10AE0 = BITC; ADC10CTL0 |= ENC + ADC10SC; ADC10SC /*while( (ADC10CTL1 & BIT0) == 1) { delay_ms(1); }*/ delay_ms(1); res6 = ADC10MEM; return res6; } else if (channel == 13) { ADC10CTL0 &= ~(ENC); ADC10CTL1 = INCH_13; ADC10AE0 = BITD; ADC10CTL0 |= ENC + ADC10SC; ADC10SC //Conversion in progress, wait
//Write 0 on ENC in order to reconfigure ADC //Channel 12 ADC enabled //Pin for Channel 12 ADC enabled //Trigger conversion 1 by toggling ENC and //causing high edge on
//Write 0 on ENC in order to reconfigure ADC //Channel 13 ADC enabled //Pin for Channel 13 ADC enabled //Trigger conversion 2 by toggling ENC and //causing high edge on
/*while( (ADC10CTL1 & BIT0) == 1) { delay_ms(1); }*/ delay_ms(1); res7 = ADC10MEM; return res7; } else return 0; }
void testADC(void) { volatile int res6 = 0xFF; //changed from int to volatile int to avoid warnings volatile int res7 = 0xFF; //changed from int to volatile int to avoid warnings volatile unsigned short bsy = 0xF; //changed from int to volatile int to avoid warnings volatile unsigned short int i, j; P1DIR |= 0x01; ADC10CTL0 &= ~(ENC); ADC10CTL1 = INCH_6; ADC10AE0 = BIT6; ADC10CTL0 |= ENC + ADC10SC; bsy = 0xF; bsy = ADC10CTL1 & 0x01; res6 = ADC10MEM; P1OUT ^= 0x01; ADC10CTL0 &= ~(ENC); ADC10CTL1 = INCH_7; ADC10AE0 = BIT7; ADC10CTL0 |= ENC + ADC10SC; bsy = 0xF; bsy = ADC10CTL1 & 0x01; res7 = ADC10MEM; delay_ms(1000); } //volatile to prevent optimization //Set P1.0 to output direction //Write 0 on ENC in order to reconfigure ADC //Channel 6 ADC enabled //Pin for Channel 6 ADC enabled //Trigger conversion 1
//Toggle P1.0 using exclusive-OR //Write 0 on ENC in order to reconfigure ADC //Channel 7 ADC enabled //Pin for Channel 7 ADC enabled //Trigger conversion 2