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