UBW

PIC18F2550

UBWを試す。

UBWについては、以下の解説サイトが詳しいです。


PIC GAMES:UBW解説サイト

UBW公式サイト

千秋ゼミ:UBW




インストールメモ

  • UBWで扱うファームウェアはfirmware-B(UBW_B_HEX8.zip)とfirmware-Dの2種類がある。
  • firmware-BはBootloaderであり、Flash先頭の2kB(0000〜07ff)に常駐する。
  • firmware-Dは仮想シリアルポートを提供するファームウェアで、teratermなどから接続して、コマンドによりPICのポートを操作することができる。
  • まず、外部PICライターでfirmware-Bを焼いた後、fsusbを使用してfirmware-Dを導入する
    • そのときにWindows側にMCHIP-USB.zipに含まれているデバイスドライバーを導入する必要がある。
  • Firmware-Dについて誤解を恐れずに一言で言い表すなら改良版Gainerである。

落とし穴

  • fsusbを使うときはlibusbフィルタードライバーを導入する必要がある。
    • libusb-win32-filter-bin-0.1.12.1.exe
    • しかし、これはVistaには絶対入れてはいけないし、XPでもOSが不安定になることがあるので推奨しない。
    • WindowsでUBWを使う場合はMyBootというGUIの書き込みソフトを使うと良い。
  • firmware-Bを起動する場合には、RC2ポートをスイッチでGNDに落としながらリセット操作を行う必要がある。
    • RC2がpull up状態のときは、アプリケーション(ここではfirmware-D)が起動する。

問題点

  • 自分のPC環境(WinXP-SP3-HOME,OHCI)では、どちらのfirmwareの動作もかなり不安定で、実用にならない。
    • firmware-Bは何回もリセット操作を行なわないと起動(Windows側が認識)しない。
    • たまたまfsusbが認識するタイミングにうまく合わせてfirmware-Dを書き込めばOKだ。
    • firmware-Dは仮想COM:ポートがWindowsのデバイスマネージャーから見えたり見えなかったを繰り返す。
    • teratermからの操作は、まだちゃんと動いていない。
  • ちなみに、Gainer-mini(本家サイト配布の最新firm)もあまり安定動作とは言えない状態だったので、もしかしたら、AE-18F2550がハズレなのかもしれない。
    • Writer509で書くときも、「Dev.IDが違います」のエラーすることがたまにあるし、書き込めても、fuseの0006がベリファイエラーする。






安定化方法

千秋ゼミさんのUBW QAのページを熟読する。

  • USB1.1HUBを繋いでいたのが悪いらしい。MchipUSBはUSB2.0規格なので、USB1.1HUBを許容しないらしい。
    • ↑そのこと自体、なんか腑に落ちないけれど。2.0は1.1の上位互換だし、HighSpeedがないので1.1相当とほぼ同じ規格になっているはずなので。
  • ハブ無し直結に戻したら、firmware-Dがちゃんと動くようになった。
  • しかし、firmware-Bが不安定で、'fsusb -l' によるPICデバイス表示が点いたり消えたりする現象は全く改善されていない。
    • firmware-Bはたまにしか認識しないので、bootloaderを使うより、普通にPIC Writerを使うほうが遥かに時間の節約になるような感じだ。


  • その後、別のマシン(i815,UHCI)で試してみた。
    • ハブ無し直結でfirmware-D用のMCHP-USBドライバーのみを入れて(つまり、libusbのフィルタードライバーは一切入れずに)試してみた。
    • やはり、COMポートが現れたり消えたりを短時間で繰り返すようだ。
    • 自作基板を装着せずにAR-18F2550単体でUSB接続した場合には、デバイスマネージャーにUSB謎の機器が表示されたりされなかったりを短時間で繰り返すようだ。
    • まるで定期的にリセットされているか、watchdogによるリセットが掛かっているような感じ。






解決?

  • いろいろやっていたら、安定動作させるこつが掴めた。
  • 6PINのISPコネクタのうちで5V以外のピンを導電性スポンジでゆるく導電させておくことで 2台のPCのどちらもfirmware-Dを安定動作させることが出来るようになった。
  • ヒントは、LED(RC0)の点滅にあった。
  • 6PINコネクタを指で触れると、LEDが激しく反応するのだ。
  • 指で触れないにしても、mini-BコネクタをわずかにこじらすだけでLEDの点滅の変化が起きたりしていたので、最初はmini-Bの接触不良を疑っていた。
    • そこで、miniBケーブルを取り替えてみたり、コネクタの締め付け具合を弄ってみたりしたが全く改善されないので不思議に思っていたわけだ。
  • つまり、このAE-18F2550は、ISP端子の静電気に弱いということか。
  • ----> LVPでプログラミングされたPICのPGMピンは常にプルダウンしなければ駄目っぽいです。
  • 念のためテスターでMCLR(RESET)の電位とRC2(スイッチ)の電位を調べてみたが、こちらはちゃんとプルアップされていることは確認した。

対策としては

  • RB5,RB6,RB7(PGM,PGC,PGD)を適当な抵抗でプルダウンする。
  • プルアップではだめなようだった。
  • RB5(PGM)プルダウンだけでもOK。

この対策により、RC2をGNDに落としながらのリセット操作により、RC0,RC1のLEDが安定に交互点滅を繰り返すようになった。

  • 今までは、うまくいっても2,3秒だけ点滅を行ってそこで止まっていた。

根本的な対策としては

  • LVP(5V書き込み)モードを使わずにHVP(高電圧書き込み)でbootloaderを1回書いてしまえば、RB5も自由に使えるようになり、安定するとのこと。
  • あとはlibusbのフィルタードライバーを飼いならすのみ?。
  • MyBootを使うことで、不安定なlibusb-filter-driverは使わなくても良いようです。

HVP書き込みアタッチメントの制作

  • ツェナーDiのかわりは、200個600円(@3円)で買った秋月2SC1815-GRのE-B間が約8Vだったので、そのまま実装してみた。
  • ところで、LVPとHVPは書き込みソフトから切り替え出来るのだろうか?
  • 制御ピンとか異なっているし。自動認識は無理だよね。--->自動認識でした。






続々:PIC入門

  • 昇圧アタッチメントは完成した。 https://raw.github.com/iruka-/ATMEL_AVR/master/web/jpg/PIC/hvp.jpg
  • でんし研さんのファームは全て自動認識するようだ。
  • Writer509のソフトw509.exeにて、正しく操作できた。
  • 昇圧アタッチメントを噛まさない場合は、LVPライターとして使える。

素晴らしい -- とても便利

  • でんし研さん、ありがとうございました。

https://raw.github.com/iruka-/ATMEL_AVR/master/web/jpg/PIC/writer.jpg

  • 早速AE-18F2550にFirmware-BをHVPで焼いて、MyBootを立ち上げてFirmware-Dをインストールした。
    • 大成功!
    • Firmware-Dはsdccでコンパイルしたものだが、ちゃんと動いた。






参考リンク

FSIJ
PIC 18F2550 ¶
秋月電子で18F2550のボードが売られてるのでこれで遊ぶ環境をGNU/Linuxで整備しようという話。

アルゴ算法堂:PIC18F概要

Porting Microchip MCHPFSUSB v1.3 CDC to use sdcc on Linux: C18のソースをsdccに移植する方法

semifluid:かなりのPICマニア?18F2550自作オシロスコープなど。