PICBASICコンパイラ
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
まるでインタプリタ。でもコンパイラです。超カンタン超シンプルです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第175回]
●PIC18F45K50(2)プログラム書き込み
PIC18F45K50はUSB機能内蔵の40pinICです。
PIC18F4550の改良型とでもいうべきPICです。
特筆すべきはとにかく安い。
PIC18F4550が1100円なのにPIC18F45K50はたったの300円。
ああ。しかし。
いま手元にあります秋月から15年前に購入したPICKIT2互換PICプログラマではPIC18F45K50は認識すらしてくれません。
しかし。
諦めるのはまだ早い。
一年半前のノートをよくよく読んでみましたら。
なんだかごちゃごちゃ試行錯誤の過程を書いておりますが。
うむむ。
苦闘の末にPIC18F13K50用のPIC WRITERプログラムで書き込みができたと書いているではありませんか!
もっともこの時点ではPIC WRITER基板はND80Z3.5の82C55コネクタに接続して書き込みテストをしています。
当然プログラムはZ80アセンブラ。
しかしそれについてはこのところ書いておりますようにPIC18F13K50でコントロールできるようにPICアセンブラで書き直しております。
おお。
それならPIC18F45K50にも書き込みできるはず。
ファイルをさがしてみましたらPIC18F45K50用のテストプログラムも作成しておりました。
MPLABでは対応していたようで、HEXファイルも作成済みでした。
下はテストプログラムのソースプログラムリストです。
昨年の6月に作成しておりますね。
;;;pic p18f45k50 test ;from picio-08a.asm ;23/6/25 ; #include<p18f45k50.inc> ;cpuclock=48MHz HSPLL_CRYSTAL=12MHz ;wdt=about 32ms(4ms*8) ; CONFIG PLLSEL=PLL4X,CFGPLLEN=ON,CPUDIV=NOCLKDIV,FOSC=HSH,PCLKEN=ON,WDTEN=OFF ; CONFIG PLLDIV=3,USBDIV=2,CPUDIV=OSC1_PLL2,FOSC=HSPLL_HS,VREGEN=ON,WDT=OFF CONFIG PBADEN=OFF,LVP=OFF ; w=0 f=1 c=0 z=2 ; cntr0=0c cntr2=0d testcntr=3c testcntr2=3d ; org 00 goto start ; ; ; org 18 start ; movlw 0f ; movwf ADCON1 clrf ANSELA clrf ANSELB clrf ANSELC clrf ANSELD clrf ANSELE clrf TRISB clrf TRISC clrf TRISD testloop movf testcntr,w movwf PORTB movwf PORTC movwf PORTD testloop2 call t1ms decfsz testcntr2 goto testloop2 decf testcntr goto testloop ; ;1msec timer t1ms movlw 0a;=10 movwf cntr2 t1ms2 call tm100micros decfsz cntr2 goto t1ms2 return ; tm100micros movlw 0f0;=240 movwf cntr0 tm100micros2 nop nop decfsz cntr0 goto tm100micros2 return ; tm15micros movlw 24;=36 movwf cntr0 goto tm100micros2 ; end ; |
簡単なプログラムです。
ポートB、ポートC、ポートDに8ビットのデータを出力してそれを256msごとに+1しながら出力を繰り返します。
まずはこのプログラムがうまくPIC18F45K50に書き込みできるかどうかのテストです。
あれこれ考えているよりまずはやってみることです。
そう。案ずるより産むが易し、です。
ものは試しということでさっそくHEXファイルをロードして書き込んでみました。
下はそのログファイルです。
logfile piciolog\1206220530.txt open *** pic i/o *** picio-30 connected >/erase endcode=01 >/hload 45k50test.hex 45k50test.hex cannot open >/hload 45k50test.hex loading 45k50test.hex ... i=365,binbfend=152 >/verify inbfend=0 startcode=01 i=6,b=2,[04]0000[01]*i=14,b=4,[00]0000[0f]*verify error! 0,0c-ff i=26,b=8,[00]0018[0f]*verify error!18,5b-ff i=46,b=16,[00]0020[0f]*verify error!20,5f-ff i=66,b=16,[00]0030[0f]*verify error!30,20-ff i=86,b=16,[00]0040[0f]*verify error!40,0a-ff i=106,b=16,[00]0050[0f]*verify error!50,f0-ff i=118,b=8,[00]0060[0f]*verify error!60,24-ff i=124,b=2,[04]0000[01]*i=132,b=4,[00]0000[01]*i=138,b=2,[00]0005[01]*i=148,b=6,[00]0008[01]*vfend >/picwr startcode=01 i=6,b=2,[04]0000*i=14,b=4,[00]0000*i=26,b=8,[00]0018*i=46,b=16,[00]0020*i=66,b=16,[00]0030*i=86,b=16,[00]0040*i=106,b=16,[00] 0050*i=118,b=8,[00]0060*i=124,b=2,[04]0000*i=132,b=4,[00]0000*i=138,b=2,[00]0005*i=148,b=6,[00]0008*vfend >/verify inbfend=0 startcode=01 i=6,b=2,[04]0000[01]*i=14,b=4,[00]0000[01]*i=26,b=8,[00]0018[01]*i=46,b=16,[00]0020[01]*i=66,b=16,[00]0030[01]*i=86,b=16,[00] 0040[01]*i=106,b=16,[00]0050[01]*i=118,b=8,[00]0060[01]*i=124,b=2,[04]0000[01]*i=132,b=4,[00]0000[01]*i=138,b=2,[00]0005[01] *i=148,b=6,[00]0008[01]*vfend >/exit リモート接続を終了しました logfile closed at Fri Dec 06 22:08:04 2024 |
最初に/ERASEコマンドで全消去しました。
普通ですと消去できたかどうかの確認は秋月のPICプログラマでするのですがPIC18F45K50を認識してくれませんからそれはできません。
こうなると消去確認のためのプログラムも作らなければいけませんねえ。
とりあえずは/VERIFYで確認をしてみました。
ベリファイエラーが出てHEXファイルでデータがあるところがFFになっています。
多分消去できたと思います。
そこまでできたのでいよいよ書き込みテストです。
/PICWRに続いて/VERIFYを実行しました。
おお。
今度はベリファイでもエラーは出ませんでした。
なんだかよさそうな感じです。
PICBASICコンパイラ[第175回]
2024.12.10 upload
前へ
次へ
ホームページトップへ戻る