組み込みシステム設計者のためのLIN2.0マイコン実装術(後編) ――スレーブ・ノード用ドライバ・ソフトウェア開発のポイント
リスト4は実際の処理の主要部分(エッジ割り込みハンドラ内)です.すでにUARTは停止し,エッジ割り込みは許可状態で使用します.タイマは割り込みが発生してから起動すると誤差が大きくなります.そのため,計測直前に起動しておき,計測処理内ではキャプチャ・レジスタと呼ばれるエッジ割り込み時のタイマ値を保持するレジスタを読み取っています.
リスト4の1行目はエッジ割り込みのカウンタ変数です.3行目のswitch文で回数に応じた処理に振り分けています.1回目(5行目)では最初のタイマ値を取得し,2回目はdefault(28行目)として無視しています.3回目(9行目)で,4ビット分の時間を取得して,ボーレート設定を呼んでいます(14行目).
リスト4 ボーレートの算出