OpenStick Lite ~その4~(β版アップ)

PIC18F14K50を使用したOpenStickのLite版、今のところ大きな問題はなさそうなので一旦リリースしようと思います。
本当はピン割り当てをドラッグ&ドロップで自由に変更可能にしようと思っていたのですが、GUIを作るのがなかなか面倒なので今後ボチボチやろうと思います。とりあえず現行版ではOpenStickConfigLiteから一旦テキストに書き出し、メモ帳などで変更後に再読み込みする事でピン割り当てを変更可能です。

ファイル類

今回アップしたのは次のファイルです。一番上のバイナリセットがあればまずは動作させる事ができます。例によってソースは汚いので改造したりする際の参考程度にお考え下さい。

その他、書き込みツール(MybootOS)や書込みに必要なドライバ(MCHP-USB)はスタンダード版から変わっておらずOpenStickのページからダウンロードできます。
 バイナリセットには次のファイルが含まれています。
  • Bootloader18F14K50.hex・・・・・・・・・・・・・・・・・PIC18F14K50用ブートローダ
  • OpenStickLite.hex・・・・・・・・・・・・・・・・・・・・・・・OpenStickLiteファーム
  • Bootloader18F14K50+OpenStickLite.hex・・・ブートローダ+ファーム
  • OpenStickConfigLite.exe・・・・・・・・・・・・・・・・・Lite版コンフィグツール
基本的な事はPIC18F2550/2553を用いたOpenStickスタンダード版と同じです。
以下、主な違いを書きます。

回路

マイコンをPIC18F14K50に変更したので当然ながら回路も変わっています。
前回の投稿に書いた通りLEDはなくしてしまいました。
MCLR端子もリセットではなくIOポートとして使います。これにより入力ピンとして使えるのは13本です。ブートモードに入るにはMCLR 端子をLに下げた状態で電源を投入します。
水晶は12MHzです(スタンダード版は20MHzだったので要注意)。
PIC18F14K50にもウィークプルアップ機能があり、これを使える端子をデジタルピンとして使用する場合は内臓プルアップをONにするので回路上のプルアップは省いています。
秋月電子のAE-PIC18F14K50がほぼ同じ回路なのでこちらを使っても簡単に作れそうです。

ピンの用途

各端子は表の機能に割り当てています。IN4~6,IN9~13はアナログ入力可能端子、その他はデジタル専用端子です。 Wpup欄はウィークプルアップ機能がある端子を示します。

ピン用途

各端子の用途

 

ブートローダ

PIC18F4550用を改造しました。「Bootloader18F14K50.hex」をPICライターで書込みます。
このときだけはPICライター(PICkit3等)が必要です(いずれArduinoによる書込みも試したいと思っています)。
ブートローダが書込めればその後のファームやコンフィグデータは直接USBで書き込む事ができます。また「Bootloader18F14K50+OpenStickLite.hex」はブートローダとファームを一本にまとめたファイルなので、これを使えばファームを書く手間が省けます。

ブートローダを書き込みモードにするにはMODEボタンを押しながら電源を投入します。
スタンダード版では書き込みモードになるとLEDが点滅していましたがLiteではLEDがありません。しかし書込みツールMybootOSの左上に「PIC detected in BOOT mode」と表示される事で書き込みモードに入ったと判ります。

メモリーマップ

コンフィグデータの位置を変更しました。
スタンダード版は0×4000が先頭でしたがPIC18F14K50はFLASHメモリが0x3FFFまでしか無いので0x3C00を先頭にしています。

OpenStickLiteメモリーマップ

コンフィグ先頭を0x3c00に変更した。

MybootOS

ファームやコンフィグの書換えにはスタンダード版と同じMybootOSを使用します。
ファームを書き込む時、「Code Offset」には0×0800番地を指定します(これはスタンダード版と同じです。)。
コンフィグデータを書きこむ場合は「Code Offset」は0×3000番地を指定します。コンフィグデータの先頭は0x3c00じゃないかと疑問に思われるかもしれませんが、実はこの「Code Offset」とは書込み前に行われる消去動作の先頭番地を示すものなのです。 実際の書込み番地はIntelHEX形式のファイルに含まれています。今回、コンフィグの先頭が0x3c00なのでその手前の0×3000からFLASH最終番地までを消去します。なおファームは0×3000未満に収まっているので壊す事もありません。
・・・という事はIntelHEXに含まれる書込み番地を見て必要なところだけ消去する機能があればいいんですよね(またいずれ)。

MybootOS_Lite

MybootOSで接続。

 

コンフィグツール

Lite版のコンフィグツールはスタンダード版と見分けをつきやすくするため色を黄色にしました。

OpenStickConfigLite

スタンダードと見分けがつく様に色を変えました。
いずれ一本化したいのですが。

入力端子の任意割り当てに対応するため内部構造を大きく変更しています。
任意割り当てを行うGUIはまだできていませんが「SAVE」ボタンで一旦設定を保存し、それをテキストエディタで変更して「LOAD」で読み込ませるとピン割り当てを変更できます。
設定ファイルには下記の端子割り当てを追加しており、’=’の右の数字が入力端子番号で、これを書き換えます。LOAD時のルールチェックは厳密にできていないので書き換える際は注意してください。

#Pin asign
PIN:ANALOG(X) =4
PIN:ANALOG(Y) =5
PIN:ANALOG(Slider) =6
PIN:HatSwitch(UP) =10
PIN:HatSwitch(RIGHT) =11
PIN:HatSwitch(DOWN) =12
PIN:HatSwitch(LEFT) =13
PIN:BUTTON(1) =1
PIN:BUTTON(2) =2
PIN:BUTTON(3) =3
PIN:BUTTON(4) =7
PIN:BUTTON(5) =8
PIN:BUTTON(6) =9

 

また自動ピン配置も残すため「AutoAsgn」ボタンを追加しました。
(「ShowPin」ボタンと機能の差があまりなくなっており、いずれこのあたりは整理したいと思います)

 

OpenStick Lite ~その4~(β版アップ)” への7件のコメント

    • MEDさん
      早速お試しいただきありがとうございます。
      申し訳ありません。OpenStickLite161010.zipは確かにDLしてみたら解凍できませんでした(ASCIIモードでアップしてしまったのかもしれません)。
      今、アップしなおしましたのでお手数ですが再トライお願いいたします。

  1. ピンバック: FRISKサイズのUSBジョイスティック | ほいほい堂blog

  2. ピンバック: ArduinoでPICマイコンに書込む~OpenStickLite編~ | ほいほい堂blog

  3. ピンバック: OpenStick無線化実験 | ほいほい堂blog

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>