2013年4月1日月曜日

データ構造の違いで(PIC C18)

2008年に納品した装置の改造依頼が来たので、マイコンプログラムの変更に着手した。
2010年にこの装置の高機能版を作った際は、この間の勉強の成果もあって、かなり進化したプログラムとなった。

今回は、古いほうのプログラムの修正で対応することにした。これは、初のボリウムの大きい作品で、ずらずらとプログラムを書いてある。ファイルはいくつかに分割されているが、インクルードしているだけ。ヘッダーファイルの意味や必要性がまだよく分からない頃のもので、まず「実現すること」が優先だった。

で、始めると本来の改造以前に、手を加えたくなるところが次々に出てくる。まずデータの構造化によって、ずらずらと記述していた部分が、簡単な For 文で済んでしまうような個所がいくつも見つかる。struct, union, 配列などを用いてプログラムの中で使われる固定値を整理することで、プログラムもすっきりする。また、機能が重複している部分の関数の整理。その後アルゴリズムが改善されステップ数が減った関数などもあった。

実現する機能としても単純化の方向ではあったが、7723 byte -> 5752 byte とプログラムメモリ使用量はずいぶん減った。