標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第187回]

●もうあと考えられる可能性は…?

うーん。困った…。
あと、考えられる可能性ったって…。
ひょっとしたら、232Cの波形がおかしいのかも…。まさか、ねえ。
でも、念のため、確認してみました。

232Cの信号ラインと、それをMAX232CでTTLレベルに変換したあとの波形の写真です。



上側(CH1)はRS232C信号のラインです。V目盛りは0.5Vですが、プローブが1:10なので、1目盛りが5Vになります。
下側(CH2)はMAX232Cの出力(TTLレベルに変換後の信号)波形です。こちらは1目盛りが2Vです。
うーん。
232C信号がなまっているわけでもありませんねぇ。
こいつも、シロか…。

さて、どうしましょう…。
うむむ。
捜査の基本は、現場百遍。
事件は、現場でおきているんだぁぁ。

そういうことですねぇ。
もう一度、現場にもどって、最初から検証してみましょう。

まずは、ことの発端から…。
順をおって、整理してみると。

1)ハイパーターミナルを使ってRS232Cで、当社のBASICボードに送信した。結果は異常なく受信できた。
2)全く同様にして、「つくるCPU」試作基板に送信したところ、受信エラーが発生した。
3)オーバーランエラーは考えられない。
4)すると、フレーミングエラーしか考えられないはずだが、PICのクロックを測定したところ、エラーになる程の誤差はなかった。
5)RS232C信号にも立ち上がり、立ち下りの遅れは認められなかった。

そんなばかな…。
一見して、ありえないことがおきている、と思われるときには、どこかにウソがあります。
目撃者はいつも本当のことを言うとは限りません。
ウソをつくつもりはないけれど、誤認ということがあります。思い違いです。

うーん。
よくよく考えてみると、エラーの現場ったって、エラーLEDの表示を見ただけで、そのときの信号波形をみたわけではありませんでした。
そこのところを、しっかりと押さえるべきでは…。

●もう一度、エラーを再現させて調べてみよう

そう。現場検証です。実況検分です。
確か、ストップビット長を2ビットにしたら、エラーが出なくなったのでした。
そこで、ハイパーターミナルの設定を、もう一度、もとの1ビットに戻してみました。
そして、オシロをセットして、送信してみると…。

あれ?エラーが出ずに、正常に受信し終わってしまった…。
直ってしまった。
よかった。…では、ない。
困る。それでは、現場検証ができない。

エラーが出てくれないことには、この先、追及することができません。
ハイパーターミナルを閉じたり、開いたり、設定をあれこれいじくったり…。
そうしたら。
おお。奇跡か、またもや、待望のエラーが、ついに発生しました!

送信したのは[第182回]と同じ、下のプログラムです。
エラーの発生個所も、先回と同じです。
メモリアドレスを示すHLレジスタが、010Eを表示したところで、エラーLEDが点灯して、そこで停止しました。



そのときの様子も写真に撮りました。



3列あるLEDの上の列の左から、Hレジスタ、Lレジスタです。
Hレジスタが01、Lレジスタが0Eを表示しています。
黒いミノムシクリップのすぐ右で点灯しているのが、エラーLEDです。

今度は、しっかりと、証拠写真を撮りました。



上側(CH1)は、PICのPORTBのbit3からのエラー出力です。
下側(CH2)は、PICのRX端子への入力信号です。

あれえ?
フレーミングエラーのはずなのに、ストップビット、だと思う(違うかもしれないが)、Hパルスのところでエラーが発生しているぅ?
フレーミングエラーならば、ストップビット位置でLレベルを検出して、エラーになるはずなのに…。
うーん。わからん…。
この写真のどこかに、事件の謎を解くカギが隠されているはずなのだが…。

今回は、目撃証言にウソが含まれていたらしいのですねぇ。
いや。決してウソを言うつもりはなかったのですが…。思い込みです。
こういう推理小説は、謎解きまで読むと、腹が立って、思わず本を投げつけたくなってしまいますねぇ。
ずるいよ、隠しておくなんて。そんなの、わかるわけないじゃないのさ。

いや。しかし。推理力をしっかり働かせたら、わかるかも…。
肝心のカギは隠されていて、説明されていません(推理することは可能です)。しかもウソをついています(ウソじゃないってば。忘れていただけなのぉ。それに、うっかりしていて、誤認しただけなのぉ。先入観がハゲしい、困った性格なのぉ)。
少し難しいかもしれませんが…。

さきほどの「証言」1)〜5)のどこかにウソが含まれていることと、送信したプログラムのリスト(そのどこでエラーが発生したのか)、そしてそのときの証拠写真(上のオシロの波形の写真)をもとにして、よーく分析してみると、何か見えてくるものがありませんか?

聡明なる読者諸君ならば、この現場でどんなことが起きたのか、すでにおわかりのことと思います(恥ずかしながら、この私めは、完全にうっかりしていて、全く見えていませんでした。もう、ボケボケですぅ)。
次回、衝撃の解決篇。乞う、ご期待!
2009.3.18upload

前へ
次へ
ホームページトップへ戻る