(日々の記録)デジタルオシロを買った。(金)割込み制御ソフトUART今度は開発環境が(11/24/07)冒険物語はこれで終わりではなかった。ソースが大きくなってきたので懸案のファイルの分割化でまた奇妙な現象に悩まされた。定石どおり、ヘッダーファイルを作り、関数のプロトタイプと#ifdefを使ってグローバル変数をそこへ移してコンパイルした。これが通らないのである。やれ関数を多重に定義しているの、知らない変数があるなどと身に覚えのないエラーが頻発し先に進めない。今まで何のためにあるのか良く理解できなかった#ifdefだの#ifndefなどのプリプロセッサーの指令をマスターできたのは収穫だったが、要するにヘッダーがうまく機能していない。それではというのでヘッダーをやめて、全部分割したファイルに戻してやってみる。ヘッダーファイルを#includeするというのはそれぞれのソースにコピーしているにすぎない。ところがこれでもエラーが出る。フルートの勉強会から気分よく帰ってきて、その勢いでPCに向かい、ソースファイルを一本に戻してみた。何とこれでも同じエラー。これは間違いなく開発環境がおかしい。他のプロジェクトを見に行ってみると、何と何と前のプロジェクトからソースファイルが消えてなくなっている!今度のプロジェクトはこのソースのコピーを新しいプロジェクトに持ってきて展開していたのだ。開発環境のAVRstudioのバグである。印刷とバックアップがあるので実害は少ないが、ひどい目にあわされたものである。要するに環境の中にソースファイルが2つ入っていて、画面上にはひとつしか見えなかったのだ。それで多重定義だとコンパイラーが怒っていたのだろう。この環境は、無料なのであまり文句は言えない。コンパイラーはプラグインのgccコンパイラーで環境それ自体と独立している。makefileのパラメータを切るのが面倒でこの環境を使っているが、エディターも余り使いよいものではないし、そろそろ見直しが必要なのかもしれない。ソースコードデバッグは割り込みやタイミングの必要なソフトでは余り役に立たないし。平和な気持ち(11/25/07)研修講師の準備をまだ何もやっていない。明日から1週間はこのマイコン騒ぎを封印しなくてはなるまい。その節目に開発が一段落して気分はとても爽快だ。開発環境の方は、新しいバージョンをダウンロードしてはみたものの、この手の新バージョンは用心しないといけないので、インストールはやめた。Web上での情報はない。不具合は、新しい環境(プロジェクト)を作り、いちからファイルを用意したら、全く問題なく、ファイル分割は成功した。レジスター変数の宣言(使わないという)をそれぞれのソースファイルにしなくてはならない。