Nov11’s diary(自宅での開発環境作り )

3Dプリンタと切削加工機で工作した事をアップして行きます

PICを使用して開発する事にした(32BitMCUのPIC32MX系を使用する)

ロボットアームに取り付けるカメラ制御が出来たので、距離センサなどの制御を行う事にしよう思い、久しぶりにPICでの開発を再始動しようとしたが、MPLAB Xが、インストールされていない!
そうだ!、Windows8から、Windows10にアップデートする時に、パソコンを初期化したので、PICの開発環境をきれいさっぱりと消してしまった事を思い出した
と言うことで、PICの開発環境(MPLAB X)をインストールする事にした

「PICを使用して開発する事にした&三日坊主にならずに済んだ!」を参考に以下をインストール

 MPLABX-v3.45-windows-installer.exe
 xc8-v1.38-full-install-windows-installer.exe
 xc16-v1.26-full-install-windows-installer.exe
 xc32-v1.42-full-install-windows-installer.exe
 (2016年11月8日時点)

んで、インストールした後に、Code Configurator(MCC)をPluginしたら、ずいぶん画面が変わっている
確認したら、バージョンが、「v2.25.2」から「v3.25」と、ずいぶんバージョンアップしている
少し困ったのが、「v2.25.2」で作成したプログラムを「v3.25」で修正する事が出来ない

これでは、過去に作成したプログラムをメンテナンス出来ないので、以下の手順で複数のバージョン切り替えが出来るようにしてみた

1)コードコンフィグレータのnbm(NetBeansモジュール)をダウンロードする
  http://www.microchip.com/mplab/mplab-code-configuratorアーカイブから、
  com-microchip-mplab-modules-mcc-2.25.2.nbmをダウンロードし、適当な場所に解凍しておく
2)MPLAB Xにインストールする
  MPLAB Xを起動する
  [Tools]メニューから[Plugins]を選択すると画面が開くので、
  [Download]タグを選択し、[AddPlugins]を押し、nbmファイルを指定し、
  説明に従いインストールを行う
3)バージョンを選択する
  MPLAB Xを再起動し、[Tools]メニューから[Embedded]を選択する
  [MPLAB Code Configurator]が追加されているので、これを選択する

以上で、過去に作成したプログラムをメンテナンス出来る様になった

また、今回のCode Configurator(MCC)を確認していたら、32Bit系のPIC32MXも使用できる事に気付いた
[pic32mx_v1.00.ja]ファイルを確認すると、PIC32MX系とPIC32MZ系までが使用可能なので、一番容量が大きくて使い易そうな、PIC32MX170F256Bを使用し、色々と開発する事にしてみた
(本当は、PIC32MZ系を使用してみたいけど、軍事転用可能で国外取引には審査が必要なので後日検討する事にしました)

PIC32MX170F256Bは、PIC24FJ64GA002と比べて、とてもコストパフォーマンスが良い!
[Output Compare]は、内蔵されていないみたいだけど、速度も容量も何倍に増えて、お値段は500円以下と、とても、とてもお買い得な物になっているし、何よりプログラム容量が256Kbyteはありがたい
が!、マニュアルが英語版しか見つからない!
英語と数学を避けて、図画工作系の技術者になった筆者には、少し辛いが見つからない物は仕方ない

以下のサイトより、リファレンスマニュアルをダウンロードして調べる事にしたが、マニュアルのページ数は、2つ合わせて1500ページ近くもあるので、気合と根性が試される事になった
しかし、このページ数は病人じゃなくても病人になりそうだ(あくまでも、個人の感想ですよ)

http://www.tme.eu/en/Document/5d4fa517ccd831b6a5c79ea5c7266851/pic32mx1xx_2xx.pdf

http://hades.mech.northwestern.edu/images/2/21/61132B_PIC32ReferenceManual.pdf

んで、マニュアルを読んだ(気合も根性が足りずに斜め読みになってしまった…です)結果、PIC24FJ64GA002と同じ接続方法で良い事が判明(I2Cを除く)したので、PICkit3を使って、動作確認を行う事にしてみた
接続などは、「PICを使用して開発する事にした&三日坊主にならずに済んだ!」を参照する

〔PICkit3とPIC32MX170F256Bの接続写真〕

f:id:Nov11:20161108232504j:plain


〔プログラム作成〕

1)MPLAB Xを起動し、スタートガイドに従いプロジェクトを作成する
 Select Deviceで、[32-bit MCUs (PIC32)]、[PIC32MX170F256B]を設定する
 Select Toolで、[PICkit3]を選択する
 Select Compilerで、[XC32]を選択する

2)MPLAB XのCode Configuratorを使用して必要機能とピン割り当てを設定する
 a)Systemを設定する
  図ー1を参照して下さい
  今回は、48MHzで設定してみました
 b)TMR1を追加しタイマ間隔を設定する
  図ー2を参照して下さい
  今回は、1mSecで設定してみました
 c)Pin Managerで、入出力ピンの設定を行う
  図ー3、図ー4を参照して下さい
  今回は、RB5を出力に設定し、名称を[IO_TEST05]にしてみました
3)[Generate Code]ボタンを押してコード生成を行う

4)LEDをチカチカさせる為のコードを記述する
 と、言っても、MPLAB XのMCC(Code Configurator)がプログラムの
 大半を自動生成してくれるので、コーディングは以下の数行となる

 int main(void)
 {
   uint8_t uiTimer;
   uint16_t uiCount;

   // initialize the device
   SYSTEM_Initialize();

   IO_TEST05_SetHigh();

   while (1)
   {
     // Add your application code
     if ( TMR1_SoftwareCounterGet() != uiTimer ) {
       // 1mSec毎に変化する
       uiTimer = TMR1_SoftwareCounterGet();
       uiCount++;
       // 1秒経過したか確認する
       if ( uiCount >= 1000 ) {
         // 出力を反転させる
         IO_TEST05_Toggle();
         uiCount = 0;
       }
     }
   }
   return -1;
 }

5)コンパイルする

6)書き込みを行う

7)LEDがチカチカすれば回路に問題無し

〔図ー1〕

f:id:Nov11:20161108232303j:plain
〔図ー2〕

f:id:Nov11:20161108232555j:plain
〔図ー3〕

f:id:Nov11:20161108232622j:plain
〔図ー4〕

f:id:Nov11:20161108232645j:plain

 

しかし、PIC32MXでMCC(Code Configurator)を使用している人はいないようです
やはり、このスペックなので、FreeRTOSのHarmonyを使用しているみたいですね
筆者も、Harmonyを使った方が良いのかなぁ~って悩んでます

 ちなみに、8ビットMCUと16ビットMCUは、以下を参照してください

nov11.hatenablog.com

nov11.hatenablog.com

 

なお、ブログの内容を参照して実行した結果に責任は負いかねますので、ご了承下さい