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
前へ
次へ
ホームページトップへ戻る