目的
前回、チェックサムと送達確認(PICマイコンからFONに対して応答)を行うようにした。今回は、送達確認を拡張して受信機能(PICマイコンからFONに対してコマンドを出せる)ようにした。
概要
チェックサムOKの場合に、FONに対してACKを送信する。シリアル通信のクロックはFON側で生成しているので、
イメージとしてはSPI通信に近いと思う。
結果
前回同様に1秒毎に顔文字「Adeno(^o^)mm-ss」※mm-ssは分-秒を送信し続けると、400回のコマンド送信に対して、送信NGは15回
80回のときは、2回 2〜3%くらい?
結果は地味だけど、PIC→FON方向の通信ができるようになったのは大きい
何をやったか
・フォーマット1.データを送信するとき
種類 方向
クロック FON→PIC 385us
送信データ [STX][チェックサム][DATA][ETX]
受信データPIC→FON 1byte前に対する受信結果
2.送信結果を確認するとき
種類 方向
クロック FON→PIC 385us
送信データ [ENQ]
受信データPIC→FON 1byte前に対する受信結果
黄色・・・クロック
水色・・・受信データ(PIC→FON)この場合はACK(0x06)
------------------------------------------------
gpio_write_sr Start:CLK=12 DATA_OUT=11 DATA_IN=14
Send:[STX][CHKSUM = 14][DATA][ETX]<-4ms->[ENQ]
Input = 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6
RcvChk = OK
Total Time = 307ms
------------------------------------------------
・FON側
・PIC側
受信処理の後、に送信したいものを出力するだけ
↓受信処理
sr_buf = ((sr_buf<<1) & 0xFE) | (0x01 & DATA_PORT);
↓送信処理
//DATA 出力
if((sr_out & sr_out_mask) == 0){
DATA_OUT_PORT = 0;
}else{
DATA_OUT_PORT = 1;
}
sr_out_mask = sr_out_mask >> 1;
・エラー発生回数測定用スクリプト
今日はここまで、次回は、PICからなにかデータを送信させてみるか
0 件のコメント:
コメントを投稿