H8tiny(3664)でギアポジション(シフトポジション)インジケータを

って、元々は実用性の無いものを作ろうとしているのに「実用版」??



・H8 tiny(3664)を買いました。
・秋月ではEEP内蔵と無しの2タイプが販売されています。
・今回は発注時に「EEP-ROM無し」が欠品、内蔵タイプを購入。
http://akizukidenshi.com/catalog/items2.php?c=h8kit&s=popularity&p=1&r=1&page= - K-00467
・本体1680円+アイオーボード700円。資金が無いので「開発ソフト付きフルセット」は買えませんでした。
・Cのコンパイラ、アセンブラ、リンカなどは以前「トランジスタ技術」に付属していたものです。
 ヘッダはルネサスのHPからダウンロードしました。
・さらにインターネットを検索して情報を仕入れました。



AKI−H8/3664N タイニーマイコンキット
消しゴム付(モジュール単品) [HD64N3664FP]



・機能は...
・速度と回転数を入力。
・7セグメントLEDでギアポジションを表示。
・ポジションを表示するための情報は、実走行して設定・記憶させる。
・といったところです、前回の機能や仕様と特に変わりません。「走行してないとダメ」なのもそのまま。



・ソフトを作るには動作確認が出来ないといけませんから、ハード側も作っておきます。



・ブレッドボード上にLED・ドライブ用トランジスタアレイ・CPUの載ったIOボードをセットします。
・適当に配線して、LEDの点灯テスト。



・以前H8 3048で試作しましたが、CPUを3664にしたことで組み方を変えなければなりません。
・タイマー機能(回転数や速度の計測機能)

CPU チャンネル数 対応
3048 4 回転数と速度、それぞれに1チャンネルずつ割り当て。特に何も考えてません。
3664 1 タイマーWのAとBを使用、多少考える必要があるかもしれません。

システムクロックの1/8分周でフリーランニングカウンタを走らせておき
AとBそれぞれの立ち上がりでキャプチャします。
せっかくなので、CとDをバッファ動作にして使います。
・EEP-ROM(ポジションを表示するための情報を記憶)
3048では内蔵してなかったので、3線式のEEP-ROMを繋ぎました。
今回の3664は「消しゴム(EEP-ROM)」内蔵なのでこれを使います。
外付け部品の点数も削減できて、いいですね。



・が、プログラムを組んでいくといろいろと判ってきます...。
・タイマー機能
 頭の中でフローを考えて、さあコーディングというときに気づきました。
 「タイマーWの割り込みベクタが一個しかない。」
 タイマーのオーバーフローもキャプチャABCDすべて一つの割込みルーチンに飛ぶわけです。
 あとは割込みルーチンの中で割込みの要因フラグを見て、処理をしなければなりません。
 値段が安いのですから、仕方ありません。
 しかし、オーバーフローとキャプチャが非常に近いタイミングで発生する場合もあるのでしょうか。
 そうであるとすれば、オーバーフローとキャプチャの発生どちらが先に起こったか判定しなければなりません。
 とりあえずキャプチャ時のGRA・GRBの値が0xffffに近ければ
 オーバーフロー以前にキャプチャが発生したということにしておきます。
・EEP-ROM
 内蔵のEEP-ROMですが、CPUに内蔵されているI2Cを使ってアクセスします。
 が、3664のドキュメントを読んでやってみるのですがなかなかうまくいきません。
 途中であちこちのHPを見て、3664に搭載されているI2Cの評判の悪さから
 「他のIOポートからSDLとSDAを叩いて読み書きしてみようか」とも思いました。
 が、「EEP-ROMに対してアクセスするの(つまり簡単な用途)は問題ない」
 という記述を見てそのまま内蔵I2Cで...。
 なんとか、まがりなりにも読み書きができるというところまで来たところで
 ルネサスのアプリケーションノートに
 そのものズバリ「EEP-ROMの読み書き」サンプルがあることに気づきました。(涙)
 (ただ、私が作ったものは謎のWAITを入れている関係からか「びっくりするほど遅い」のです。
 これはルネサスのサンプルを見て後日作り直しましょう。)
 今回のプログラム製作、現在のところはその時間の80〜90%はこのEEP-ROMアクセスに費やしました。
 大変楽しませてくれる機能と言えます。(え?こんな簡単な使い方で悩むのは私だけですか、そうですか。)
・IOポート
 LEDの点灯には元々トランジスタアレーを使おうと思っていたので問題ないですが
 電流の取れるのはポート8のみ。
 しかし、ポート8はインプットキャプチャに使いますから、ふさがってしまいます。
 場合によっては困る人も出てくるでしょう。
 3048なんかに比べるとポート数はグッと少ないです、ま、どっちみちほんの一部しか使いませんが。



・テスト
 テスト用の発振器が555で作ったものが一個しかないので、それは速度側に使います。(写真左下)
 回転数はコネクタに宙ぶらりんのリード線をつけて、家庭用のAC100Vの誘導を入力します。
 (あまりにいいかげんですが、まあ動作確認ということで。)





・箱に入れてみます
 黒いプラスチックのケースに、LEDの顔が出るように穴をあけます。
 基板を中に入る大きさに切って、仮にネジ止めして位置関係を確認。



・基板上に回路を組みます
 汎用基板に部品を適当に配置、配線していきます。よく考えずに配線していくので汚いです。
 LEDへの配線、電源と回転数などの入力、設定時のスイッチへの配線はコネクタにしておきます。
 (下の画像では右のほうに集まってます。)



(適当な配置、そして「何とかの一つ覚え」のLM358が載ってます。)
主な部品は

レギュレータIC:7809
OPアンプ:LM358
トランジスタアレイ:TD62083AP
LEDに付く電流制限抵抗はLEDと
基板の間に隠れるように取付。


裏(汚い)

・3048でも思ったのですが、こんな簡単な配線でも汎用基板を使うと結構ごちゃごちゃします。
・できれば、感光基板で専用の基板を起こせばより小さくできるでしょう。
・また、ピンがCPUボードの下に出ていますが長さ(高さ)が結構あります。
 このため、セットの高さが結構高くなってしまいます。
 ボードを受けるソケットをロープロファイルタイプにして、ピンを短くするのがいいのではないかと思います。
 今回買ったCPUボードかIOボードには(どっちについていたか失念)ロープロファイルがついていましたが
 何も考えずにIOボードにつけてしまいました。
 秋月電子のHPを見ても「ロープロファイルの2列」は無いようです。1列14ピンはありますが...。
・配線して確認
 テスト発振器で確認します。



誤配線はこの時点で修正しました。



・箱に収めます
 LEDの基板はサラネジで留めて、表面をフラットに。
 その上からスモークのアクリル(?)でボロ隠し兼見易さ向上を狙います。
 (画像は仮にアクリル板を立てています)





・とりあえずここまで
 発振器でのテスト(結局もう1個発振器を作りました)をもう少しして、実走試験をしたいところですね。
 回路図などは(やってみようという人は絶対いないと思いますが)うまくいったらUPということで。



メインページへ