Tool/software:
Hello,
I am using MSP430FR6989 development board. I set the pins which are P9.0 to P9.7 and I would like to get the values by using interrupt. I get the result between 700 and 890 even if I connect the pin GND and 3v3 voltage pin respectively while debugging. Nothing changes on any pin. I am sharing the test code here. I tried it by changing referans voltage like internal 1.2V or 2V but still did not get logical results. Any help will be appreciated.
Regards.
#include <msp430.h>
#include <stdint.h>
volatile uint16_t adc_values[8];
volatile uint8_t adc_index = 0;
void led_config();
void led_on();
void led_off();
void main(void) {
WDTCTL = WDTPW + WDTHOLD;
PM5CTL0 &= ~LOCKLPM5;
ADC12CTL0 = ADC12SHT0_3 | ADC12ON;
ADC12CTL1 = ADC12SHP | ADC12CONSEQ_1;
ADC12CTL2 = ADC12RES_2;
ADC12MCTL0 |= ADC12INCH_0 | ADC12VRSEL_0;
ADC12MCTL1 |= ADC12INCH_1 | ADC12VRSEL_0;
ADC12MCTL2 |= ADC12INCH_2 | ADC12VRSEL_0;
ADC12MCTL3 |= ADC12INCH_3 | ADC12VRSEL_0;
ADC12MCTL4 |= ADC12INCH_4 | ADC12VRSEL_0;
ADC12MCTL5 |= ADC12INCH_5 | ADC12VRSEL_0;
ADC12MCTL6 |= ADC12INCH_6 | ADC12VRSEL_0;
ADC12MCTL7 |= ADC12INCH_7 | ADC12VRSEL_0;
P9SEL0 |= 0xFF;
P9SEL1 |= 0xFF;
ADC12IER0 |= ADC12IE0 | ADC12IE1 | ADC12IE2 | ADC12IE3 | ADC12IE4 | ADC12IE5 | ADC12IE6 | ADC12IE7 ;
while(1) {
ADC12CTL0 |= ADC12SC | ADC12ENC; // ADC örnekleme ve dönüşümü başlat
__delay_cycles(2000);
__bis_SR_register(GIE);
}
}
#pragma vector=ADC12_VECTOR
__interrupt void ADC_ISR(void) {
switch(__even_in_range(ADC12IV, ADC12IV_ADC12RDYIFG))
{
case ADC12IV_ADC12IFG0:
adc_values[0] = ADC12MEM0;
break;
case ADC12IV_ADC12IFG1:
adc_values[1] = ADC12MEM1;
break;
case ADC12IV_ADC12IFG2:
adc_values[2] = ADC12MEM2;
break;
case ADC12IV_ADC12IFG3:
adc_values[3] = ADC12MEM3;
break;
case ADC12IV_ADC12IFG4:
adc_values[4] = ADC12MEM4;
break;
case ADC12IV_ADC12IFG5:
adc_values[5] = ADC12MEM5;
break;
case ADC12IV_ADC12IFG6:
adc_values[6] = ADC12MEM6;
break;
case ADC12IV_ADC12IFG7:
adc_values[7] = ADC12MEM7;
break;
}
}