PicWriterUSB:ソフトウェア編【PICマイコンへの書込み】

all_area_log

Code protection

ホビーレベルでは使う機会の無い機能の筆頭、かと思います。PicWriterUSBでもBULK ERASE PROGRAM MEMORYとBULK ERASE DATA MEMORYの両コマンドを使用していますので、/CP、/CPDの状態に関わらずFlashもEEPROMも全て消してから書込みを行います。

BULK ERASE PROGRAM MEMORYを使用する際には事前にLOAD CONFIGURATIONを実行しますので、8000h〜のUser IDも消去されます。EEPROMもUser IDも新しいHEXファイルにデータがあればもちろんそれを書込みますが、FlashエリアのみアップデートしEEPROMやUser IDをそのまま残すといったユースケースは想定していません。
(将来的には何かオプションとして対応するかもしれません)

EEPROM

EEPROMも書込みに際しての留意点があります。

  • EEPROMはデータ長8bitだが、LOAD DATA FOR DATA MEMORYコマンドにて書込む際には上位に0埋めした14bitのワードデータとして扱う
  • Multiple Word Programmingには対応していない=データラッチは1つしか無いので、LOAD DATA FOR DATA MEMORYコマンドとPROGRAMMINGコマンドは必ず対で用い、1バイト(ワード)ずつ書込む必要がある
  • 書込みにINTERNALLY TIMED PROGRAMMINGを用いると該当するアドレスのEEPROMを消してから書込みを行う。EXTERNALLY TIMED PROGRAMMINGでは消去を行わなず書込みのみ行う。EXTERNALLY TIMED PROGRAMMINGの方が処理時間が短いため、BULK ERASE DATA MEMORYにてEEPROMに全域を消去してからEXTERNALLY TIMED PROGRAMMINGを用いて書込みを行うと早い。

Flashエリアの書込みで折角複数のデータラッチを使用するプログラムを作ったのに、それが使えないのはちょっと残念ですが、仕方無いかなというところです。PicWriterUSBにてEEPROMを含めたPIC16F1823の全域の書込みを行うと800msec強かかります。(Flashエリアのみの場合の2倍程)

all_area_log

ちなみに下記のフローはさすがに間違いですよね。これだと最後の1バイトしか書き込まれない。。
EEPROM_FLOW

※コマンドの例:PIC16F1823 Memory Programming Specificationより抜粋

Configuration Memory

PIC16F1823ではワードオフセットアドレス8000h〜のConfiguration Memoryエリアで書込み出来るのは、User ID0〜3(8000h〜8003h)、Configuration Word1,2(8007h, 8008h)の6ワードのみです。留意点は下記になります。

  • INTERNALLY TIMED PROGRAMMINGのみ使用可能(EXTERNALLY TIMED PROGRAMMINGは使用不可)
  • こちらもMultiple Word Programmingには対応しておらず、1ワードずつ書込みを行う必要がある

コメント

タイトルとURLをコピーしました