LoginSignup
1
2

More than 5 years have passed since last update.

PIC32 Starter KitでHello World

Last updated at Posted at 2016-01-27

PIC32MX1/2/5 Starter Kitを使ってとりあえずLEDをチカチカさせます。
PIC32MX125_SK pic updated.jpg
http://www.microchip.com/DevelopmentTools/ProductDetails.aspx?PartNO=dm320100

【環境】
OS:Windows 7(64bit)
IDE:MPLAB X IDE v3.20


レガシィなライブラリを使った実装

#include <plib.h>

const int LED1 = BIT_0;
int main() {
   int i;
   /* setup LED */
   mPORTDSetPinsDigitalOut(LED1);
   while(1) {
        mPORTDToggleBits(LED1);
        for (i = 0; i < 10000; i++);// wait
   }
   return 0;
}

このコードはJohn S. LoomisさんのLight Switches (updated 2008)に記載されているコード参考にしています。
もちろん動作するのですが、この環境(MPLAB X IDE v3.20)で使用しようとすると、plib.hを引っ張ってくる必要がありました。PIC32 Peripheral LibraryをキーワードにMicrochipからダウンロードします。
このライブラリはレガシィなものなので、ビルド実行時に結構な数のwarningを見ることになります。

plib.hを使用しない実装

#include <p32xxxx.h>

int main() {
   int i;
   /* setup LED */
   TRISDbits.TRISD0 = 0x00;//※1
   while(1) {
       LATDbits.LATD0 ^= 0x01;
       for (i = 0; i < 10000; i++);
   }
   return 0;
}

(※1)でDポートの0ビットを出力に設定しています。Dポートの0ビットというのがLED1にあたります。このTRISx(TRISA, TRISB etc)はThe data direction registerといって、データの方向を決めるレジスタです。1でInput、0でOutputに設定できます。
(※2)ではラッチの設定を行っており、実行の度にHigh-lowが切り替わるのでLEDが点滅するという動作になります。
forループはwaitの役割をしています。pic32用にxc32というコンパイラを使用しているのですが、MicrochipのFAQにも記載がある通り「Delay関数(マクロ)はありません」。遅延時間が必要な場合は「タイマを使います」ということなので、

タイマを使用した実装

#include <p32xxxx.h>
#include <plib.h>

int main()
{
   TRISDbits.TRISD0 = 0x00; 
   // Timer Setup
   OpenTimer2(T2_ON | T2_SOURCE_INT | T2_PS_1_256, 100);
   ConfigIntTimer2(T2_INT_ON | T2_INT_PRIOR_2);
   INTEnableSystemMultiVectoredInt();

   while(1) {
      //do nothing
   }
   return 0;
}

//Timer2 ISR
void __ISR(_TIMER_2_VECTOR, ipl2) handlesTimer2Ints(void) {
    mT2ClearIntFlag();
    LATDbits.LATD0 ^= 0x01;
}

PICの情報はたくさんあるのですが、自分の環境で動かそうとするとやはりデータシートをしっかりと読む必要があるということを痛感しました。
M5←ここのtutorialで勉強しました。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2