0
내 UART가 4800bps 속도로 구성되어 있습니다. 아래에 붙여 넣은 UART 코드를 사용하여 NMEA 문장 (GPS 평가판)을 RX 할 수 없습니다. 개별적으로 GPS + 터미널 및 UART + 터미널이 정상적으로 작동합니다. 그러나 GPS + UART, 나는 결코 어떤 문장도 수신 할 수 없다. GPS 기본 부지 비율은 4800이다.UART가 GPS NMEA 문장을 수신 할 수 없음
내가 UART로 잘못 가고있는 어떤 생각? ??? > UART 컨버터 -
/**
* uart default at 4800 ACLK= 32.768KHz
* @4800 bps
*/
void UART_default(void){
P3SEL = BIT3+BIT4;
UCA0CTL1 |= UCSWRST;
UCA0CTL1 |= UCSSEL_1;
UCA0BR0 = 0x06;
UCA0BR1 = 0x00;
UCA0MCTL |= UCBRS_6+UCBRF_0;
UCA0CTL1 &= ~UCSWRST;
UCA0IE |= UCRXIE;
}
#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void)
{
volatile char byte;
switch(__even_in_range(UCA0IV,4))
{
case 0:break; // Vector 0 - no interrupt
case 2:
byte= UCA0RXBUF;
if (byte == '\r') {
push_char(byte); // At end of Data transmission
ptr = 0;
}
else{
push_char(byte);
ptr++;
}
break;
case 4:break;
default: break;
}
}
문제가있는 곳을 좁히기위한 몇 가지 질문 : GPS가 데이터를 전송하고 있는지 확인 했습니까? RX 라인의 로직 분석기가 유효한 4800bps 데이터를 볼 수 있습니까? 인터럽트를 사용하는 대신 UART를 폴링하는 데이터를받을 수 있습니까? –
나는 또한 당신이 라인을받지 못한다는 것을 어떻게 알 수 있습니까? 어떻게 테스트 했습니까? 라인을 어떻게 처리하려고합니까? push_char()는 무엇을하고 ptr은 나머지 코드에서 어떻게 사용됩니까? – tinman