I am using a MSP430fr4133. When I use the sample code msp430rf413x_P103.c it works fine. I have code I wrote to use GPIO pin closer to trip a count on an LCD that works fine. Now when I that the interrupt code and replace my GPIO pin code my program will not count. I leave the led status in the code and it just stays on no toggle. can someone help?
Part of my code:
#include <msp430.h>
#include <LCD.h>
volatile signed int Ctr; // Loop counter: volatile!
volatile unsigned char pos; // saves the position of the LCD Char
volatile signed int Ctr1; // ones place
volatile signed int Ctr2; // hundreds place
volatile signed int Ctr3; // thoundsand place
volatile signed int Ctr4; // ten thoundsands place
volatile signed int Ctr5; // hundred thoundsands place
volatile signed int Ctr6; // one million place
void Calculate(void);
void SPI(void);
volatile signed int Stop=0;
int main( void )
{
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
//Initialize GPIO
// Configure XT1 oscillator
P4SEL0 |= BIT1 | BIT2; // P4.2~P4.1: crystal pins
P1SEL0 |= BIT0 | BIT1 | BIT2 | BIT3; // set 4-SPI pin as second function
do
{
CSCTL7 &= ~(XT1OFFG | DCOFFG); // Clear XT1 and DCO fault flag
SFRIFG1 &= ~OFIFG;
}while (SFRIFG1 & OFIFG); // Test oscillator fault flag
CSCTL6 = (CSCTL6 & ~(XT1DRIVE_3)) | XT1DRIVE_2; // Higher drive strength and current consumption for XT1 oscillator
PMMCTL0 = PMMPW; // Open PMM Module
//sets input Mode
P1SEL0 &= ~BIT5;
P1DIR &= ~BIT5;
P1OUT|=BIT5;
// Sets pull up resistor on switch
P1REN |= BIT5;
// Configure LCD pins
SYSCFG2 |= LCDPCTL; // R13/R23/R33/LCDCAP0/LCDCAP1 pins selected
LCDPCTL0 = 0xFFFF;
LCDPCTL1 = 0x07FF;
LCDPCTL2 = 0x00F0; // L0~L26 & L36~L39 pins selected
LCDCTL0 = LCDSSEL_0 | LCDDIV_7; // flcd ref freq is xtclk
// LCD Operation - Mode 3, internal 3.08v, charge pump 256Hz
LCDVCTL = LCDCPEN | LCDREFEN | VLCD_6 | (LCDCPFSEL0 | LCDCPFSEL1 | LCDCPFSEL2 | LCDCPFSEL3);
LCDMEMCTL |= LCDCLRM; // Clear LCD memory
LCDCSSEL0 = 0x000F; // Configure COMs and SEGs
LCDCSSEL1 = 0x0000; // L0, L1, L2, L3: COM pins
LCDCSSEL2 = 0x0000;
LCDM0 = 0x21; // L0 = COM0, L1 = COM1
LCDM1 = 0x84; // L2 = COM2, L3 = COM3
LCDMEM[pos5] = LCD_Tab[Ctr1];
LCDCTL0 |= LCD4MUX | LCDON; // Turn on LCD, 4-mux selected
PMMCTL0_H = PMMPW_H; // Open PMM Registers for write
PMMCTL0_L |= PMMREGOFF_L; // and set PMMREGOFF
LCDMEM[pos6] = LCD_Tab[Ctr2];
LCDCTL0 |= LCD4MUX | LCDON; // Turn on LCD, 4-mux selected
PMMCTL0_H = PMMPW_H; // Open PMM Registers for write
PMMCTL0_L |= PMMREGOFF_L; // and set PMMREGOFF
LCDMEM[pos4] = LCD_Tab[Ctr2];
LCDCTL0 |= LCD4MUX | LCDON; // Turn on LCD, 4-mux selected
PMMCTL0_H = PMMPW_H; // Open PMM Registers for write
PMMCTL0_L |= PMMREGOFF_L; // and set PMMREGOFF
LCDMEM[pos3] = LCD_Tab[Ctr2];
LCDCTL0 |= LCD4MUX | LCDON; // Turn on LCD, 4-mux selected
PMMCTL0_H = PMMPW_H; // Open PMM Registers for write
PMMCTL0_L |= PMMREGOFF_L; // and set PMMREGOFF
LCDMEM[pos2] = LCD_Tab[Ctr2];
LCDCTL0 |= LCD4MUX | LCDON; // Turn on LCD, 4-mux selected
PMMCTL0_H = PMMPW_H; // Open PMM Registers for write
PMMCTL0_L |= PMMREGOFF_L; // and set PMMREGOFF
LCDMEM[pos1] = LCD_Tab[Ctr2];
LCDCTL0 |= LCD4MUX | LCDON; // Turn on LCD, 4-mux selected
PMMCTL0_H = PMMPW_H; // Open PMM Registers for write
PMMCTL0_L |= PMMREGOFF_L; // and set PMMREGOFF
LCDMEM[11] = 0x1; //Decimal point
LCDCTL0 |= LCD4MUX | LCDON; // Turn on LCD, 4-mux selected
PMMCTL0_H = PMMPW_H; // Open PMM Registers for write
PMMCTL0_L |= PMMREGOFF_L; // and set PMMREGOFF
LCDMEM[13] = 0x01;// battery indcator
LCDCTL0 |= LCD4MUX | LCDON; // Turn on LCD, 4-mux selected
PMMCTL0_H = PMMPW_H; // Open PMM Registers for write
PMMCTL0_L |= PMMREGOFF_L; // and set PMMREGOFF
// set varables to zero
Ctr=0;
Ctr1=0;
Ctr2=0;
Ctr3=0;
Ctr4=0;
Ctr5=0;
Ctr6=0;
while(!Stop) { // Loop forever
if ((P1IN & BIT5) == 0) // Loop while button down
{
Calculate();
__delay_cycles(1200000); // Delay for 100000*(1/MCLK)=0.1s
}
}
}