SVX日記
2005-01-13(Thu) PICマイコン根性の動作
昨日に引き続いてYRPに出勤。なんと午前中に早くも予定の仕事がコナれてしまった。午後はウニャウニャ気分で来週分の仕事に着手。定時にはウルトラマキシムハイパーグレートビッグストロングターボダッシュスペシャルを発動。瞬時にホテルYRPにチェックインだ。
あまりに早かったため、晩飯を食おうと予定していた光龍というラーメン屋が開いていない。開店早々に行くのも五時半族(豊田高専語)っぽくてカッコ悪いので、18時頃に行ってミニギョーザセットを食った。まぁうまい。
昨日はダラダラと過ごしてしまい、232メモリの開発がサッパリ進まなかったので、今日はミッチリと作業を行うべく机の上をセットアップする。ホテルYRPは部屋の照明もシッカリ明るく、デスクには電気スタンドも完備で、コンセントも多く、超高速ネット接続だからして、まことにデスクワークがハカドるコトこの上ない環境である。いえーい。
しかしイカに環境が素晴らしくてもハマるときはハマるのがこの世のサダメである。現在はPIC単独で、外部EEPROMに対して正しくI2Cプロトコルを発行する様子をオシロで確認するという目的で作業を行っているのだが、これがサッパリ動作しない。シミュレータではシッカリと動くことを確認しているのに、現実のPICは非常に珍妙な波形を繰り出してくるのである。
つーか、ナニよコレ。3.0Vロジックなのに、なぜか1.5Vで安定する期間がある。波形もナマりまくりだ。別にアナログロジックじゃないんだけどなぁ。あまりにも珍妙な動きなので、コード的にはスタートコンディションを発行するダケという単純なレベルにまで落としてオシロを適用しているのだが、クロックだけならチャンと波形が出るのに、データとのコンビネーションにするとLOWにした直後にポョンと1.5Vまでハネ返ってしまうのだ。うがー、ワケわからん。
原因がわからないので、直接GPIOのビットをSET(bsf),RES(bcf)で操作するのをヤメLD(movwf)でGPIOに書き込むようにしてみたり、NOPで操作間隔を長めに調節してみたり、毎回TRISをセットしてみたりしたのだがサッパリ効果なし。何度もコードを書き換えてはオシロでチェックするのだが、PICライタとosziFOXはシリアルポートも電源アダプタも共用であるため、ケーブルの繋ぎ替えやアプリの上げ下げが超面倒。そのまま6時間ほどベッタリとハマり続けでいい加減イヤになってきた。
仕方ないので今日はアキらめて寝るかという頃合に、なにげにオシロを電圧計モードにしてPICの電源ラインをチェックしてみた……2.7V……低い……よな。電源には単3電池x2を利用しているのだが、まだ2.9Vは確保されている……っと×◎は△に〆※っ○ッ!!
恐ろしいことにPICのVddがオープンだったのである。なんでッ!? Vddがオープンでナゼ動くッ!? Vssはグランドに落ちている。すると1kΩプルアップしてあるポートから流れ込んだ電流で動作していたというコト? PICにつながっている正圧はソコしかないのでそうとしか考えられない。そりゃ動作が不安定なワケだ……。