フレッシャーズのための組み込みソフト開発講座 ――新人エンジニアがまわりの信頼を勝ち得るには...
●割り込み禁止とデータ量についてのトラブルを経験
ここで,筆者の過去の失敗を紹介します.これは,割り込み禁止区間を考えていなかったため,仕様変更に耐えられなかった設計の例です.
筆者は,シリアル通信プログラムを作成しました.データ受信時に割り込みを発生させ,割り込みハンドラでデータを受信します.上位プログラム(上位階層のプログラム)からの受信要求があるまでは,受信データは内部バッファに格納しておき,受信要求が来たときにタスク環境(割り込みハンドラではない)において内部バッファのデータを上位プログラムのバッファに転送する機能を持っていました(図3).
当初,最大データ長が128バイトだったので,内部バッファ・サイズも128バイトにしました.129バイト以上のデータが送信されてきた場合は,後から受信したデータを捨てることにしました(一応は,バッファ・サイズを気にしていた).データの正当性の判定は,上位プログラムで実施しました.
〔図3〕作成したシリアル通信プログラムの概要
データ受信時に割り込みを発生させ,割り込みハンドラでデータを受信する.上位プログラムからの受信要求があるまでは,受信データは内部バッファに格納しておき,受信要求が来たときには,タスク環境において内部バッファのデータを上位プログラムのバッファに転送する機能を持っている.
tag: 技術教育