組み込みシステム設計者のためのLIN2.0マイコン実装術(後編) ――スレーブ・ノード用ドライバ・ソフトウェア開発のポイント

舘 伸幸

tag: 組み込み

技術解説 2006年2月17日

● 保護IDは処理時間に注意

 ブレークと同期バイトを正常に処理できれば,後は基本的に普通のUART通信を行うだけです.保護IDも単に1バイト受信するだけ(のはず...)ですが,ちょっとした注意が必要です.

 保護IDには,パリティ情報が付加されているため,これをチェックする必要があります.受信の場合,次に来るデータ・バイトをUARTが受信している間に保護IDの処理を行えばよいのですが,送信の場合はレスポンス・スペースの大きさに影響を与えてしまいます(図12)

 おおまかに言えば,保護ID処理から0.5ビット時間を引いた値がレスポンス・スペースとなります.マイコンが高速で,この値が負になる場合,時間待ち処理を入れる必要があります(図5の「送信レスポンス・スペース」状態).

 リスト5(a)は,パリティ・チェック処理をコンパイラに依存しない範囲で,C言語で記述した例です.C言語はもともとビット演算に弱いこともあり,コード効率の問題も相まって,意外とかさばる処理となってしまいます.このような場合,一部をアセンブリ言語で実装すると効果的です.リスト5(b)はその例です.今回の環境では,元のCソースと比べて,コード・サイズは1/4に,処理時間は1/5になりました.

f12_01.gif
図12 保護ID処理
送信時,この処理に手間取ると,レスポンス・スペースが大きくなってしまう.

リスト5 チェックサム計算処理

list05_01.gif
(a)C言語による記述

 

list05_02.gif
(b)アセンブリ言語による記述

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日