SVX日記
2005-06-09(Thu) あっけなくハロ完成
一昨日、昨日と、呑んだくれてゲームしてその結果を書くというアホなネタでつないでしまった。いくらなんでも3日連続でやったら、いーかげんアキレられそうなので、今日は少しでも工作を進めようと決意する。帰宅したら一番にPICライタをスタンバイし、冷蔵庫からウソビールを出す。拙者、キリのいいトコまで進捗せねば、メシも食わん所存でゴザる。
今日の作業は、例のハロのファームウェアのプログラミングである。ハードウェアは一応はデキあがっているが、リモコン信号のキャリア周波数(38kHz)をPICで作り出す仕様であるため、まだ動作させたコトはない。もしかするとハードウェア側に問題が潜んでいる可能性もあるというコトだ。かなり単純な回路ではあるが、電源および信号線をモジュラケーブルで20mも引き回しているトコロにソコハカトない不安を感じている。
以前に、PCからコントロールできる学習リモコンを作ったコトがあるので、CVSからそのソースを引っ張り出す。いま見ても、結構複雑で長いソースである。ハード、ファーム、PC側アプリと、3拍子揃わないと動かない機器だから、我ながら当時の技量でよく動かしたモノだ。そーゆー意味からすると今回のファームはモモンガである。よーするに……
MAIN BIT SENSOR, (GPIO) ; IR センサ確認 JP NZ, MAIN ; HIGH なら信号なし SET IRLED, (GPIO) ; IR LED 点灯 NOP NOP ; 38kHzになるよう時間待ち NOP RES IRLED, (GPIO) ; IR LED 消灯 NOP NOP ; 38kHzになるよう時間待ち NOP JP MAIN ; 繰り返す
……と、コレだけの内容である。PICは4MHzで動いているから1命令の実行時間は1us。38kHzの周期は26.3usであるから、13命令ごとに点滅が行われるようにNOPの数を調整してやればいい……と、あー、スマン……変態Z80ニーモニックについてはツッコミ無用でヨロシク。最後に置いてあるパッケージにはPICニーモニックのモノも入っているので、PICウィザードの諸君はそっちを見るベシ。
などと、妙ないーわけをしながら、スポーンとPICにファームを書き込む。そして「グリーンちゃん」側のICソケットにPICをセット、居間の床に転がしつつ「グリーンちゃん」背面からモジュラケーブルを伸ばす。そのまま居間を出て、物陰に「ブルーちゃん」を配置、やはり背面にモジュラケーブルを接続する。つまり、長〜いモジュラケーブルで接続された「グリーンちゃん」と「ブルーちゃん」の各々が、居間と居間の外に居るという状態である。
柏手をふたつ打ち、心静かに電源オン。へぇボタンが妖しい光を放ち始める。間髪おかず「ブルーちゃん」にリモコン光線を照射ッ!! 居間のテレビの電源が……点いたッ!! なんと、一発で動いてしまったぞ。わっほーい。ちゅーコトは、モジュラケーブルでリモコン信号を20m引き回す程度は何でもないのだな。うほうほ。
ただ、気にかかるコトがひとつ。間隔を開けずに電源スイッチをオンオフすると、PICが暴走してしまうのか、まったく信号を中継動作しなくなる症状が発生するのだ。むぅ。ほんじゃ、ココは一発、ウォッチドッグタイマに御降臨頂くコトにしよう。先日、初めて使ったが、なかなかうまく動作してくれたコトだしな。ホイっと、追加。
しかし、コレはひそかなハマりの序曲であった。信号の中継動作がモノスゴく不安定になってしまったのである。2回に1回程度しか動作しないのだ。なんじゃこら。番犬(ウォッチドッグ)が狂犬病にかかってしまったのか!? 動作のモニタ用に外付けLEDを回路に付加し、タイムアウトの発生を視覚的に確認してみたが、特に番犬が吠えている様子はない。なんなんじゃ!?
それじゃ、赤外線LEDの点滅状況を直接確認してやろうじゃないか。実は、赤外線LEDの出す赤外線光は目に見えない光ではあるが、デジカメなどのCCDを通せば光っている様子を確認できるのだ。デジカメスキャニング、レディ、スタートッ!! ……げッ!? 勝手に光りまくっとるぞ!? リモコンを押してもいないのに、定期的にピカピカしとる……と、この症状は……この症状は……この症状はッ!! PCの赤外線通信ポートだッ!!
今日はシラフなのに、それに気づくまで相当かかってしまった。前作の開発の時もコレで相当ハマったのに……記憶力の悪いヤツじゃ。つーわけで、ウォッチドッグタイマは無関係であった。悪さをしていたのはPCのIRポートからのsynパケット(?)である。類似のアイテムを作る場合、PCの位置や向きには注意すべし……というか、それを機にデバイスを停止しておこう。フツー、使わないっしょ。バッテリーのムダである。
ただ、間隔を開けずに電源スイッチをオンオフすると動作しないという問題は依然残っている。PICが暴走すると番犬もいっしょに暴走してしまうらしいのだ。また、ケーブルチューナの信号が通らない。コイツはキャリアの周波数に敏感なのだろうか? ま、課題は残ったにせよ、今日はまずまずの進捗であった。とりあえずパッケージを置いておこう。