こんばんは!
仕事も正月休みに入り、何をしようかウキウキしているゆってぃです!

実は今日が正月休み初日なのですが、とりあえずブログの更新くらいしかやるべきことが思いつかなかったので、こうして記事を書き始めてしまいました。

さて、今回は久々にPICマイコン関連の話です。
実は当ブログ、本当に多くの方からPIC関連の記事にアクセスをいただいております。
みなさま、本当にありがとうございます。
多くの方がご覧になってくださるお陰で、僕自身も新たな知識を身につけようという意欲が沸いてくるのです。
いや、これ本当ですよ(笑)

だって最近、このブログの更新以外に楽しみがないんですもん(涙)

さて、以前の記事(MPLAB導入)で、MPLABの導入からプログラムのビルドまでをご紹介致しましたが
現在ではMPLAB X IDEという次世代のIDEがMicrochip社から提供されています。

となれば、当ブログでも当然、その使用方法を記事に取り上げない訳には参りません!

それでは、早速IDEのダウンロードからご説明いたします。

1.ダウンロード

MPLAB X IDEのインストーラーは、下記のリンクからダウンロードすることが可能です。

MPLAB X IDE ダウンロードページ

まず、ページの左側にあるFREE DOWNLOADと書かれた箇所をクリックします。
(下の画像では、赤枠で囲んであります)

MPLAB_X_install_1.jpg

次に、MPLAB X IDE v1.51(バージョンは更新される可能性があります)と書かれたリンクをクリックします。
ダウンロードフォルダ選択画面が現れるので、適当なフォルダへダウンロードしてください。
なお、今回はOSがWindowsということで話を進めますが、Linux用、Mac用のIDEも用意されています。
さすがMicrochip社ですね!

MPLAB_X_install_2.jpg

また、一緒にコンパイラもダウンロードしておきましょう。
無料のコンパイラとして、XCコンパイラが提供されております。
(有償版もありますが、小さなプログラムでは無料版で問題ありません)
今回はPIC16系がターゲットデバイスなので、XC8コンパイラのインストーラーをダウンロードします。
因みに、XC16はPIC24系、XC32はPIC32系用のコンパイラです。

MPLAB_X_install_3.jpg

ダウンロードが完了したら、インストールをお願いします^^

2.MPLAB X IDEでのプロジェクト作成からビルドまで

MPLAB X IDEを起動したら、まずはメニューバーのFileをクリックします。

MPLAB_X_1.jpg

ファイルメニューが表示されるので、New Project...をクリックします。

MPLAB_X_2.jpg

プロジェクトウィザードが起動するので、
CategoriesMicrochip Embedded
ProjectsStandalone Project
を選択し、Nextを押します。

MPLAB_X_3.jpg

Select Device画面では
FamilyMid-Range 8-bit MCUs (PIC12/16/MCP)
DevicePIC16F84A
を選択し、Nextを押します。

MPLAB_X_4.jpg

Select Tool画面では、サポート外ですがとりあえずPICkit2を選択し、Nextを押します。
(書き込みには、PICkit2 Programmerを使用するため)
ただ、ここはお持ちのツールを選択していただいて結構です。

MPLAB_X_5.jpg

Select Comopiler画面では、XC8を選択し、Nextを押します。

MPLAB_X_6.jpg

Select Project Name and Folder画面では、プロジェクトの名前と、プロジェクトを作成するフォルダを入力します。
今回は、LED_SAMPLE_01というプロジェクト名にしました。
入力が完了したら、Finishを押します。

MPLAB_X_11.jpg


すると、ウィザードが自動で閉じて、また最初の画面に戻ります。
この時、画面左側のプロジェクトビューに、今作成したLED_SAMPLE_01という名前のプロジェクトのツリーが表示されていれば、プロジェクトの作成は成功です。
(以下の画面例では、LED_SAMPLE_01の下にPIC16F648A_SAMPLE_02というプロジェクトも表示されておりますが、これは僕が以前作成したプロジェクトが残っているだけですので、気になさらないで下さい)

MPLAB_X_8.jpg

次に、画面左上のNew Fileボタンをクリックします。

MPLAB_X_9.jpg

ファイル作成ダイアログが現れ、ファイルタイプ選択画面が表示されます。
今回は、C言語のソースファイルを作成するので、
CategoriesC
File TypesC Source File
を選択します。

MPLAB_X_10.jpg

次に、ファイル名と保存フォルダ選択画面が表示されます。
File Namemain
にします。
フォルダなどは、特に指定がなければそのままFinishボタンを押します。

すると、ファイル作成ダイアログは閉じられ、エディターが表示されます。
ここに、ソースコードを書いていくことになります。

MPLAB_X_12.jpg


ここまで長かったですね!
お疲れ様でした!


とりあえずここでひと休みしましょう!
ジュースを飲んだりおやつを食べたり、適度に休憩を取ってくださいね^ ^


(休憩中…)


さて、今回もLEDを点滅させるプログラムを作成してみましょう!
さっそく、以下のソースコードを、エディター内に記述してください。

おっと、何度も言いますが、コピペではダメですよ!
短いソースコードですので、自分の手で書いてくださいね><
これはね
学生時代、多くのレポートをコピペで済ませてしまっていたために
社会に出てから非常に苦労したがいうのだから

間違いありません!

学生時代にきちんと勉強してきた人と
ゆってぃの様にサボりまくっていた人では
社会に出てからの初速が全然違います!

特に組み込みエンジニア系では、学生時代にどれだけ回路やソフトを真面目にやっていたかが、仕事の速度や結果に如実に出てきてしまいます!

「学生時代に勉強したことなんて、社会じゃ役に立たないし」
なんて言わないで下さい。
僕が6年前くらいに、皆さんの分まで、十分に言っておきましたから(涙)

確かに、学生時代に勉強したことが業務に直結するケースは少ないかもしれませんが
ベーシックな部分では、どこかで必ず繋がっています。
無理をしすぎない程度でよいので、頑張ってくださいね!

ではでは、説教臭い前置きが長くなりましたが、ソースコードを以下に記載いたします(笑)


#include <stdio.h>
#include <stdlib.h>
#include <xc.h>

#pragma config CP = 0x03ff, PWRTE = 0, WDTE = 0, FOSC = 0x3

static void InitPortIOReg(void);

int main(int argc, char** argv) {

int i = 0;

InitPortIOReg();

while(1){
PORTAbits.RA0 ^= 1;
for(i=0;i<1000;i++);
}

return (EXIT_SUCCESS);

}

static void InitPortIOReg(){

TRISAbits.TRISA0 = 0;

}


XC8コンパイラは、Hi-TECH C コンパイラと少し記述方法が異なります。
まず、コンフィグレーションは、以下の方法で記述します。

#pragma config "セットするビット名" = "値", "セットするビット名" = "値", ・・・

それぞれのコンフィグレーションビットは、今回の例のようにカンマで区切って設定します。
記述方法の詳細は、XC8コンパイラのマニュアルをご参照下さい。
(英語ですが…)

※コンフィグレーションに関しては、以下の記事をご覧下さい。後半部分に簡単な説明があります。
PICマイコンで遊ぶ 超入門編(C言語)

セットするビット名は、各PICマイコンのデータシートに書かれているコンフィグレーションビットの名前をそのまま書きます。
PIC16F84Aでは、データシートの21ページにコンフィグレーション(ワード)の各ビットにおける詳細な説明がありますので、各ビット名と役割はこのページでご確認下さい。

(すでにダウンロード済みの方もいたっしゃるとは存じますが)
データシートはここからダウンロード可能です。

ここから先の説明は、このデータシートが必須になりますので
お手数ですがダウンロードをお願いしますm(_ _)m

もちろん、英語ですよ!
それだけで心が折れそうになりますが、これからの日本のものづくりを支えるためにも、一緒に頑張って行きましょう!
(いやぁ、我ながらでかい口叩くなぁ…)

それでは、今回の設定内容をひとつひとつ見ていきましょう!

まず

CP = 0x03ff

これは、コードプロテクションをオフにしています。

---

PWRTE = 0

これは、電源投入時のパワーアップタイマーをオンにしています。
(なお、このビットは"1"でオフ、"0"でオンなのでご注意を!)

--

WDTE = 0

ここでは、ウォッチドッグタイマーをオフにしています。

--

FOSC = 0x3

ここでは、発振モードを選択しています。
今回は外付けRC発振を用いるので、0x3を書き込んでいます。

--

以上で、コンフィグレーションの設定は完了です。




それでは、次にmain関数の中を見ていきましょう!

main関数内では、いきなりInitPortIOReg()関数が呼ばれています。

InitPortIOReg()関数の中を見ると、

TRISAbits.TRISA0 = 0;

と書かれています。

ここでは、TRISAレジスタのTRISA0ビットに0をセットしています。

TRISAレジスタとは、PORTA端子(RA0~RA4)の端子設定を行うレジスタです。
つまり、それぞれの端子を入力(Input)端子として使うのか、出力(Output)端子として使うのか、ということですね。
ここで、データシートの15ページを見ると、PORTAに関しての説明が書かれています。

今回必要な部分だけ要約すると
「PORTAは5ビットだよ」
「TRISAを0にセットすると出力ポート、1にセットすると入力ポートになるよ」
と書かれています。

今回はPORT0(RA0端子)を出力端子として使いたいので、TRISA0ビットに0をセットしている訳ですね。

「おい。TRISAbits.TRISA0 = 0とかの書き方はどこに書いてあるんだよハゲ!」

ゆってぃ「だ…!だからまだハゲてないって!!」

これらのレジスタ表記方法は、XC8コンパイラをインストールしたフォルダ内にある、pic16f84a.hをご覧下さい。

今回のTRISA部分だけ抜粋すると、以下のように書かれています。


// Register: TRISA
extern volatile unsigned char TRISA @ 0x085;
#ifndef _LIB_BUILD
asm("TRISA equ 085h");
#endif
// bitfield definitions
typedef union {
struct {
unsigned TRISA0 :1;
unsigned TRISA1 :1;
unsigned TRISA2 :1;
unsigned TRISA3 :1;
unsigned TRISA4 :1;
};
} TRISAbits_t;
extern volatile TRISAbits_t TRISAbits @ 0x085;


ご覧の様に、bitごとにアクセスできるようにヘッダファイル内で定義してくれているので、共用体へアクセスする要領で、それぞれのレジスタの各ビットへアクセスできます。

俺、あんま共用体を使いたくねーんだよな…

という方は、以下の記述方法でも大丈夫です。

TRISA0 = 0;

この記述方法でも、TRISAレジスタのTRISA0ビットを0に設定します。
pic16f84a.hでは、同じレジスタにアクセスする場合でも、プログラマーにコーディングスタイルに合わせて書けるように、複数の定義がなされているのですね。

素晴らしい!

どちらでも、お好きな方で結構ですよ^ ^

それでは、コードの解説を続けます。


while(1){
PORTAbits.RA0 ^= 1;
for(i=0;i<1000;i++);
}



無限ループ内で、一定周期毎にPORTAレジスタのRA0ビットを反転させています。

PORTAbits.RA0 ^= 1;

TRISAレジスタで出力に設定されたポートは、POARTAレジスタに書き込んだ値がそのまま出力されます。
今回は、PORTAレジスタのRA0レジスタの設定値を一定周期で反転させることで、RA端子からの出力波形もそれに応じて反転させています。
(なお、レジスタへのアクセス方法は、先ほどのTRISAレジスタの時と同様ですので割愛します)

以上で、ソースコードの解説は終わります!
非常に短いコードでしたが、内容はたっぷりでしたね(笑)
書き終わったソースコードは、かならず保存してくださいね。
(Ctrlキーを押しながら、Sキーで上書き保存できます)


それでは、エディタにコードが書き終わったら、いよいよビルドです!

ビルドの前に、今書いたソースコードをプロジェクトに組み入れます。
まずは、画面左のプロジェクトツリー内にある、Source Fileの上で右クリックをし
表示されたメニューからAdd Existing Item...をクリックします。

MPLAB_X_12-2.jpg

ファイル選択画面が表示されるので、先ほど作成したmain.cを選択肢、Selectボタンを押します。

MPLAB_X_12-3.jpg

Source Fileの下に、main.cが組み込まれたことをご確認下さい。

MPLAB_X_12-4.jpg

さて、次に画面上部にある、ハンマーのアイコンをクリックします。

MPLAB_X_13.jpg

ビルドが完了すると、右下にビルド結果が表示されます。
BUILD SUCCESSFULの文字が表示されれば、ビルド成功です!

MPLAB_X_14_1.jpg


これで、MPLAB X IDEを用いたプロジェクトの作成からビルドまでの説明は終了です。

最終的な出力ファイルは、プロジェクトフォルダ内の以下の場所になります。
(プロジェクト名がLED_SAMPLE_01だとすると)

LED_SAMPLE_01.X → dist → default → production → LED_SAMPLE_01.X.production.hex

あとは、このファイルをPICkit2などでマイコンへ書き込めば、全て完了です!

書き込み方法は、こちらの記事をご覧下さい。
http://technologicaladvance.blog.fc2.com/

本当にお疲れ様でした!^^


MPLAB X IDEは、従来のMPLABと比較しても、非常に強力な機能が多数追加されています。
ここでは詳細には触れませんが、是非この新しいツールを使いこなして、最強のPIC使いを目指しましょう!
AVRマイコン使いとの戦いに備えて…なんてね(笑)

最後までお読みいただいて、ありがとうございました!!(感謝)

関連記事
スポンサーサイト
コメント
探偵GODのコメント
確かにね
素晴らしくわかりやすい解説でした。
mplab x は専門書も無く悩んでいたのですが、
悩みが解決しました。
お礼を言わせてください。
ありがとうございます。
Re: タイトルなし
当ブログをお読みいただき、誠にありがとうございます!
この記事がお役に立てた様で、僕も嬉しく思います^^

MPLAB Xは、Microchip社が気合を入れて作ってくれたIDEですから、是非思いっきり使い倒してあげてくださいね!
助かりました
購入した書籍が、MPLAB C30を使って・・・と書いてあって、MPLAB C30を探し続けた末に、このサイトにたどり着きました。
Xになっていたのですね。
ありがとうございました。
Re: 助かりました
> ねこさん

コメントありがとうございます^^
お役に立てたようで、僕も嬉しく思います。

頑張ってくださいね!
はじめまして
Vividと申します。
MPLABのアセンブラで電子回路のお遊びをしております。
何とかCを勉強したく、MPLABのXC8のFREE版をインストールしたまでは良かったのですが、Cの作法を知らないので、行き詰っておりました。貴ブログに行き当たり、第一歩を進めたく、ありがたく思っております。
また、宜しくお願いします。

お暇なときにでも、小BLOGにご訪問いただければ幸いです(笑)
こんばんは
source fileにプロジェクトを組み入れようとしたのですが、エラーで “main.c“ already exists in projectと出てしまいます。
どの様に改善すれば良いでしょうか。
すみません、よくよくみたら昔同じ名前のファイルを作っていました。お騒がせしました。
Re: タイトルなし
> はんぺん20さん

コメントありがとうございます^^
自己解決されたようで何よりです。
意外とやっちゃいますよね(笑)

これからも頑張ってくださいね~!
お世話になります
はじめまして。
suzukiです。
マイコン初心者のものです。
大変わかりやすく、このサイトを見つけてから今まで滞っていたことが一気に進みました。
そして、「BUILD SUCCESSFUL」がでてついにPickit2で書き込んで見たのですが、「Running target...」のまま何も変化が起こりませんでした。
原因はおそらく「pickit2 programmer」の設定等に問題があると思っているのですが、何が原因なのか調べてもわかりませんでした。
お時間ございましたら、設定の手順を教えてください。
また、ほかに考えられる原因があれば教えてください。
よろしくお願いいたします。
PS.PICは18F2550を使用しております。
管理人のみ閲覧できます
このコメントは管理人のみ閲覧できます
Re: お世話になります
> suzukiさん
 
コメントありがとうございます^^
また、お返事が遅くなってしまい、申し訳ありません。

皆がArduinoやRaspberryPiに移行する中、PICを勉強されているとは、suzukiさんはなかなかの通ですね!
最高にロックだと思います!

早速ですが、現象を見る限りだと、MPLABがPICKit2を正しく認識できていないようです。
PICKit2のドライバは、正常にインストールされているでしょうか?
正常にインストールされ、MPLABから認識されていれば、画面左側のプロジェクト名を右クリックして出てくるメニューから「Set Configration」→「Customize」と進むと、「Hardware Tool」のPICKit2のところに「SN:・・・」と製品情報が表示されます。
出てこなければ、ドライバのインストールに失敗している可能性があります。

まずは、ドライバをご確認いただくことは出来ますか?
(ドライバがお手元に無い場合、ここからインストーラをダウンロード出来ます。http://www.microchip.com/DevelopmentTools/ProductDetails.aspx?PartNO=pg164120
管理人のみ閲覧できます
このコメントは管理人のみ閲覧できます
管理人のみ閲覧できます
このコメントは管理人のみ閲覧できます
管理人のみ閲覧できます
このコメントは管理人のみ閲覧できます
コメントの投稿
トラックバック URL
トラックバック
ご訪問者様
プロフィール

ゆってぃ

Author:ゆってぃ
経歴7年の組み込み系・制御系エンジニアです。
("ど素人"という文言は取りました…笑)
ソフトウェア開発経験ゼロの状態から、なんとか実務がこなせるようになってきた現在に至るまでの経験を、備忘録代わりに綴っていきたいと思います。
入門者の方、大歓迎!
(上級者の方、ごめんなさい…)

あと、ブログには全然関係ないですが、Bumpy Headというバンドのギターをやっています。
ライブ情報なんかも書いたりすることがあるので、その時に「行ってもいいよ~」といった感じのコメントを戴けると、泣いて喜びます(泣)
ブログ読んでくださってる方なら、チケット代サービスしちゃいます!

最後に…滅多に流用することは無いでしょうが、このブログに書かれているソースは、特に指定の無い限りMITライセンスとします。ただし、一部それ以外のものもございますのでご注意下さい。
※ブログのリンク先にあるコードに関しては、リンク先のポリシーに従ってください。

最新記事
最新コメント
カテゴリ
RSSリンクの表示
メールフォーム

名前:
メール:
件名:
本文:

twitter
リンク
ブロとも申請フォーム
スポンサードリンク