Part Number:MSP430FR5969
Hello TI Community,
Thanks for the support with your devices. I am programming a MSP430 and I want to configure P1.6 to read a digital input. I set up a voltage divider to give me 3V when a switch is on, and 0V when the switch is off. I configured P1.6 to be an input, with P1DIR register, P1OUT bit 6 to zero for pulldown selected and P1REN bit 6 to 1 to enable pulldown/up resistor. The problem is I always get a zero, despite the voltage I apply on the input. Is there a problem with my code?
Best wishes,
Luiz Moreira
#include <msp430.h>
int main(void)
{
WDTCTL = WDTPW | WDTHOLD; // Stop WDT
// Configure GPIO
P1DIR = 0b10001000;//|= BIT3 | BIT7; //output
P1REN = 0b01000000;
P1OUT = 0b00001000;//|= BIT3;
// Disable the GPIO power-on default high-impedance mode to activate
// previously configured port settings
PM5CTL0 &= ~LOCKLPM5;
//CLock
CSCTL0_H = CSKEY >> 8; // Unlock CS registers
CSCTL1 = DCOFSEL_0; //DCO em 1 mhz
CSCTL2 = SELA__VLOCLK | SELS__DCOCLK | SELM__DCOCLK; //SMCLK em 1 MHz
CSCTL3 = DIVS_0;
//Timer A
TA0CCTL0 = CCIE; // TACCR0 interrupt enabled
TA0CCR0 = 1000;
TA0CTL = TASSEL__SMCLK | MC__UP; // SMCLK, UP mode
// Configure ADC12
ADC12CTL0 = ADC12SHT0_2 | ADC12ON; // Sampling time, S&H=16, ADC12 on
ADC12CTL1 = ADC12SHP; // Use sampling timer
ADC12CTL2 |= ADC12RES_2; // 12-bit conversion results
ADC12MCTL0 |= ADC12INCH_1; // A1 ADC input select; Vref=AVCC
ADC12IER0 |= ADC12IE0; // Enable ADC conv complete interrupt
while (1)
{
if((P1IN & BIT6)==1){
P1OUT = 0b10000000;//|= BIT7;
}
else if((P1IN & BIT6)==0){
P1OUT = 0b00000000;//|= BIT7;
}
__delay_cycles(5000);
ADC12CTL0 |= ADC12ENC | ADC12SC; // Start sampling/conversion
__bis_SR_register(LPM0_bits + GIE);
__no_operation(); // For debugger
}
}