組み込みシステム設計者のためのLIN2.0マイコン実装術(後編) ――スレーブ・ノード用ドライバ・ソフトウェア開発のポイント
二つ目のブレーク検出の方法は,ハードウェアによるブレーク検出機能を利用することです.今回使用したマイコンに搭載されているLIN対応UART(UART6)には,ブレーク検出モードの制御レジスタASICL6が用意されています(図7).このレジスタのSBRT6ビットを'1'にするとブレーク検出モードとなり,11ビット以上のロー・パルスを受信すると受信割り込みが発生します(図8).
リスト2に,実際の設定処理を示します.該当ビットを設定するだけです.ブレークを受信すると,通常の受信割り込みが発生します.リスト3は,その受信ハンドラです.ブレーク受信による割り込みかどうかは,内部の状態変数で判別しています(リスト3の9行目).受信後は,同期バイト処理へ移行しています(12行目).
図7 UART6のブレーク検出モードの制御レジスタASICL6
通常は,ブレーク受信モードの開始トリガであるSBRT6ビットのみ使用する.
図8 ブレーク検出時の動作
SBRF6ビットを読むことで,ブレーク受信中を検知できる.
リスト2 ブレーク検出機能を用いた処理
SBRT設定処理のプログラム.UART6のブレーク受信補助機能を有効にする.