掲示板


[記事リスト] [返信する] [新着記事] [過去ログ] [ワード検索] [留意事項] [管理用]

記事No 847
タイトル USART受信プログラム
投稿日 : 2017/03/22(Wed) 10:47:49
投稿者 radio
参照先
PIC18F2320 + C18の環境で作成しています。

下記サイトを参考にさせていただき、無線ラジコンに取り組んでいます。
送信側は完成しましたが、受信側のプログラムで躓いています。

[送信側]
http://www.picfun.com/Sensor/equipj77.html

XCTUで確認した所、受信側で次のデータが受信できていることを確認しました。

53 53 02 00 00 00 00 FD FF FF FF FF 45
(S S 方向 右速度H 右速度L 左速度H 左速度L ~方向 ~右速度H ~右速度L ~左速度H ~左速度L E)


続いて、受信側のプログラムに取り掛かりました。
[受信側]
http://www.picfun.com/Sensor/equipj78.html

Radio control関数(下記に掲載します)で躓いています。

サイトのコードを参考に、C18環境で書き直して確認していますが、
(確認の方法は、受信データをLCDに表示させています。)

LCDにデータが何も表示されません。
カーソルは2マス動くのですが、何も表示されない状態です。

確認の方法を含めて何かおかしなことをしているのでしょうか。
教えていただけると助かります。

void RadioControl(void)
{
char buff1[20]; //LCD 1行目表示データ
char buff2[20]; //LCD 2行目表示データ

// データ受信と受信データ解析
RcvData = ReadUSART( ); // 1バイト受信
sprintf(buff1,(const far rom char *)"%2d%",RcvData);
lcd_cmd(0x80); //1行目へ移動
lcd_str(buff1);
lcd_clear(); //LCD全消去
delay_ms(1000);

if(RcvData == 'S') // 'S'受信待ち
{
RcvData = ReadUSART( );
sprintf(buff1,(const far rom char *)"%2d%",RcvData);
lcd_cmd(0x80); //1行目へ移動
lcd_str(buff1);
lcd_clear(); //LCD全消去
delay_ms(1000);
if(RcvData == 'S') // 連続'S'受信待ち
{
for(i=0; i<5; i++) // データ受信5バイト
while (!DataRdyUSART());
Buf1[i] = getcUSART( );
for(i=0; i<5; i++) // 反転データ5バイト受信
while (!DataRdyUSART());
Buf2[i] = ~getcUSART( );
RcvData = ReadUSART( ); // 'E'受信
// データ照合とモータ制御
//MotorControl();
}
}
}

- 関連一覧ツリー (▼ をクリックするとツリーを一括表示します)


- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)
おなまえ
Eメール
タイトル
メッセージ
参照先
画像UP
暗証キー (英数字で8文字以内)
投稿キー (右画像の数字を入力) 投稿キー


- 投稿記事修正/削除フォーム -
処理 No 暗証キー

- WebForum -