PIC18F14K50を使用したOpenStickのLite版、今のところ大きな問題はなさそうなので一旦リリースしようと思います。
本当はピン割り当てをドラッグ&ドロップで自由に変更可能にしようと思っていたのですが、GUIを作るのがなかなか面倒なので今後ボチボチやろうと思います。とりあえず現行版ではOpenStickConfigLiteから一旦テキストに書き出し、メモ帳などで変更後に再読み込みする事でピン割り当てを変更可能です。
ファイル類
今回アップしたのは次のファイルです。一番上のバイナリセットがあればまずは動作させる事ができます。例によってソースは汚いので改造したりする際の参考程度にお考え下さい。
- OpenStickLiteBinary161011.zip・・・・・・・・・・・バイナリのセット
- Bootloader_PIC18F14K50_161010.zip・・・・・ブートローダソース
- OpenStickLite161010.zip・・・・・・・・・・・・・・・・・OpenStickLiteファームソース
- OpenStickConfigLite161011.zip・・・・・・・・・・・コンフィグツールソース
- Bootloader18F14K50.hex・・・・・・・・・・・・・・・・・PIC18F14K50用ブートローダ
- OpenStickLite.hex・・・・・・・・・・・・・・・・・・・・・・・OpenStickLiteファーム
- Bootloader18F14K50+OpenStickLite.hex・・・ブートローダ+ファーム
- OpenStickConfigLite.exe・・・・・・・・・・・・・・・・・Lite版コンフィグツール
以下、主な違いを書きます。
回路
前回の投稿に書いた通り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」と表示される事で書き込みモードに入ったと判ります。
メモリーマップ
コンフィグデータの位置を変更しました。
スタンダード版は0x4000が先頭でしたがPIC18F14K50はFLASHメモリが0x3FFFまでしか無いので0x3C00を先頭にしています。
MybootOS
ファームやコンフィグの書換えにはスタンダード版と同じMybootOSを使用します。
ファームを書き込む時、「Code Offset」には0x0800番地を指定します(これはスタンダード版と同じです。)。
コンフィグデータを書きこむ場合は「Code Offset」は0x3000番地を指定します。コンフィグデータの先頭は0x3c00じゃないかと疑問に思われるかもしれませんが、実はこの「Code Offset」とは書込み前に行われる消去動作の先頭番地を示すものなのです。 実際の書込み番地はIntelHEX形式のファイルに含まれています。今回、コンフィグの先頭が0x3c00なのでその手前の0x3000からFLASH最終番地までを消去します。なおファームは0x3000未満に収まっているので壊す事もありません。
・・・という事はIntelHEXに含まれる書込み番地を見て必要なところだけ消去する機能があればいいんですよね(またいずれ)。
コンフィグツール
Lite版のコンフィグツールはスタンダード版と見分けをつきやすくするため色を黄色にしました。
入力端子の任意割り当てに対応するため内部構造を大きく変更しています。
任意割り当てを行う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」ボタンと機能の差があまりなくなっており、いずれこのあたりは整理したいと思います)
β版を早速試してみているのですが、OpenStickLite161010.zipが展開できないようですので、御確認下さい。
MEDさん
早速お試しいただきありがとうございます。
申し訳ありません。OpenStickLite161010.zipは確かにDLしてみたら解凍できませんでした(ASCIIモードでアップしてしまったのかもしれません)。
今、アップしなおしましたのでお手数ですが再トライお願いいたします。
ほいほい堂本舗様
再アップロードされたOpenStickLite161010.zipは正常に解凍出来ました。
MEDさん
ご確認ありがとうございました。
ぼちぼちリリース用のドキュメントを作成していこうと思います。
Pingback: FRISKサイズのUSBジョイスティック | ほいほい堂blog
Pingback: ArduinoでPICマイコンに書込む~OpenStickLite編~ | ほいほい堂blog
Pingback: OpenStick無線化実験 | ほいほい堂blog
Pingback: HOI-Link S-BUS→ジョイスティック接続 | ほいほい堂blog
OpenStickConfigLite161011.zipはVisualC#のプロジェクトディレクトリを丸々収めていますが、特に再ビルドせず実行ファイルを使用する場合は以下のパスのexeファイルを使用ください。
OpenStickConfigLite\OpenStickConfigLite\bin\Release\OpenStickConfigLite.exe
※Debugディレクトリ下のexeファイルはデバッグ途中のファイルの為AutoAsgnボタンが表示されない様です。