· 

今さらPIC(導入からLチカ)

今さらPICマイコンを使ってみます。普段はAVRマイコンを使うことが多いのですが、いろいろ事情があるんです。
ターゲットは秋月で買ったPIC12F1840です。ライターも今回買いました。 いわゆる互換品です。まじ激安。 pickit4が純正の最新で、純正のpickit3はもはや手に入らないようです。
では、MPLABとXC8コンパイラをインストールします。 MPLABをインストールして間髪入れずにXC8コンパイラをインストールするとBuildToolにXC8の設定を入れても認識してくれませんでした。 MPLABを入れて、起動して、exampleをコンパイルしようとして、エラーを出させた後、XC8コンパイラを入れて、「tools」「options」で、

まぁ、環境によりますが、こんな感じで。

で、pickit3を挿してデバイスドライバのインストールまで完了させておきます(挿せば勝手にやってくれます、ハイ)。

では、Lチカまでやってみます。

「File」「New Project ...」で、

「Standalone Project」で「Next >」

「Device」のドロップダウンがとても選びにくいので、直打ちです。「Tool」はpickit3を選びます。で、「Next >」

よくわからないのですが、「OPTIONAL」らしいので、このまま「Next >」

「コンパイラを選べコラ」と赤い字で書いてあるので「XC8」を選んで「Next >」

プロジェクト名やらフォルダやらを適当に設定して、「Finish」

で、こうなる。

「Production」「Set Configuration Bits」とつつく。

こうなる。で、てきとうにやる、、、オシレータは内蔵。PLLなし。MCLRをMCLRとして使わないと、後で面倒なことを聞いてくるので、ここはON、、、で、結局、、、

これで、良いのでしょうか、、、初心者なのでわかりません。まぁ、これで行ってみます。で、「Generate Source Code to Output」を押す。

こんなのが出ます。全体を選択してコピーします。

で、main.cに貼り付け♡と思ったら、main.cは作ってくれてません。ので作ります。

ファイル名を「newmain」から適当に変えて「Finish」

で、こうなるので、さっきのやつを貼り付ける#include <xc.h>はすでに書かれているので、そこは空気を読む。

こうなります。で、クロックの設定を調べます。

設定が必要そうなのはOSCCONのようです。

まぁ、読めばわかる。で、次はポートです。Lチカですから。

親切にこういうのがあります。PORTA, LATA, ANSELA, TRISAを設定すれば良さそうです。PORTAは入力用っぽいのでLチカには不要だと思いますが、

こういう文言で惑わされます、、、PORTAに書いても同じってこと?

ていうか、この英語、どう解釈すべきかいまいちわからない、、、困ったときのgoogle先生

「PORTAへの書き込みは、実際には対応するLATAレジスタに書き込まれます。」やはりそういうことらしい。ということで、LATAの存在は忘れることにします。

で、結局こんな感じで。

#include <xc.h>

 

#define _XTAL_FREQ 8000000

 

void setup(void){

    OSCCON =  (0b01110000);// 8MHz

    ANSELA =  (0b00000000);// set all pin as digital

    TRISA &= ~(0b00100000);// set RA5 as output

    PORTA &= ~(0b00100000);// output Low on RA5

}

 

void loop(void){

    PORTA |= (0b00100000);

    __delay_ms(200);

    PORTA &=~(0b00100000);

    __delay_ms(200);

}

 

void main(void) {

    setup();

    while(1){

        loop();

    }

    return;

}

で、左側のプロジェクトツリーのstudy1を右クリックして、「Build」

下のほうの、Outputになんじゃかんじゃあるけど「BUILD SUCCESSFUL」とあるのでOKなんだろう。

では結線です。

で、データシートより

です。その通りにつなげばよい。、、、はず。

で、こうなります。秋月の「FT231X USBシリアル変換モジュール」はUSBから5Vをとるためだけにつなげています。

では書き込もう。RUNを押す。

そして怒られる。

上のほうはブツはあってるか?ということかな?

下のほうはLowVoltage書き込みをしたいのならそういう設定をしたほうが良いよ(でもデバッグの時はLowVoltage書き込みはできないけどね)、、、ってことかな?ということで言われたとおりにしてみます。

左上のプロジェクトツリーのプロジェクト名(今回はstudy1)を右クリックして、「Properties」を押す。

でできたダイアログで、ここを押す。

で、これを選ぶ。

で、これにチェックを入れる。

で「Apply」「OK」

で、ふたたび、RUNを押すと今度は怒られずに、したのほうに

 

*****************************************************

 

Connecting to MPLAB PICkit 3...

 

Currently loaded firmware on PICkit 3

Firmware Suite Version.....01.56.07

Firmware type..............Enhanced Midrange

 

Target voltage detected

Target device PIC12F1840 found.

Device Revision ID = 5

 

Device Erased...

 

Programming...

 

The following memory area(s) will be programmed:

program memory: start address = 0x0, end address = 0x7ff

configuration memory

Programming/Verify complete

 

というのが出るので、書き込めたってことだろう。

ものを見ると、

まぁ、いけてるようです。

にしても、AVRマイコンのほうが、ATMELのAVR Studioやら、Arduinoやら良いツールがあって圧倒的に使いやすいわ、、、AVRISPMKIIも互換品がお安く手に入るようだし(うちにあるのは純正です)。、、、ていうかArduinoがあればそれすらも要らない、、、PICマイコンを選択する理由は全く無い。でもATMELはMICROCHIPに買収されたんだよねー。わからんわ半導体の世界。