PIC 18F14K50を使った電子工作


スポンサーリンク


PIC18F14K50は、PICでは珍しい20ピンのコントローラです。ピン配置は以下の通りです。プログラムメモリーは16Kバイト、データメモリ768バイト、EEPROM256バイトありかなり大きなプログラムも可能です。価格は1ケ約200円なので18ピンのPICとそれほど変わりません。

PIC 18F14K50を使った電子工作

18F14K50を使った電子工作

18F14K50を使った電子工作

18F14K50 電子工作
18F14K50 電子工作

PIC18は割り込みに優先機能がありますが、デフォルトでは優先機能なしになっているのでPIC16と同じように使うこともできます。
18F14K50 電子工作 割り込みロジック

開発環境
PIC18F14K50は20ピンなのでこれまでつかっていたmikroelectronikaの書き込みツールでは書き込みでできませんでした。
電子工作 PICKIT2 18F14K50
Micro ApplicationのPICKIT2用基板とPICKIT2を接続して書き込みができるようにしてあります。いずれ、mikroelectronikaから新しいライターがでてくると思いますが当面は、この方式で書き込みです。

mikroC PRO Ver 3.2での注意点
1:ライブラリADC_Read()がサポートされていないので自作する必要がある。


// ADコンバート
// ch:3,4,5,6,7,8,9,10,11
unsigned ADC_Read18F14K(unsigned short ch)
{
unsigned res;
char temp;
temp=ch << 2; // 2ケ左にシフト 0b00****00
ADCON0 = temp;
ADCON1.PVCFG1 = 0; // Positive voltage reference == Vdd
ADCON1.PVCFG0 = 0; // Positive voltage reference == Vdd
ADCON1.NVCFG1 = 0; // Negative voltage reference == Vss
ADCON1.NVCFG0 = 0; // Negative voltage reference == Vss
ADCON2.ADFM = 1; // Right justified
ADCON2.ACQT2 = 1; // AD acquisition time 20 Tad
ADCON2.ACQT1 = 1; // AD acquisition time 20 Tad
ADCON2.ACQT0 = 0; // AD acquisition time 20 Tad
ADCON2.ADCS2 = 0; // AD Conversion clock Select bits FOsc/32
ADCON2.ADCS1 = 1; // AD Conversion clock Select bits FOsc/32
ADCON2.ADCS0 = 0; // AD Conversion clock Select bits FOsc/32
//ADCON2.ADCS2 = 1; // (clock derived from a dedicated internal oscillator = 600 kHz nominal)
//ADCON2.ADCS1 = 1; // (clock derived from a dedicated internal oscillator = 600 kHz nominal)
//ADCON2.ADCS0 = 1; // (clock derived from a dedicated internal oscillator = 600 kHz nominal)

ADCON0.ADON = 1; // AD start
ADCON0.GO_DONE = 1; // AD Start
while(ADCON0.GO_DONE){
;
}
res = (ADRESH & 0b00000011);
res = res << 8;
res = res + ADRESL;
return res;

}

2:PWM1_Start()がTRISC.B2の値を変更してしまう?
mikroC Pro Ver.3.2において、
初期化コード部分でTRISCの値を設定した後にPWM1_Start()を実行するとTRISC.B2が1から0に変更されてしまうようです。PWMはデフォルトでsingle output,RC5に出力するように読み取れたのでTRISC.B2が変更されてしまうのは理解できません。
対処方法としては、PWM1_Start() の後にTRISCを設定しました。あとはデフォルトのままでRC5はPWM出力、RC2はIOポートとして動作しています。 TRISCの値が変更されてしまうのは、ターゲットボード上とmikroC IDE上のデバッガでも確認しました。
ただ、データシートの読みが足りなく勘違いしている可能性もあります。


PIC18F14K50を使った電子工作

スポンサーリンク

TOPへ