(仮)釣りと電子工作 忍者ブログ
趣味の電子工作と釣りについて。電子工作は、おもに変換器作成。釣りはおもにトラウトの管釣り。
[61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

ここに置いておく。ベーシックマスターのソースと99.9%以上同じ。違うのは、変換用EEPROMマップとゴーストキー無効とLEDの反転くらい。

https://blog.cnobi.jp/v1/blog/user/0f56daaba6df0301724d7ee2124f5219/1252594391

最新版はこちら→http://m0115.zashiki.com/

これからキーボードエンコーダを作るなら、PIC18F4550で決まり。USBキーボードは仕様がメチャ複雑なんだけどフレームワークのおかげで誰でも簡単に作れる。USB経由でファーム更新も簡単だし。400円だし。

PS/2用にたくさん買ったPIC16F887、余っちゃったな。。。。。。




PR
基板はこんなかんじ。
CIMG0240.JPGCIMG0242.JPG








今回のドナーはこちら
CIMG0243.JPG








ネジ2本でここまで分解できます
CIMG0244.JPG








下に出ているのがキーボードのコネクタです。1本だけです。
CIMG0245.JPG









邪魔なマザーボードを撤去して、基板を置きました。電源を外してもいいのですが、あったほうが見た目がいいので残した。
CIMG0246.JPG








エンコーダとつないでっと
CIMG0247.JPG








箱を閉じて完成!ちょいケーブル短いかな?
CIMG0248.JPG








うーん、やっぱりケーブル短いなぁ。
CIMG0249.JPG








でも、打ち心地は、なかなかいい。キー配列も、申し分なし。今でも通用する。
FM-77が出たとき、FM-7よりキータッチが劣ると文句言われまくってたよなぁ。

1.基板作成

手順書をよーく読んでユニバーサル基板で作るとこんな感じになる。(裏面)

CIMG0224.JPG








まずはキーマトリックス解析用のファームを書き込んでおく。

2.ベーシックマスター解体

CIMG0226.JPG







ネジを外して蓋をあける。ケーブルを外さないと完全には開かない。
CIMG0227.JPG







CIMG0228.JPG







キーボードは3本のケーブルと1本のアース線で接続されているので、これを外す。

3.基板組み込み

CIMG0238.JPG








ベーシックマスターは内部で金属シールドされているので、そのまま組み込むとショートして大変なことになるので何かで包むこと。

筺体がでかいので、マザーボードを抜かなくてもどうにか入るだろう。

4.ケーブル引き出し

電源ケーブルのところから引っ張りだしてみた。

5.キーマトリックス解析

PCにつなぐとUSBキーボードとして認識される。メモ帳を開いてキーを打ち込むと、打ち込んだ文字列ではなくキースキャンコードが入力される。どのキーがどのスキャンコードになっているかをメモする必要があるのだが、サンプル自体(keyboard.zip)がこれ用なので実は調べなくても良かったりする。

6.ファームウェア変更

キーマトリックス解析用ファームから通常のファームに変更する。
ジャンパーを閉じて、HIDBootLoader.exeで書き換えて、ジャンパを開放。

7.試しうち

キー入力してみる。今度は押したキーと同じ文字が入力されるはず。キーアサインが気に入らなければ、手順書をよく読んで書き換えに挑戦すべし。

8.箱を閉じる

CIMG0239.JPG










完成!本体の上にモニターではなく本体を置いてみた。
LEDも完璧!

しかしこのキー配列、PC-8001系と似ていて、ものすごく打ちにくい。


1.改造点

初期状態では、PORTB4がファームウェア書き換えスイッチになっているが、
これだとキー押下して通電するとファームウェア書き換えモードになる可能性があり、まずい。

なので、機能的に貧弱でキースキャンに使いづらいPORTE3をファームウェア書き換えスイッチに変更した。


2.制約

このプログラムは、C18 student edition(期限切れ)ではビルドできない。
そこで、ビルドできるよう、無くてもどうにかなりそうなロジックを徹底的に削った。
リセットのロジックも削ったので、HIDBootLoader.exeからリセットすることはできない。
その他、いろいろ不具合はあるのかもしれないが、気にしないこと。


3.ビルド方法

hidbootldr.zipを解凍する。解凍先は、どこでもいい。
HID Bootloader - Firmware for PIC18 Non-J Devices LiteにあるHID Bootloader PIC18 Non J.mcpを起動。
ビルドすると、HID Bootloader PIC18 Non J.hexができる。


4.書き込み方法

PICKit2を使うのが一般的だが、秋月ライターでも書き込めるらしい。
とくに特殊なところはなし。
1.特殊キー(OPT)対応

それだけで独立しているキーについては、通常5V押下時0Vとなるような回路で対応。
ただ、回路というほどのものではなく、一方を4.7KΩでプルアップしておいて、一方をGNDと接続するだけ。
サンプルのBREAKキーの作りこみを見れば理解できると思う。

特殊キーの割り当ては、keyboard.cの下記を編集する。
左端がUSBのスキャンコードで、そこしか使っていないので、それ以外を書き換えても無意味。

// EEPROM Map:Scancode for Option key
#pragma romdata eedata2_scn=0xf00080
ROM unsigned char eedata2_values[0x10] =
{
0x35,0xff,0xff,0xff,0xff,0xff,0xff,0xff ,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
};
#pragma romdata


2.Fnキー対応

keyboard.c の下記を書き換える。USBのスキャンコードではなく、キーボードのスキャンコードをセットする。
#define FN_KEY         0x68    // HHK like Fn key: 0x68=Caps Lock

Fnキーの対応表は、下記を書き換える。
Fn押下前USBスキャンコード、押下後USBスキャンコードの組み合わせで登録する。
ちなみに下記は、HHKライクな動きをするサンプル。

// EEPROM Map:HHK like Fn key
#pragma romdata eedata3_scn=0xf00090
ROM unsigned char eedata3_values[0x40] =
{
0x2f,0x52,0x34,0x4f,0x33,0x50,0x38,0x51,0x0F,0x49,0x37,0x4e,0x0e,0x4a,0x36,0x4d,
0x0c,0x46,0x12,0x47,0x13,0x48,0x2a,0x4c,0x2b,0x39,0x30,0x49,0x1e,0x3a,0x1f,0x3b,
0x20,0x3c,0x21,0x3d,0x22,0x3e,0x23,0x3f,0x24,0x40,0x25,0x41,0x26,0x42,0x27,0x43,
0x2d,0x44,0x2e,0x45,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};
#pragma romdata


3.ゴーストキー対応

逆流防止ダイオードが埋め込まれていないキーボードの場合、ゴーストキーの対応をしておいたほうが誤入力が減る。
下記を1にすると有効になる。
#define GHOST_KEY_REDUCTION 1  // 0...Disabled   1...Enabled

ゴーストキーが発生しないのにゴーストキーリダクションが働くと困るので、キーがマトリックス上存在する・しないところを登録しておく。
それが下記。1になっているところはキーが存在する、0になっているところはキーが存在しない、を表す。

ただし、ビット順が表示の関係で実際のキーマトリックスと合わないように感じるので注意が必要。

// EEPROM Map:GHOST(Phantom) Key reduction
#pragma romdata eedata4_scn=0xf000D0
ROM unsigned char eedata4_values[0x10] =
{
0b00011111,0b00011111,
0b00011111,0b00011111,
0b00111111,0b00111111,
0b00111111,0b00111111,
0b00111111,0b00011111,
0b00011111,0b00011111,
0b00011111,0b00011111,
0b00011111,0b00011111
};
#pragma romdata

ちなみにビットの並び順は、すごくあたりまえなのだが
C7 C6 C5 C4 C3 C2 C1 C0 , C15 C14 C13 C12 C11 C10 C9 C8 となる。
C0 C1 C2 C3 C4 C5 C6 C7 , C8 C9 C10 C11 C12 C13 C14 C15 ではないので注意!!


4.LEDの吸い込み対応

FM-7のキーボードなど、LEDを吸い込みで制御する場合、下記のように変更する。

LATC=hid_report_out[0]&0b00000111;

LATC=(~hid_report_out[0])&0b00000111;



カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
リンク
最新TB
バーコード
ブログ内検索
カウンター
Powered by ニンジャブログ  Designed by 穂高
Copyright © (仮)釣りと電子工作 All Rights Reserved
忍者ブログ / [PR]