RFID Card Reader Serial 28140 UART to MSP430 Help!
Terran910
Posts: 1
Does anyone have any example code for reading from the Parallax RFID Card Reader?
I'm not sure what I'm doing wrong, but I know the baud rate has to be 2400.
I worked off an example msp430 uart code, but I see nothing in the receive buffer.
I'm not sure what I'm doing wrong, but I know the baud rate has to be 2400.
I worked off an example msp430 uart code, but I see nothing in the receive buffer.
#include <msp430.h> char RxByte; char RxData[256]; char TxByte; volatile unsigned int i; int main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT if (CALBC1_8MHZ==0xFF) // If calibration constant erased { while(1); // do not load, trap CPU!! } DCOCTL = 0; // Select lowest DCOx and MODx settings BCSCTL1 = DIVA0; BCSCTL1 = CALBC1_8MHZ; DCOCTL = CALDCO_8MHZ; // Load 8MHz constants P1OUT &= ~0x01; // Clear P1.0 P1DIR |= 0x01; // P1.0 output P3SEL |= 0x30; // Use P3.4/P3.5 for USCI_A0 UCA0CTL1 |= UCSWRST; // Set SW Reset UCA0CTL1 = UCSSEL_2 + UCSWRST; // Use SMCLK, keep SW reset UCA0BR0 = 0x05; // 8MHz/3333=2.4KHz UCA0BR1 = 0x0D; UCA0MCTL = UCBRF_1 + UCOS16; // Set 1st stage modulator to 1 // 16-times oversampling mode UCA0IRTCTL = UCIRTXPL2 + UCIRTXPL0 + UCIRTXCLK + UCIREN; // Pulse length = 6 half clock cyc // Enable BITCLK16, IrDA enc/dec UCA0CTL1 &= ~UCSWRST; // Resume operation TxByte = 0x00; // TX data and pointer, 8-bit while (1) { for (i = 1000; i; i--); // Small delay // while (!(IFG2 & UCA0TXIFG)); // USCI_A0 TX buffer ready? // UCA0TXBUF = TxByte; // TX character __disable_interrupt(); IE2 |= UCA0RXIE; // Enable RX int __bis_SR_register(CPUOFF + GIE); // Enter LPM0 w/ interrupts // RxByte = UCA0RXBUF; // Get RXed character if (RxByte == 0x0A) // RX OK? { RxData[0] = RxByte; // Store RXed character in RAM P1OUT |= 0x01; // LED P1.0 on } if (RxByte == 0x0D) // RX OK? { RxData[1] = RxByte; // Store RXed character in RAM P1OUT |= 0x01; // LED P1.0 on } TxByte++; // Next character to TX } } #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) #pragma vector = USCIAB0RX_VECTOR __interrupt void USCIAB0RX_ISR(void) #elif defined(__GNUC__) void __attribute__ ((interrupt(USCIAB0RX_VECTOR))) USCIAB0RX_ISR (void) #else #error Compiler not supported! #endif { RxByte = UCA0RXBUF; // Get RXed character IE2 &= ~UCA0RXIE; // Disable RX int __bic_SR_register_on_exit(CPUOFF); // Exit LPM0 }
Comments