So-net無料ブログ作成

S88 基板 フル装備(14ポート)の検討 その3 [S88]

 微妙に題名を16ポートから14ポートに変更しました。
 S88基板(6ポート)ですが、基板の在庫がありませんが、購入したいという方がおられましたので、Elecrowに注文しました。何も問題なければおそらく再来週の始めあたりに届くかと思います。
 あとは、昨年頼んだ東京駅100周年スイカがついに届きました。確か当日の朝6時前ぐらいに起きて、どのくらい並んでいるかTwitterの検索をしたら、悲鳴みたいなツイッターがいっぱいで絶対買えなさそうだと思ったのと、その日はとても寒かったので、買いに行くのをやめた記憶があります。スイカ見て思ったのが2014年って何年前だ?
re_DSC00469.jpg
 S88ですが、前回Lチカまで行いました。
 そして、今回、次にAnalogReadを試しました。参考にしたのは、
可変抵抗のツマミを回してLEDの明るさを可変します(2/2)
のアナログを読む部分(unsigned int adconv())あたりです。
 入出力のビットで16F1939用に適当に直して、可変抵抗で5Vを分圧したものをRB3(AN9)から入力して、ある値以上でLEDが点くよう、RC3に出力するソースを書いて実験したら、それっぽく動いていました。(シリアルをつないでいないので、実際の値アナログ値は見ていません)。ソースはこちら
re_DSC00466.jpg
 次は、S88 Load部分とS88 CLK部分をもらってDataIn、DataOutするS88の転送部分の製作ですが、割り込みが必要です。PICについて説明したページや、割り込みの説明をいくつかななめ読みして、以下のページを参考に状態遷移割り込みをRB6,RB7で利用することにしました。
 「PS2キーボードを接続してみます」
 PS2キーボードもS88もクロックをもらって、それに合わせてデータを返すタイプなので、まあ、原理は似たようなものです(多分)。Yaasan様がやっているプレステの電車でGoコントローラもきっとシリアル転送なんだろうなあと思いながら、中を確認したことはありません。
 S88の信号の説明はDigitalNahn様のページにありますが、ドイツ語なので、本文はよくわかりません。まあ、図だけ見ると英語に見えるので、PSがLoadでClkがCLKなんだろうぐらいな感じです。
 今回はPICのRB6にCLK、RB7にLoadをつなげて、状態変化割り込みを使用して、信号をDSmainR4に送信してみました。なぜDSmainR5じゃないのかと言ったら、R4は6pinのS88端子が出ていて、デバッグに使いやすいからです。理由はそれだけです。
 re_DSC00467.jpg
 すると、動作が変でした。具体的には、1~14に出てこなければいけないS88の各信号が2~15に出ています。いろいろとあてずっぽうの対策を繰り返した後に、ATMega328Pの時は16MHzのクロックをつないでいたのに、今回は8MHzにしているのを思い出して(クロックは低いほうが消費電力が低いようですし)、16MHzにしたらうまくいきました。S88基板の中で、PS信号の立ち上がりが来たら内部バッファクリアと転送データのセットを行うのですが、その後速いものでは20us後に最初のClkの立ち上がりが来ますが、どうやらバッファクリア、セットが間に合っていないようで、2クロック目から転送していたため、ずれたようです。
 バッファクリアと転送セットはもっと速くやる方法もありますが、現在は、見やすい方法で書いているため遅いです。コマンドステーションによってはそのうちここが問題になるかもです。
 あとは、LED点灯→アナログ値読み込み→LED消灯→アナログ値読み込み→差分計算→バッファに入れておく、という一連の動きが必要です。
 こちらは、S88(6ポート)版ではLEDのドライブを1信号だけ使用して、トランジスタをスイッチに使用して6ポート同時に光らせていました。しかし、今回は消費電力の削減と部品点数の削減を目指しているので、1個ずつ順次点灯させながら、アナログ値を読むのを14ポート分繰り返すという、以前よりもわかりやすい方法に変えました。LEDのドライブをPICに任せているので、フォトデテクターのLED光が弱くなっていたらやだなあとは思っています。
 で、なんだかんだやって、とりあえず1ポートだけはなんとなく動くことを確認できたのですが、1ポートの状態ですでに以下の写真のようになっており、14ポートをブレッドボードで作る気になりませんでした。
re_DSC00468.jpg
 まだ、確認していない項目が、
・複数ポートでの確認
・電車の検出
・S88のデイジーチェーン時の動き(Data In側)
と盛り沢山ですが、一度基板を作って試してみようと思いました。
PS→Clk間の時間によってはビットもずれそうですし。
で、とりあえず引いた回路図です。
PCDetector14_k0.PNG
 今回は奮発して、10cm*10cmの基板で作ることにして、以下がアートワークです。毎度のことながらここの線を引っ張るのがパズルのように楽しくって気づいたら夜中の2時半でした。
基板.png
 で、S88基板を頼むついでに頼みました。
 なお、今回のソースはこちらです。
 基本的な原理や機能はATMEGA328Pで作るのと一緒なのですが、PICのソースなので、入出力関係の宣言が少々多くなっていて、見にくいかと思います。
 あと、あやのすけ様のコメントでPICの書き込みの件がありましたが、いろいろなページを見るとPicKit3での書き込みはVPPには12V?ぐらいがかかるようです。ATMega328Pのように書き込むと、周辺回路(具体的にはData_Inにつながっている部分)が壊れそうです。
コメント(3)  トラックバック(0) 

コメント 3

Y1213

始めまして得、いつもブログ楽しみに拝見しています。S88興味があるのですがDS4、DS5(組立中)で使えればと考えていますがDSのコマンドステーションと別電源化は可能でしょうか。5Vのレギュレーターの発熱が問題です。別に5VのACアダプタ等から給電すれば良いと思うのですがいかがでしょうか。小学校等での展示運転等で考えております。ご検討頂ければ幸いです。
by Y1213 (2016-02-21 05:13) 

Yaasan

もうちょっとがんばって、100x80にして、以下のアクリルケースに入るようにしてみてはどうでしょうか。DSmainR4と同じケースです。
http://www.seeedstudio.com/depot/Sick-Of-Beige-Basic-Case-v1-DP10080-p-1325.html
by Yaasan (2016-02-21 13:26) 

fujigaya2

Y1213様
Yaasan様

コメントありがとうございます。
・別電源化については、Yaasan様からやり方があると聞いたことがあります。電源のどっかにダイオード入れるんでしたっけ。
 なお、現状の改造で熱くならないようにするには、(保証はありませんが)DSmainの5Vレギュレータを高効率タイプの
http://akizukidenshi.com/catalog/g/gM-06350/
などに変更すると発熱は抑えられます。
・100mm*80mmにするのについては、多分横幅は縮められそうです。
 現状のもので一度試作して動作チェックで問題なかったら、別電源化(ACアダプタ追加)と合わせて検討したいと思います。
by fujigaya2 (2016-02-21 23:29) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0