Other Parts Discussed in Thread: EVM430-F6779,
Hi,
We are facing issue in MSP430F6779 when using source code of TIDA - 00222 power measurement reference. Here we have configured MSP430 eUSCI_A1 for 4 pin spi slave. When a byte of data is sent from master, MSP430 doesn't entering into the ISR function. Here pin2 of port3 is mapped as STE pin. STE pin (I assume it is chip select for 4pin slave mode) is pulled down when SPI data transfer. but no activity observed from slave side.
Kindly check any configuration is missing here.
//SPI_Configured while initialization int SPI_Configure() { WDTCTL = WDTPW | WDTHOLD; //stop watchdog timer __bis_SR_register(GIE); P3SEL0 |= BIT3 | BIT4 | BIT5; // Set P3.0,P3.1,P3.2 to non-IO & also P3.2 PMAPPWD = PMAPPW; P3SEL0 |= BIT2; P3MAP2 = PM_UCA1STE; // STE port mapped to port 3.2 UCA1CTLW0 |= UCSWRST; // **Put state machine in reset** UCA1CTLW0 |= UCSYNC | UCCKPH | UCMSB |UCMODE_2; // 4-pin, 8-bit SPI slave, UCA1CTLW0 |= UCSSEL_0; // UCxCLK in slave mode UCA1BRW_L = 0x02; UCA1BRW_H = 0; UCA1MCTLW = 0; // No modulation UCA1CTLW0 &= ~UCSWRST; // **Initialize USCI state machine** UCA1IE |= UCRXIE; // Enable RX interrupt return 0; } #pragma vector=USCI_A1_VECTOR __interrupt void USCI_A1_ISR(void) { P5OUT ^= (~BIT0); //LED toggle when entered into this function delay(20000); //20ms delay switch (__even_in_range(UCA1IV, 4)) { case USCI_NONE: break; // No interrupt case USCI_SPI_UCRXIFG: // RXIFG while(!(UCA1IFG & UCTXIFG)); UCA1TXBUF = 0x12; //Send 0x12 spi_data when RX interrupt occured break; case USCI_SPI_UCTXIFG: break; // TXIFG default: break; } }