Snow in Novemberのブログ(blog)

C言語でPIC18F、まずはLチカ (LED点滅)

calendar

いまさらですが、いままでに使ったことがあるPICはPIC12FとPIC16Fだけでした。 これらのプログラムはいつもアセンブラで書いていました。  先日モノクロのグラフィックの液晶に表示させる際にもPIC16Fを使用しましたが、プログラムメモリ(Flash)が少ないと感じたので、今後のことを考えて、PIC18FをC言語で使ってみることにします。 PICはPIC18F26K22を秋月電子で購入。 値段は300円以下と安いし、Flashが64kbyteと割りと多め、シリアルも2chあるし、I/Oも25本、とりあえずいろいろ使えるんじゃないかなという感じです(実はあまり真剣には考えていません)。 C言語でPIC18Fを使うのは初めてなので、まずは1秒ON、1秒OFFのLチカ(LED点滅)を試し、うまく動きました。
C言語でPIC18F (PIC18F26K22)で Lチカ
環境はこんな感じで準備しました。
1. MPLAB X IDE をアップデート (v3.45 →v3.50、せっかくなので最新に)

2. MPLABR XC8 Compiler v1.40 (Cコンパイラ)をダウンロードしてインストール

以下、MPLAB X IDEで作業
3. MPLABで新規プロジェクト作成 (PIC18 C Templateを使う)

4. プロジェクトのデバイスを18F26K22に変更, PropertyのConf:は他のXC8_18FのをコピーしてXC8_18F26K22を追加(Conf:はそのままでもよかったのかも?)

以下、ファイル変更
5. configuration_bits.cのTODOのところに下記追加 (とりあえず最小限で)
#pragma config FOSC   = INTIO7  //Use internal ocsillator
#pragma config WDTEN  = OFF     //WDT off
#pragma config BOREN  = ON      //Enable brownout reset
#pragma config MCLRE  = INTMCLR //Use internal MCLR
#pragma config CPD    = OFF     //Flash not protected

6.system.hを下記の様に変更 (クロック 64MHz)
//#define SYS_FREQ        8000000L
#define SYS_FREQ        64000000L

7. system.cの void ConfigureOscillator(void) のTODOのところに、下記を追加 (内部発振16MHzを64MHzに逓倍)
OSCCONbits.IRCF     = 0b111;
OSCCONbits.SCS      = 0b00;
OSCTUNEbits.PLLEN   = 0b1;
OSCTUNEbits.INTSRC  = 0b00;

8. main.cのvoid main(void)の前に下記#defineを追加
#define _XTAL_FREQ  SYS_FREQ        //SYS_FREQ is defined in system.h
#define LAT_LED     LATAbits.LATA0

9.main.cのTODOのところに下記を追加 (LEDはRA0に680Ωと直列にして対GND接続)
TRISA   = 0b11111110;

while(1){
LAT_LED = 1;
__delay_ms(1000);
LAT_LED = 0;
__delay_ms(1000);
}

10. MPLAB X IDEでコンパイル(build)して、PICに書き込み起動

このPIC18FだとDebug Headerなしでデバッガが使える雰囲気です。 とりあえず、break pointは置けたので使えるかと思います。

全体 (電源は5V外部供給(万能基板に3端子レギュレータが載っています。) PICKIT3互換品使用
C言語でPIC18F (PIC18F26K22)で Lチカ のブレッドボード


関連記事
C言語でPIC18F、まずはLチカ (LED点滅)
C言語でPIC18F、カラーグラフィックLCD(M028C9325TP) 接続
C言語でPIC18F、カラーグラフィックLCD(M028C9325TP) 接続2
C言語でPIC18F、SDカード読み書き
C言語でPIC18F、SDカードの画像ファイルをLCD(M028C9325TP)に表示

この記事をシェアする

コメント

コメントはありません。

down コメントを残す




15 − eight =

folder お助けグッズ

No Image

ネコポス測定定規をゲットしました
more...

folder カード

SBIカードから重要なお知らせの郵便が届きました。サービス終了!
more...

folder その他

消火器の有効使用期間が切れていました
more...

folder ダイエット

No Image

No Image

No Image

No Image

No Image

more...

folder 家電品

RAVPOWER RP-UC11 USB充電器 2ポート(2個口)2.4A 買いました
語学学習用にオリンパスのICレコーダー Voice Trek V-863を買いました
more...

folder 旅行

RAVPOWER RP-UC11 USB充電器 2ポート(2個口)2.4A 買いました
RAVPOWER RP-PB060 モバイルバッテリー 買いました
電車とバスを乗り継いで黒部ダム(黒四ダム)を見てきました
遊覧船とロープウェイから浜名湖を眺めてきました。
JAXA 筑波宇宙センターの施設見学をして来ました
more...

folder 書籍(本)

走り方がわかる本。ランニングの科学 買いました
究極の個人旅行ガイド本 バックパッカーズ読本 最新版 買いました。
more...

folder 衣服

ヘインズ Hanes Tシャツ 靑ラベル まとめ買いしました
more...

folder 防災グッズ

超大型台風(21号)をきっかけに最近の防災グッズを調べてみました
more...