PICBASICコンパイラ
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
まるでインタプリタ。でもコンパイラです。超カンタン超シンプルです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第185回]
●PIC18F26K22
今回も今まで作業してきたことの延長になります。
昨年色々試してみるつもりでサンプルとして購入したけれどさわらないままになっていたPICが他にもありました。
それが今回説明のPIC18F26K22です。
28pinのPICです。
ピン数が多いのでI/Oが多いことも勿論使える範囲が広がるのですがそのほかにもプログラムメモリサイズが大きい(64KBytes)ことも魅力的です。
下はPIC18F2X/4XK22のDataSheetです。

[出典]Microchip Technology Inc.PIC18F2X/4XK22 DataSheet
メモリサイズやピン数などの違いによっていくつか同類のPICがあるようです。

[出典]Microchip Technology Inc.PIC18F2X/4XK22 DataSheet
たまたま当時秋月で入手可能で比較的安価なものとしてPIC18F26K22を購入しました。
特にそれ以外に選択した理由はありません。
あれ?
VppはあるのにPGCとPGDがない?

[出典]Microchip Technology Inc.PIC18F2X/4XK22 DataSheet
こちらには記載されていました。

[出典]Microchip Technology Inc.PIC18F2X/4XK22 Flash Memory Programming Specificaqtion
確認したところ消去やプログラムの書き込み/読み出しは今まで試してきたPIC18F13K50用のPIC WRITERプログラムと同じでいけるようです。
そういうことならば。
前回と同じようにテストプログラムを作成して試してみるほかはありませんでしょう。
下が作成したPIC18F26K22のアセンブラソースプログラムです。
;;;pic p18f25k22 test
;from 45k20test.asm
;24/12/19
;
#include<p18f25k22.inc>
;cpuclock=48MHz(4xPLL),CRYSTAL=12MHz
;
CONFIG FOSC=HSMP,PLL_EN=ON,PBADEN=OFF
;
w=0
f=1
c=0
z=2
;
cntr0=0c
cntr2=0d
testcntr=3c
testcntr2=3d
;
org 00
goto start
;
org 18
start
clrf TRISB
clrf TRISC
testloop
movf testcntr,w
movwf PORTB
movwf PORTC
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
;
|
前回のPIC18F45K20用プログラムのCONFIGの記述を変更しました。
[第183回]にも書いたことなのですが。
どうしてPICごとにCONFIGの記述のルールが異なっていたりするのでしょうか。
なんだかPICごとにそれぞれ別の開発者が勝手にルールを作っているような感じです。
今回記述したCONFIGのCLOCKに関するところはP18F25K22.incにあります。
普段使っているMPLABはちょっと古いバージョンなので確認したところP18F26K22.incはありませんでした。
なのでP18F25K22.incで代用しました。
下がP18F25K22.incの該当部分です。
; Oscillator Selection bits: ; FOSC = LP LP oscillator ; FOSC = XT XT oscillator ; FOSC = HSHP HS oscillator (high power > 16 MHz) ; FOSC = HSMP HS oscillator (medium power 4-16 MHz) ; FOSC = ECHP EC oscillator, CLKOUT function on OSC2 (high power, >16 MHz) ; FOSC = ECHPIO6 EC oscillator, port function on RA6 (high power, >16 MHz) ; FOSC = RC External RC, CLKOUT on OSC2 ; FOSC = RCIO6 External RC oscillator, port function on RA6 ; FOSC = INTIO67 Internal oscillator block, port function on RA6 and RA7 ; FOSC = INTIO7 Internal oscillator block, CLKOUT function on RA6, port function on RA7 ; FOSC = ECMP EC oscillator, CLKOUT on OSC2 (medium power, 4-16 MHz) ; FOSC = ECMPIO6 EC oscillator (medium power, 4-16 MHz) ; FOSC = ECLP EC oscillator, CLKOUT on OSC2 (low power, < 4 MHz) ; FOSC = ECLPIO6 EC oscillator (low power, < 4 MHz) ; ; 4X PLL Enable: ; PLL_EN = OFF Oscillator used directly ; PLL_EN = ON Oscillator multiplied by 4 |
実は普段私はMPLABもPICKIT2互換プログラマもWindows98SEで使っています。
ええ今だにWindows98SEは健在です。
さすがにこれでインターネットアクセスなどをするのはきついのでそういう作業はWindows7を使っています(これも今だに、です)。
Windows10もさわってはみたのですが、使い難いったらありません。
Windows10マシンはもうずっとほこりをかぶっています。
医者の不養生みたいなものですかねえ。
それで。
上で引用したのは古いMPLABバージョンについてきたP18F25K22.incなのですが。
Windows7用にもMPLABをダウンロードしています。
こちらは旧MPLABの最終バージョンかも。
v8.92です。
何ですか。
MPLAB Xですか。
それもダウンロードしましたけれど。
ンなものは使う気になりませんです。
Windows98SEのMPLABはv8.40です。
さすがにv8.40では古くて対象外だったPICがv8.92では対象内になっているものがあります。
それでそういうPICに対してはWindows7のほうを使います。
今回確認してみたところWindows7のほうのMPASM SuiteにはP18F25K22.incだけではなくてP18F26K22.incもありました。
しかし今回のテストプログラムとしてはわざわざインクルードファイルを変更してWindows7で作業するまでのことはないと思いましたからそこは無視することにしました。
しかし。
たまたまWindows7のほうのP18F25K22.incを開いてみましたら。
P18F26K22.incではありません。
P18F25K22.incです。
PLLの記述が違っているじゃありませんか!
; Oscillator Selection bits: ; FOSC = LP LP oscillator ; FOSC = XT XT oscillator ; FOSC = HSHP HS oscillator (high power > 16 MHz) ; FOSC = HSMP HS oscillator (medium power 4-16 MHz) ; FOSC = ECHP EC oscillator, CLKOUT function on OSC2 (high power, >16 MHz) ; FOSC = ECHPIO6 EC oscillator (high power, >16 MHz) ; FOSC = RC External RC oscillator, CLKOUT function on OSC2 ; FOSC = RCIO6 External RC oscillator ; FOSC = INTIO67 Internal oscillator block ; FOSC = INTIO7 Internal oscillator block, CLKOUT function on OSC2 ; FOSC = ECMP EC oscillator, CLKOUT function on OSC2 (medium power, 500 kHz-16 MHz) ; FOSC = ECMPIO6 EC oscillator (medium power, 500 kHz-16 MHz) ; FOSC = ECLP EC oscillator, CLKOUT function on OSC2 (low power, <500 kHz) ; FOSC = ECLPIO6 EC oscillator (low power, <500 kHz) ; ; 4X PLL Enable: ; PLLCFG = OFF Oscillator used directly ; PLLCFG = ON Oscillator multiplied by 4 ; |
ほんと、なんとかなりませんかねえ。
確認してみましたら。
Windows98SEにダウンロードしたP18F25K22.incファイルの日付は09/09/29ですがWindows7にダウンロードしたほうは13/03/10になっていました。
ま。
それは余談だったのですが。
作成したASMファイルをMPLABでQuick Buildしたところ。
ぬぁんと。
エラーになってしまいました。

え?
header fileがmismatch???
HSMPがない???
昔ならばこれでパニクッて何日か泥沼でもがいたことでありましょう。
まま。
そこは私もそれなりに経験を積みましたものですから。
パニックをおこすところまではいきませんでした。
ここはコーヒーなどを飲んで落ち着いて、と。
なんだ。
そういうことだったか。
ASMソースファイルを前回作成したPIC18F45K20をもとにしてちょいとCONFIGのところを書き換えただけだったのでついうっかりしてMPLABの設定をそのときのままにしていました。
それがエラーの原因でした。

「Configure」タブを開いてPIC18F25K22を選択する必要がありました。
PIC名をそのように指定したところBUILD SUCCEEDEDになりました。
やれやれです。
PICBASICコンパイラ[第185回]
2024.12.21 upload
前へ
次へ
ホームページトップへ戻る