超ローコストPICWRITERの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
「PICBASICコンパイラ」からスピンオフ!!
過去記事を参照することなどを考えて該当する過去記事は「PICBASICコンパイラ」のまま連載回もそのままとします。
以後は前回記事からの流れで[第236回]からとします。
「PICBASICコンパイラ」はなるべく早く連載を再開したいと考えています。
PICはローコスト、高機能で種類も豊富なお手軽マイコンですがプログラムを書き込むためのWRITERが必要です。
それをできるだけ安価に作ってしまおうというプロジェクトです。
最終的には製品化を考えています(組立キット、完成品)。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第272回]
●PIC16F716(4)PICWRITERのテスト
今回はPICWRITERのテストです。
PIC16F716に対して/PICRD、/PICWR、/ERASEのテストを行ないます。
PIC16F716のWRITEプログラムについて確認してみたところ今までさわってきたPICとは一部ですがWRITEコマンドが異なっていることがわかりましたのでそのところのプログラムを追加変更してあらたにTYPE=4を設けました。
毎度のことですがPICについてはなんだかなあという感じです。
下はPIC16F716のテストを行なったときのログです。
最初に/PICIDCKでDEVICE IDを読み出しました。
logfile piciolog\0427092325.txt open *** pic i/o *** picio-30 connected >/picidck 400C[45][11] > |
DEVICE IDとして1145が読み出されました。
PIC16F716のDEVICE IDは114X/5Xです。
[出典]Microchip Technology Inc. PIC16F716 Memory Programming Specification
/PICTYPEコマンドを実行しました。
PIC16F716はTYPE=4です。
>/pictype=4 pictype=34 [04][11][00][69] > |
続いて/PICRDFを実行しました。
>/picrdf 400E[45][11][BB][3F] type=04,uadrs=00 [08] 0000[10][05][28][FF][3F][FF][3F][FF][3F][FF][3F][83][16][07][30][9F][00] 0010[10][85][01][86][01][83][12][22][08][85][00][14][20][21][08][86][00] 0020[10][A1][0B][0D][28][A2][03][0B][28][00][00][A0][0B][14][28][08][00] 0030[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F] 0040[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F] 07D0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F] 07E0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F] 07F0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F] [01] type=04,uadrs=01 [08] 400E[BB][3F][BB][3F] [10] > |
続いて実行した/PICRDFでは先に秋月のPICプログラマで書き込んだテストプログラムが読み出されました。
/PICRDはOKのようです。
/ERASEを実行したあともう一度/PICRDFコマンドを入力しました。
>/erase 400E[03][01][00][00] >/picrdf 400E[03][01][00][00] type=04,uadrs=00 [08] 0000[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F] 0010[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F] 0020[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F] 0030[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F] 0040[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F] 07D0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F] 07E0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F] 07F0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F] [01] type=04,uadrs=01 [08] 400E[FF][3F][FF][3F] [10] > |
/ERASEもOKです。
/HLOADを実行してテスト用のHEXファイルをロードしたあと/PICWRを実行し続いて/VERIFYを実行しました。
>/hload 16f716testb.hex loading 16f716testb.hex ... i=175,binbfend=72 >/picwr 400E[FF][3F][FF][3F] i=6,b=2,[04]0000 [05][04][02][00][00][00][00][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF] (01)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F) i=12,b=2,[00]0000 [05][00][02][00][00][05][28][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF] (10)(01)(00)(02)(00)(00)(00)(00)(00)(02)(04)(FF)(3F)(FF)(3F)(FF)(3F) i=22,b=6,[00]000a [05][00][06][00][0A][83][16][07][30][9F][00][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF] (10)(01)(00)(06)(00)(0A)(00)(00)(00)(10)(04)(FF)(3F)(FF)(3F)(FF)(3F) i=68,b=2,[00]400e [05][00][02][40][0E][BB][3F][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF] (10)(03)(00)(02)(40)(0E)(00)(00)(00)(30)(04)(FF)(3F)(FF)(3F)(FF)(3F) picwrend >/verify inbfend=0 400E[03][00][02][40] i=6,b=2,[04]0000 [06][04][02][00][00][00][00][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF] (01)(03)(00)(02)(40)(0E)(00)(00)(00)(30)(04)(FF)(3F)(FF)(3F)(FF)(3F) i=12,b=2,[00]0000 [06][00][02][00][00][05][28][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF] (02)(05)(28)(02)(40)(0E)(00)(00)(00)(30)(04)(FF)(3F)(FF)(3F)(FF)(3F) [o][o] i=68,b=2,[00]400e [06][00][02][40][0E][BB][3F][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF] (10)(BB)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F) [o][o] vfend error=0 > |
ベリファイの結果はerror=0になりました。
念のため/PICRDFを実行しました。
>/picrdf 16f716testb250427.hex 400E[BB][3F][FF][3F] type=04,uadrs=00 [08] 0000[10][05][28][FF][3F][FF][3F][FF][3F][FF][3F][83][16][07][30][9F][00] 0010[10][85][01][86][01][83][12][22][08][85][00][14][20][21][08][86][00] 0020[10][A1][0B][0D][28][A2][03][0B][28][00][00][A0][0B][14][28][08][00] 0030[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F] 0040[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F] 07D0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F] 07E0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F] 07F0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F] [01] type=04,uadrs=01 [08] 400E[BB][3F][FF][3F] [10] >/exit |
今回のPIC16F716に対するWRITERプログラムのテストはVpp=9Vで実行しました。
PIC16F716のVppは11V〜13.5Vです。
既定値よりも2V低い電圧ですが問題なく書き込みも消去もできました。
[出典]Microchip Technology Inc. PIC16F716 Memory Programming Specification
PIC16F716については今回で終わりです。
超ローコストPICWRITERの製作[第272回]
2025.4.28 upload
前へ
次へ
ホームページトップへ戻る