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

マイコン独立大作戦
CRT/VGAIF+KEYIF+SDCARDIFボードの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
WindowsパソコンにUSB接続して使う現行方式はそれなりに便利ではありますが、ときとしてWindows
のしがらみから開放されて、小さいながらも独立した一個のパソコンとして機能したいと思うこともあります。
昔はそれが普通のことだったのですが、安価なCRTディスプレイが生産中止となって久しい今日ではそれ
は叶わぬことと諦めていたのですが…。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[総合第13回]


●キーボード入力で誤動作?

過去記事を確認してみましたらキーボードとSDカードのインターフェースについては、途中で終ってしまって、まともな回路図もプリント基板もお見せしていませんでした。
あ、いえ、プリント基板については[総合第1回]でお見せしておりました。
なにしろ能力を超えた多方面作戦を展開してしまったものですから、何をどこまで書いたのかさっぱり記憶がありませぬ。
説明が中途半端で終ってしまったころは蛇の目基板に手配線の基板と、簡単なテストプログラムを披露しただけだったのですが、写真にありますように試作プリント基板はもうかなり前にできております。
またその基板とCRT/VGA基板を使ってスクリーンエディタプログラムも作成済みです。
スクリーンエディタについては[総合第2回]で動作中の画面をお見せしました。
もうあと少しというところまできていたのですが、ここにきて予期せぬ伏兵の攻撃にあってしまい、停滞を余儀なくされてしまいました。

そんなことで大丈夫か?
大丈夫であります。
当記事は私自身の備忘録を兼ねておりますので、書かなくてもよいことも書いてしまいます。
この歳になってなお未熟でお恥ずかしい限りなのですが、この備忘録が意外と役に立つのです。
そんなわけで書かなくてもよいことを恥をさらして書いておりますが、そうは言いましても泥沼で先が見えない状態の真っ最中には、それについて書くゆとりなど全くありません。
もう目が血走っておりますです。
したがってここに書くころには一応の解決をみた事柄につきまして、忘れないうちに書く、というスタンスになります。
ですので、大丈夫と申し上げました。
とりあえず出てきた問題点は一応クリアして、いよいよ最後の仕上げにかかっておりますので、ご安心ください。

前置きが長くなってしまいました。
今回のトラブルもまだつい先日のことなのですが、いい加減にしておいたキーボードのプログラムもそろそろ最後の仕上げということで、デバッグをしていたときのことです。
ちょいと手元が暗いものですから、卓上の蛍光灯を点けましたところ、ややや、キーボードには手をふれておりませんのに、突然画面に_____という感じで’_’が連続して表示されるではありませんか。
いろいろ調べていく過程でわかったのですが、表示されていたのはアンダーバーではなくて、キャラクタコード80Hでした。
そんなコードはキーボードにはありません。

最初はPICを疑いました。
蛍光灯を点けた途端ですから、おそらくノイズの影響だろうとは思いました。
キーボードからはスキャンコードがシリアルで送られてきます。
ソフトが面倒なので、多分大丈夫だろうと思って、パリティチェックもしていませんでしたし、約束から外れた信号が入力される可能性についても考慮していませんでした。
しかしこういうことがおきたということになりますと、そこのところをいい加減にしておくわけにはいきません。
それてPICプログラムを見直して、パリティチェックもしっかりするようにし、また辻褄の合わないデータがきた場合についても再度検討してみました。
当初はパルス待ちのループにはCLRWDT命令を入れてウォッチドッグが勝手に働かないようにしていたのですが、これはかえってまずいと気が付きました。
辻褄が合わないデータのときはウォッチドッグが利いてリセットがかかったほうが好都合です。

で、そのようにしたのですが、全く効果がありません。
おかしいのですよねえ。
ウォッチドッグが利いていないようなのです。
それでDatasheetを読み直したり、あれこれ動作確認のためにテストプログラムを作って試してみたりしたのですが、どうにもよくわかりません。
わかったことは蛍光灯のON/OFFのタイミングでPICが突然死んでしまったかのごとく制御不能になってしまうらしいということです。

PICが死んでしまう?
いや、お休みになってしまう?
む?
ひょっとしたら。

ここに至ってはじめてPIC周りの回路をオシロで見てみたのであります。
そんなことはもっと早くやるべきでありました。
なんとも愚かでありました。

こちらがSDカード+キーボードインターフェース基板の回路図です。

で。
オシロで見てはじめて状況がわかりました。
PICにリセットがかかっておりました。
それじゃあまともに動作するはずがありません。
突然リセットがかかって出力がハイインピーダンスになってしまったものですから、たまたま80Hが読み込まれたのでした。
その状態で74HC245(IC2)を指でさわるとばらばらといいかげんな文字が入力されました。
蛍光灯のON/OFFのタイミングで突然PICにリセットがかかり、しかもそれはリセットパルスなんてものじゃなくて、それ以後はずっとPICのMCLR端子がLになりっぱなしだったのでありました。
つまりそれ以後はずっとリセット状態のままになってしまっていたのでした。

むむむ。
PICを疑ったのは誤りでありました。
誤認逮捕であります。
全くぬれぎぬもいいところで見込み捜査の誤りであります。
むむ。
犯人はお前だったのか。
どうやら74HC175(IC4)が突然クリアされてしまうらしいことがやっとわかりました。

確かに。
ケーブルも結構長いですし、ノイズを拾いやすいこともわかります。
それでコンデンサを追加したりプルアップ抵抗を入れてみたりしたのてだすが、効果なしです。
ケーブルを短くすると誤動作の発生率は減るのですが、それでもやっぱりときどきは74HC175がクリアされてしまいます。
74HC175のRES端子周りもあれこれ工夫してみたりもしたのですが、駄目でした。

そりゃあ、もっと根本的にノイズ対策を考えればなんとかなるかもしれません。
しかし。
たまたまかなり年代物の卓上蛍光灯を近くでON/OFFしたことがノイズ源になったのですけれど、それについては対策できたとしても、ほかの未知のノイズにも有効とは限りません。
うむむ。
そんなところにいつまでもこだわっていないで、もっと簡単な解決策を取るのが賢明なのではありませぬか。
天の声であります。
はい。
天の声には素直に従いましょう。

要するに。
ノイズの影響が考えられる用途には、リセット付きのラッチなど使うべきではないということであります。
ええ。
リセット端子がなければ、勝手にリセットなどされない道理であります。
無い袖は振れぬ。
いや、これはちょっと違うか。

ということで、変更後の回路図です。

74HC175の代わりに74HC373を使いました。
74HC373のG入力に74HC05を使っていますが、74HC04の空き端子が残っていなかったので、空いていた74HC05で代用しただけで、それ以外の意味はありません。

これで、やっと問題解決です。
解決はしましたけれど、またしても設計変更です。
ほんと、やれやれです。
とりあえず試作基板のHC175を外してHC373に取り替えました。


基板裏はこんな状態です。


全くもってしんどいことでありますけれど。
しかし、前回も書いたことですが。
いやあ。
ほんと、本番の基板発注前にわかってよかったです。

CRT/VGAIF+KEYIF+SDCARDIFボードの製作[総合第13回]
2017.2.20upload

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