2011-09-21
回路はDROを若干修正した物。DCモーターの回路と一緒に面付けしてOLIMEXに発注済み。

回路図

MPLAB C18を使用するのでmikroBASICで書いたプログラムを移植。エディターを2つ開いて、関数を1つずつ移植していく。

2011-10-07
基板到着

2011-10-08
ソフトを書き込んで動かしてみた。移植は完全では無かった。まだバグがある。あと1~2日かかりそう。

2011-10-13
もう一種類のノギスでテスト。移植完了。Microchip社純正のC言語は使いにくい。
・C言語は古い言語(FORTRANやCOBOL)に比べるとビット演算子などがそろっていてファームウェア開発向きなのだが、1ビット単位の入出力が苦手。
ハードウェア専用に独自に拡張されたBASIC系の言語の方が綺麗なコードを書ける。これはANSIのC言語規格に縛られすぎて使いにくくなっている。
どんなコードを書けばBSFやBCF命令に変換されるのか推測が出来ない。こういう言語は使っていていらいらする。
・MPLABのエディターがダメダメ
・マニュアルもダメダメ
・サンプルもダメダメ
・コンフィグレーションワードの設定方法が非常にわかりにくい
・コンパイル速度は良好
アマチュアがカネ出してまで購入する言語では無い。無料版はオプティマイザが効かないが無料の範囲で使うのが吉。

廉価版のDROに仕上げておいた。タカチのSS-125ケースに入る大きさ。DROソフトの移植は終わったので、本題のUSBの実験に移る。

LED基板

メイン基板
2015-08-06
休眠中案件を再開。現在開発中のデジタル回転計多機能版Ver2はPICを新型のPIC18F25K50に変更したがMicrochipC18版のbootloaderは定義ファイルを含めかなり書き換えが必要になる。動かすべく調べたところ以下の問題がある
・MicrochipC18は既にダウンロードできなくなっている。ネット上に転がっているが正式な物では無い。現在はXC8コンパイラが無料で使える
・Microchip社がbootloaderのサンプルを提供しているが無料版のXC8では何故かコンパイル&LINK出来ない(原因良くわからず)
・Microchip社提供のホスト側サンプルプログラムはMicrisoftVisualXXではなく無名のフリーコンパイラを使ったサンプルでソースを見ても良くわからないし修正も大変
・MikroBasicにもbootloaderサンプルが付属しているがPIC18F25K50には対応していない。PIC18F2550等少し古い物のみに対応
サンプルをそのまま使うと製品サポートが打ち切られるたびに移植をする必要があるので全部自分で作れないか調べてみる。他人の作ったプログラムを移植するのは困難だが自分で作った物なら容易。自分の作ったプログラムは自分の知らない機能が使われていないので移植が容易
検証項目は
1.HEXファイルの構造
2.USB HID通信
3.プログラムの自己書き込み
4.上記3つを調べていく過程で新たに出てきた不明点
の4つ
先ずHEXファイルの構造確認
・書式はインテルHEXファイルフォーマット(調べると直ぐに見つかる)
・先頭の方にあるのはプログラムメモリーに書き込むべき命令
・それに続いてIDロケーション。これはプログラムの実行に影響を与えないので書き込まなくて良い(アドレス0x200000)
・その後にコンフィグレーションビット(アドレス0x300000)
・更に続いてEEPROM初期値(アドレス0xF00000) EEPROMが実際にこのアドレスにあるのかは不明

2015-08-07
フラッシュプログラムメモリーはデータEEPROMとメモリーアドレスがが異なるだけで同じ手順。PIC16F877の日本語データシート。PIC18シリーズではまとめて書き込むテーブルWriteに変更されている

2015-08-17
mikrobasicで最も簡単なHIDプログラムを書くとこんな大きさ。必要なロジックを加えるとmicrochip社の物の2倍程度になりそう。最近のPICはメモリーが大きいので問題にならないが3~4割がbootloaderというのはかなり間抜け

2015-10-10
microchip社のMLAの中にあるbootloaderはこれを使って開発している。Qtという開発環境。マイクロソフトのVisualStudioに比べると分かり難い造りになっているが機能はそろっている。これを使ってPC側とファームウェアの動作を解析していけばPIC18F25K50で動かせるようになると思うので新規開発は中止。動いたら別ページにbootloaderの記事をまとめることにする以前まとめた物は古くなってソフトがダウンロードできなくなっている。探せばネット上のどこかに転がっているが無理に古い物を使うと新しいOSで動かなかったりする -->ブートローダーの修正方法をまとめておいた
