GMC-4 Loader(USB) v1.01
少々出遅れた感もありますが、GMC-4用のプログラムローダーです。
使用しているマイコンは、AtmelのAVRマイコンATTiny2313です。フラッシュROMが2Kバイト、RAMが128バイトと小容量ですが、今回の工作には十分ですしパッケージも20PIN-DIPと自作には使いやすいサイズです。
パソコンとの接続は秋月のAE-UM232Rを使っています。USBで接続して、ハイパータームなどのターミナルエミュレータから仮想COMポートを通してLoaderにデータを送信します。このモジュールが一番高く秋月で950円です。USB-シリアル変換ケーブルを持っている場合、ここをRS232Cレベルコンバータに置き換えると、多少安くできるでしょう。その場合でもファームウェアの修正は要りません。
キーマトリックスの操作は、74HC4051×2で行っています。これは、8チャンネルのアナログマルチプレクサで、入力(A,B,Cの3ビット)をセットしてX0~X7のいずれかのピンを選択、有効(IH)をLoにすると選択されたピンとXピンが繋がるというものです。それを行選択と列選択に1つずつ使いXピン同士を接続することで、目的のキーを押した事と同様の電気的経路を作り出しています。
ファームウェアの作成には AVR-Studio 4.15 ,WinAVR-20081205 を使いました。下にソースを掲載しておきます。ターミナルエミュレータの設定は下記のとおりです。
19200bps, データ8ビット, ノンパリティ, 1ストップビット, ハードウェアフローコントロール
ATTiny2313はRAMが小さくバッファがあまり大きくできません。ところがパソコンからの転送速度に比べて、GMC-4の操作速度は速くできないので、どうしてもフロー制御は必要です。エコーバック(マイコンからPC)はそれほど負荷も掛からないと思うので、フロー制御していません。
接続する手順ですが、
- GMC-4の電源を入れる前にLoaderとGMC-4を接続
- Loaderとパソコンを接続(USBからLoaderに電源が供給され、仮想COMポートが有効になる)
- パソコンでターミナルエミュレータを立ち上げる
- Loaderのリセットスイッチを押す(バージョン情報が表示される)
- GMC-4の電源を入れる
の様にしてください。GMC-4の電源を先に入れLoaderが後からパソコンに接続されると、直後GMC-4がちょっと変な挙動をします(^^;
接続ができたら、ターミナルエミュレータでキーボードからキーを打つとそれに応じたキーがLoaderからGMC-4に送られます。対応するキーは以下の通り。
パソコン → GMC-4
- 0~9 → 0~9
- A~F → A~F
- a~f → A~F
- S,s,:(半角のコロン) → ADR SET
- I,i,16進キー直後の スペースor改行(0x0d) → INCR
- G,g,!(半角のエクスクラメーション) → RUN
- R,r,/(半角のスラッシュ) → RESET
これによって、ターミナルエミュレータで、所定のダンプリストを転送すれば自動的にGMC-4のプログラミングができます。
ダンプリスト例(大人の科学マガジン本誌の電子サイコロ)
00:A 1 3 1 3 B 1 D
08:7 F 0 E A 1 0 F
10:0 2 F 0 E
アドレス2桁の直後にコロン、その後プログラムコードとスペースを交互に書き、行末はスペースを入れずに改行してもOKです。これをテキストファイルに書いておいて、ターミナルエミュレータから転送してください。またテキストファイルの末尾に /1! を書いておくと、プログラミング直後に自動でプログラムが実行されます。
回路図:「gmc4_loaderusb_v1.01.CE3」をダウンロード
ソースコード:「gmc4_loader_farm_v2.01.zip」をダウンロード
もし、これを見て作られた方がいらっしゃったら、感想を書き込んでください。よろしくお願いします。
« GMC-4 小改造 キーマトリックス取り出し | トップページ | GMC-4 LCDに文字出力 »
「GMC-4」カテゴリの記事
- GMC-4 ちょっと応用(脱線?)編 その2(2009.08.17)
- GMC-4 ちょっと応用(脱線?)編 その1(2009.08.17)
- GMC-4 MSXからプログラムロード(2009.08.11)
- GMC-4 LCDに文字出力(2009.08.10)
- GMC-4 Loader(USB) v1.01(2009.08.09)
コメント
この記事へのコメントは終了しました。
トラックバック
この記事へのトラックバック一覧です: GMC-4 Loader(USB) v1.01:
» 学研のGMC-4改造記を振り返る [エアーバリアブル ブログ]
パソコンから手軽に使えるおかげで、打ち間違えとか、打ち込みにくさが払拭され、大変快適な使い心地である。お陰で本のサンプルを一通り動作させてたり、GMC-4本来のプログラムの [続きを読む]
はじめまして、川村 範道と申します。
回路図を参考に作成してみました。
http://www.youtube.com/watch?v=lagnC5CpsUE
↓こっちはリレーで作成してみたものです。
http://www.youtube.com/watch?v=fQn2M4dk8Bs
私の作ったロードプログラムのほうが低機能なのですが、
同じデータが使えるものと思います。
以下、拙作のnibbled beatmania 1.1です。良かったら試してみてください。
rai2i5i1i3iai0i4iai7iei2ibifidififi1ifiai0i5i3ibi1ifi1i9ifi0i2iei1i0ifi4i8idi0ifi4i8iai1i4iai0iei2i5i3i5iei4iai1i6icififi1i3iai0i5i3i5ieibifi1i3i8i1ieicifi0iaifi0i0i3i3i7i7i8i8i7i6i6i5i5i4i4i3ir1g
投稿: 川村 範道 | 2009年9月15日 (火) 01時47分
Hi,
Could you explain how our code in AVR, which send the key codes to GMC-4, works?
As far as I understand, in GMC-4 the lines P2.0, P2.1, P2.2, P2.3 are output lines which are used to select a row of buttons on the keypad. The lines P1.0, P1.1, P1.2, P1.3 and P1.4 are input lines which used to read a key code from the selected row. So, if you simulate the keypad, you have to do it another way around. Your AVR code should check which row is selected (a read operation) and then based on the row it has to output the code representing the selected row.
But in your AVR code you only WRITE data to GMC-4 though 74H4051 multiplexers. Could you explain, how it your logic works?
Thanks,
Alexander
投稿: Alexander | 2012年7月13日 (金) 08時12分