Part Number: MSP430FR6047
Hi
I am working on to receiving a data through UART to toggle LED1 while running the code FR6047_USSSWLib_template_example, I am using eUSCI_A1 Registers, for that I modified the the system_pre_init.c as following.
#include <intrinsics.h>
#include <stdint.h>
#include "msp430.h"
#include "main.h"
#ifdef __TI_COMPILER_VERSION__
int _system_pre_init(void)
#elif __IAR_SYSTEMS_ICC__
int __low_level_init(void)
#elif __GNUC__
extern int system_pre_init(void) __attribute__((constructor));
int system_pre_init(void)
#else
#error Compiler not supported!
#endif
{
/* Insert your low-level initializations here */
/* Disable Watchdog timer to prevent reset during */
/* int32_t variable initialization sequences. */
// Stop WDT
WDTCTL = WDTPW + WDTHOLD;
/*
* Configure CS module
* MCLK = 16 MHz from DCOCLK
* SMCLK = 8MHz from DCOCLK
* ACLK = LFXTCLK expected to have a 32.768 KHz
*/
// Unlock CS registers
CSCTL0_H = CSKEY >> 8;
#if (USS_PULSE_MODE == 2)
// Set DCO to 16MHz
CSCTL1 = DCORSEL | DCOFSEL_4;
// Configure wait states to be able to use 16 MHz MCLK
FRCTL0 = (FRCTLPW | NWAITS_2);
// Configure clock dividers all dividers
CSCTL3 = (DIVA__1 | DIVS__2 | DIVM__1);
#else
// Set DCO to 8MHz
CSCTL1 = DCORSEL | DCOFSEL_3;
// Configure clock dividers all dividers
CSCTL3 = (DIVA__1 | DIVS__1 | DIVM__1);
#endif
// Set SMCLK = MCLK = DCO, ACLK = LFXTCLK
CSCTL2 = SELA__LFXTCLK | SELS__DCOCLK | SELM__DCOCLK;
CSCTL4 |= (LFXTDRIVE_3);
CSCTL4 &= ~(LFXTOFF);
CSCTL0_H = 0;
// GPIO Configuration
PAOUT = 0;
PADIR = 0xFFFF;
PBOUT = 0;
PBDIR = 0xFFFF;
PCOUT = 0;
PCDIR = 0xFFFF;
PDOUT = 0;
PDDIR = 0xFFFF;
PEOUT = 0;
PEDIR = 0xFFFF;
#if APPLICATION_ENABLE_UART_DEBUG
// GPIO Configuration for UART mode
P1SEL0 |= (BIT2 | BIT3);
P1SEL1 &= ~(BIT2 | BIT3);
P1OUT &= ~BIT0; // Clear P1.0 output latch
P1DIR |= BIT0; // For LED on P1.0
// Configure USCI_A0 for UART mode, 8-bit data, 1 stop bit
UCA1CTLW0 = UCSWRST; // Put eUSCI in reset
UCA1CTLW0 |= UCSSEL__SMCLK; // CLK = SMCLK
// For BRCLK = SMCLK = 8MHz, and Baud rate = 115200 (See UG)
UCA1BRW = 4;
// UCBRSx (bits 7-4) = 0x55, UCBRFx (bits 3-1) = 5, UCOS16 (bit 0) = 1
UCA1MCTLW = 0x5551;
UCA1CTLW0 &= ~UCSWRST; // release from reset
//--SETUP IRQ A1 RXIFG
UCA1IE |= UCRXIE; // Enable USCI_A0 RX interrupt
__enable_interrupt();
#endif
/*
* Configure LFXT GPIO pins and start
*/
PJSEL0 |= BIT4 | BIT5;
// Disable the GPIO power-on default high-impedance mode to activate
// previously configured port settings
PM5CTL0 &= ~LOCKLPM5;
/*==================================*/
/* Choose if segment initialization */
/* should be done or not. */
/* Return: 0 to omit initialization */
/* 1 to run initialization */
/*==================================*/
return(1);
}
//--------------ISR-------------------
#pragma vector=EUSCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
{
if(UCA1RXBUF == 't')
{
P1OUT ^= BIT0; // TOGGLE LED
}
}
In the line 88 I enabled USCI_A1 RX interrupt and at line no 115 I have added ISR.
However when I try to send data via UART I don't get any response. But when I run a separate code as shown below the LED1 toggles, con some one tell me what I am doing wrong.
#include <msp430.h>
/**
* main.c
*/
int main(void)
{
WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer
//Setup UART A1
UCA1CTLW0 |= UCSWRST; //Put A1 into SW Reset
UCA1CTLW0 |= UCSSEL__SMCLK; //BRCLK = SMCLK (115200 BAUD)
UCA1BRW = 8; // prescalar=8
UCA1MCTLW = 0xD600; //set modulation & low freq
// -- setup ports
P1SEL0 |= (BIT2 | BIT3); // P1 set functions to UART A1 Rx ()
P1SEL1 &= ~(BIT2 | BIT3);
P1OUT &= ~BIT0; // Clear P1.0 output latch
P1DIR |= BIT0; // For LED on P1.0
// Disable the GPIO power-on default high-impedance mode to activate
// previously configured port settings
PM5CTL0 &= ~LOCKLPM5;
UCA1CTLW0 &= ~UCSWRST; // release from reset
//--SETUP IRQ A1 RXIFG
UCA1IE |= UCRXIE; // Enable USCI_A0 RX interrupt
__enable_interrupt();
//main loop
while(1){} //do nothing
return 0;
}
//--ISRs
#pragma vector=EUSCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
{
if(UCA1RXBUF == 't')
{
P1OUT ^= BIT0; // TOGGLE LED
}
}
Thanks in advance
Antony



