私はGPSモジュールを備えたATMega32を使用して、LCDディスプレイ(緯度と経度)にデータを表示しています。 GPSモジュールは毎秒9600 bpsで一連のデータを送信します。 文字列はNMEA文で、$記号で始まり、その文字を使って受信機(AVR UART)を同期させます。AVR USARTが期待通りに動作しない
これは私が使用するコードである:
// GPS.h
void GPS_read(char *sentence)
{
while ((*sentence = USART_receive()) != '$')
;
USART_receive_string(++sentence);
}
// USART.h
unsigned char USART_receive(void)
{
while (!(UCSRA & (1<<RXC)))
;
return UDR;
}
void USART_receive_string(char *string)
{
do
{
*string = USART_receive();
} while (*string++ != '\n'); // NMEA sentences are <CR><LF> terminated
*string = '\0';
}
IはGPS_read、その後LCD上に文字列を表示する文字列を渡します。 データを表示するタイミングに応じて、$ Gと\ n文字からなるゴミデータが得られます。
私は(私は:)初心者の組込みプログラマだ)ここにいくつかのミスを作ってるんだが、それは二日をされていると私は私が間違っているのかを把握することはできません
助けてください! ありがとう Luca
を言うと思います*文[インデクサ++]'? - 私はそうは思わない。 – JimmyB
"コードにいくつかのエラーがあります" - これらのエラーは何ですか? – JimmyB
なぜですか? *文がchar配列のアドレスを指している、Indexがインデクサーとして使用されている場合、Dataの値が配列のその特定の要素に格納されると、Indexerを1インクリメントして配列準備の次の要素USART_receive_string()関数の場合私は何が欠けていますか? –