Top > シリアルを使った書き込み(PIC)

DTMF送信機の製作

シリアルを使った書き込み(PIC)

概要

ちょっと調査中。 通常は、PICマイコンはPICライターで書き込む。 でも、PICライターを使わなくてもプログラムの入れ替えが出来ると聞いた。これは調査せねば。これが出来るようになれば、DTMF送信機を買った方がPICライターを使わずに自らバージョンアップすることが可能となる。

情報元

  • PICTNCのマニュアルを読んでいると、面白いことが書いてある。

書き込み手順

これはPICTNCの場合の例であるが。

  1. PICTNCの電源をOFF
  2. シリアルケーブルでPCとPICTNCを接続し、ターミナルプログラムを起動。
  3. PCにローダープログラム(Screamer)をインストールする。
  4. Screamerを起動し、TNCのhexファイルを選択し、ロード開始すると、"Waiting for Broadcast"と表示される。
  5. PICTNCの電源を入れる。そうすると、ScreamerがPICTNCにプログラミングを行なう。
  6. Screamerを終了し、ターミナルプログラムを起動する。
  7. TNCが動作していれば、コマンドラインが表示される。

やってみるべ。

&ref(): File not found: "3x05Ball_Folder.JPG" at page "シリアルを使った書き込み(PIC)";

  • Boot Loader\16F88\Bloader-F88-20MHz.hexをPICに書き込むべ。 (これがPIC内部にプログラムを展開するプログラムである。この時はPICライターが必要となる。)

ブートローダーを秋月PICライターで書いたところ

&ref(): File not found: "PIC_Writer.JPG" at page "シリアルを使った書き込み(PIC)";

  • シリアルケーブルで、PICとPCをつなぐべ。
  • Screamer-v14.exe を起動してみるべ。

    &ref(): File not found: "Screamer_0.JPG" at page "シリアルを使った書き込み(PIC)";

対応ディバイス16F88 16F877A 16F876A 16F873A
COMCOM1〜COM6
ボーレート9600 19200 38400 57600 115200
OSC20M 8M 4M

同じようなサイト(本家?)をみっけ。

  • SparkFun Electronics

    このサイトに、PIC Boot Loaderというのがある。

    早速、のぞいてみると・・・

    How to get Bloader and Screamer to work

    というのがあった。

1.Download the latest Bloader and Screamer versions from www.sparkfun.com

www.sparkfun.com から最新バージョンの
BloaderとScreamerをダウンロードしろとな。

2.Find the appropriate "Bloader-XXX-###.hex" file where XXX is the chip type and ### is the external oscillator speed. Ex: "Bloader-873A-20MHz.hex"

ダウンロードしたファイルを解凍して、
自分の環境にあった hex ファイルをさがしてね。
PICの型名やクロック速度がファイル名になっている。

3.You must burn Bloader onto the PIC with a hardware programmer. This is generally done with a PG2C or MCP programmer.

上記のhexファイルを ライターで書き込む必要がある。

4.Put the PIC into your breadboard if you had to remove it for programming. You application must have a serial connection, MCLR pull-up resistor, reset button, and 5V power. We use the RS232 Shifter for all of our development but a MAX232 is also a good way to go. All the Olimex development boards have a MAX232 circuit built in, but you will have to connect the UART on the PIC to the MAX232 chip. Click here for more information.

自分の回路にそのPICを組み込む。
あなたの回路はシリアル接続を行なう必要がある。
MCLRはプルアップ抵抗でつながってて、
リセットボタンと5Vが必要である。
PCとPICを接続する場合には、たいていはMAX232を
使うでしょう。

こちらを参考にしてね。って書いてある。

5.Plug in the power and serial connection. Open hyperterminal and verify that the PIC is outputting 'Ok' to the terminal screen at 9600bps 8-N-1. This verifies that Bloader was loaded correctly and that your serial connection is working correctly. Close the hyperterminal window.

電源を入れてシリアルケーブルで接続してね。
ハイパーターミナルを開いて、PICが9600bps8-N-1に
設定されている事を確認してOKボタンをおす。
これは、Bloaderが正しくロードされていて、
シリアル接続が正常に行なえているかを確認します。
確認したら、ハイパーターミナルを終了します。

6.Now open Screamer. Select the Chip Type, Osc Speed, Comm Port, and Baud Rate (start with 9600). Click 'Open' and find the file "SerialTest-XXX-###.hex" file where XXX matches your chip and ### matches your oscillator speed. Click download - hit the reset button on your board. Screamer should load the new HEX file.

Screamerを開きます。
チップの種類やクロック速度、COMポートやボーレートを
選択します。
OPENボタンをクリックし、書き込みたいhexファイル
(SerialTest-XXX-###.hex)を選択します。
downloadボタンを押し、リセットボタンを押します。
Screamerはhexファイルをロードします。
SerialTest-XXX-###.hex は BloaderScreamer-v14.zip
の中にある。

7.Open hyperterminal again. Hit a button on the keyboard. The new program should display "Waiting for input:" and repeat any button you press. Now hit the reset button - the same thing should appear. The PIC can be reset and if Screamer is not active, the PIC will automatically run the currently loaded program.

もう一度、ハイパーターミナルを開きます。
キーボードをおします。
新しいプログラムは"Waiting for input:"と表示され、
入力した文字がリピートされます。
リセットボタンを押します。
また同じプログラムが起動します。
毎回同じプログラムがロードされます。

接続する必要があるのは

以下の3本。

  • Pin 26 (RC7/RX) to the TX hole near the RS232 IC
  • Pin 25 (RC6/TX) to the RX hole near the RS232 IC
  • GND

PIC16F88の場合は、

&ref(): File not found: "pic16f88.jpeg" at page "シリアルを使った書き込み(PIC)";

  • Pin 8 (RB2/RX) to the TX hole near the RS232 IC
  • Pin 11(RB5/TX) to the RX hole near the RS232 IC

動作

  • PICの電源を入れます。
  • PIC起動時に、100ms区間 PCからのレスポンスを待ちます。 何も反応が無ければ、プログラミングはしません。
  • Screamer を起動して、シリアルを設定して Hexファイルを選択して、ダウンロードボタンをおすとWaiting for PIC boot broadcastと表示される。
  • PICの電源を入れなおすか、MCLRをGNDに落とす。プログラミングが開始される。

RS-232C


実際やってみた。

結論はまだうまくいってない。現象は以下のとおり。

ボーレートの設定によって現象が違う

  • Downloadボタンを押すと、『Waiting for PIC boot broadcast』と表示される。(OK)
  • PICをリセットかけると、『Load Mode Command Sent』と表示されるが、先に進まない。

これは、ボーレートが9600bpsの時の現象で、 19200以上に設定すると、『Retries **』 という数字がカウントアップされ、『**Loaded』の数字はカウントアップされない。(何らかの転送エラーと判断されている。)

PIC側の動き

LED点灯消灯する処理を至る所に入れてどこまで動いてるか検証した。

  • PCとの初期化処理の動き 正常
  • 自分のプログラムメモリ初期化 正常
  • リセットジャンプテーブル再書き込み 正常

ボーレートを変更した後の本データ受信処理内でデータ取得待ちをしている?


ひとこと

既に経験がある方、情報おまちしてます★

  • なーしてうごかないのかなぁ。 やっぱり ocx とか? -- JM7MUU 本田 2007-11-22 (木) 11:28:37
  • はじめまして。私も同じことをやっているのですが、うまくいかないですねえ。SparkFunのforumを読むと、同様の報告がたくさんありますが、USB-232変換アダプタとかの相性とかbloaderが壊れるとかいろいろ書いてありますね。OkOkは問題ないのに、シリアル通信がうまくいってないんでしょうね。Screamer v1.4, 1.6, 1.7どれを使っても同じです。さらにいろいろ試しているところです。 -- JG1VGX 福田 2007-11-26 (月) 09:17:45
  • PICのソフトは問題なさそうな雰囲気を感じています。PCソフト側を実は作り直している作業中です。んー 悔しい^^;;汗 forumみてるかんじでは、ocxを入替えたら動いたとか いろんな御報告があるようですねぇ。私のところでは入替えても現象かわらずでした。もしかしたら、WindowsXPのUS版だったら動くの? んー。それとも ランタイムDLLとか入れないと駄目なのかなぁ。.NET2003の開発環境が入っているPCでやっても同じ症状です。 -- JM7MUU 本田 2007-11-26 (月) 10:59:12
  • Win2kの英語版があるので後でテストしてみます。Screamerの修正ですね、よろしくお願いします。ところでBoot Loaderって他にもいろいろあるんですね。何とか動くものを探してみます。ところで私の魂胆は、WB8WGAのTNCをNew-N対応可能なUIDIGIに書き換えることなんですが、誰かもうやってるかな〜。。 -- JG1VGX 福田 2007-11-26 (月) 13:13:03
  • Boot Loaderは確かに色々とありますね。MCLRで起動時にというのが、少なかった気がします。専用のブートピンを割り当てているみたいなので、出来れば専用ピンではなくMCLRで動作してくれるものであれば、改造要らずでブートローダーが動くので大変FBかと思っています。Screamer以外で動くものがあれば、それはそれでいいのですが、せっかくだから、ちゃんとうごかしたいなぁというのが希望です。WB8WGAのTNCですか。誰もやってないんじゃないかなぁ・・・ きっとやっている方がいらっしゃったら、ここに何か言ってくれるでしょう★ -- JM7MUU 本田 2007-11-26 (月) 13:57:44
  • 英語版Win2kでも同じでした。ScreamerのJava版 http://lavsen.net/picloader/ 見つけましたが、Windows/Linuxともjavacのビルドエラーが出て立ち上げられませんでした。別のBoot Loaderを試してみます。LINK -- JG1VGX 福田 2007-11-26 (月) 19:37:19
  • 福田さん了解です。なんでしょうねぇ。何かがあるんですよねぇきっと。着々とScreamerVCを作っております。VB嫌いのMUUでした。笑 -- JM7MUU 本田 2007-11-26 (月) 20:45:56

Tiny Bootloader

BloaderScreamerがどうやっても動かない。PCソフト側が怪しいが、作るのにはちょっと時間がかかる。そこで他のブートローダーを探していたら、Tiny Bootloaderというのもをみつけて、実際つかってみた。(JG1VGX 福田さん! スペシャルサンクス♪)

  • 本家サイト
  • ブートローダーのサイズが100word以下。小さい!
  • 対応ディバイスも豊富。
  • 115200bps でのコードロードも可能。はやい!
  • コードロード時の転送速度は、ブートローダーをコンパイルをかける時に決定し、それ以外の転送速度には対応できない。115200bps で作ったブートローダーで 9600bps転送を行う事が出来ない。9600bpsのブートローダーを作って、PICライターでブートローダーを書き込んで、9600bpsで転送を行なうといった手順となる。出来るだけ安定して書き込める転送速度を選ぶ必要がある。プログラムサイズが小さいならば、9600bpsあたりが妥当で無難な線かな。115200bpsでは、PCや接続環境によって、転送エラーとなる可能性が大。
  • PIC16F88 で実際にやってみた。うまくいった!
  • お! Tiny Bootloader動きますね。なかなかいいかもー^^ -- JM7MUU 本田 2007-11-26 (月) 21:07:03
  • configの設定はどこが優先になるんでしょう? ブートローダーは付属のままPICに書き込んで、DTMF用のhexファイルを書き込んだら、CCP出力端子がRB0に戻ってしまっていました。RB3にしたいのですが、どこかに秘密技があるのかな?一度ROMライターでCCP=RB3にすると、アップデートをかけても設定が保存されるみたいなので、ブートローダー側のConfig設定が有効になっている模様。 -- JM7MUU 本田 2007-11-27 (火) 00:41:21
  • ブートローダーをPICに書き込むときに CCP=RB3に変更してから書き込んでみました。プログラムをアップデートしてもRB3のままになってくれました。結論としては、ブートローダーのConfig設定が有効で アップデートプログラムのhexファイルのConfig設定は無視されてしまうようです。どこかに設定があるのかな・・・? とりあえず使えそうなのが解かりました。 -- JM7MUU 本田 2007-11-27 (火) 01:02:20
  • 上二つのコメントはTinyの件でしょうか?僕も昨日別のhexを書き込んでみて、これはイケル!と思ったのですが、2回目以降書き込めなくなりました。Optionタブの意味がよく分からず。なお、こちら超初心者です (^^; -- JG1VGX 福田 2007-11-27 (火) 09:34:13
  • そそそお。Optionタブはいじりませんでした。これは MCLRをCOMポートの制御線とつなげることによって、自動的にリセットをかけるためのものがあるようで、使わないようであれば、何もいじらなくてOKです。PICの電源をOFFにして、Tinyを書き込み待ち状態にした後、PICの電源を入れると、ブートローダーが動き出します。こちらでは何度やってもOKです。 -- JM7MUU 本田 2007-11-27 (火) 10:30:58
  • 最初は書き込みエラーが出ました。Hexを確認したところ、ブートローダー領域にデータが埋め込まれていました。HI-TECHのコンパイラで作成したhexファイルですが、ディフォルトでアドレス遠方の領域を使ってしまうようなので、リンカのオプションでブートローダー領域を避けるように hexを作り直しました。 -- JM7MUU 本田 2007-11-27 (火) 10:34:44
  • それと、115200bpsのせいか、書き込みが若干安定しない場合があります。たまにFailが出ます。9600bpsにして試してみようと思います。ブートローダーのアセンブラを2箇所ほど修正して、hexをつくりなおして、PICにブートローダーを書き込みなおす必要がありそうです。 -- JM7MUU 本田 2007-11-27 (火) 11:03:09
  • WindowsXP HomeEditionで動作確認をおこないました。 -- JM7MUU 本田 2007-11-27 (火) 11:05:43
  • ついでに。そいえば、PICTNCのHEXがかけませんでした。何かエラーが出てました。この辺りはじっくり調査が必要かと思います。 -- JM7MUU 本田 2007-11-27 (火) 11:12:40
  • TinyBootloader のページを作りました。 -- JM7MUU 本田 2007-11-27 (火) 21:43:11

Reload     Front page List of pages Search Recent changes Backup   Help   RSS of recent changes
Last-modified: Tue, 27 Dec 2016 01:33:56 HADT (1317d)