PICマイコンにプログラムを書き込むまで

Pocket

 1年ぶりくらいでしょうか。久しぶりにPICマイコンを使ってみようと思ったら何もかも忘れてました。久しぶりすぎてPCに開発環境すら無くなっている状況。プログラム(ソース)の書き込み方すら忘れてます。IDEからプログラム(ソース)の書き込み方だけでも備忘録として書き留めておきたいと思います。

 

 説明はPIC24F前提です。

 

環境の準備

 まずはPCに開発環境を整えます。IDE、コンパイラとその他インストーラーをダウンロードしておきます。ダウンロード先はmicrochipのページに纏まっています。

 ◆MPLAB-X IDE  :開発環境。
 ◆XC16コンパイラ:今回はPIC24Fを使用する前提ですのでXC16コンパイラをダウンロードしておきます。
     XC8       :PIC10/12/16/18  8ビットファミリ用のCコンパイラ 
   XC16       :PIC24/dsPIC    16ビットファミリ用のCコンパイラ
   XC32       :PIC32          32ビットファミリ用のC/C++コンパイラ
          使用するPICに合わせてコンパイラを準備しておきます。
 
 ◆peripheral-libraries-for-pic24:PIC24Fでperipheralライブラリを使用するときに必要です。

 ◆PICkit3 Programmer Application v3.10:PICkit3でロジアナを使用するときに使います。使わないのであれば必要ありません。

 ダウンロードした.exeをインストールしておきます。peripheralライブラリのインストール方法はこちら

 

MPLAB X IDEを起動

▼インストールしたMPLAB X IDE を起動▼

 久しぶりに起動したのですが、結構画面が変わってますね。基本的なところはあまり変わってなさそうです。

 

▼プロジェクト(ソース)を開く▼

「File」>「Open Project…」でプログラムを開きます。プロジェクトは「****.x」となっている物です。今回は過去作成したプロジェクトを開いてみました。

 

▼コンパイルなどの選択▼

 Dashboadのところの「Project prorerties」をクリック。

 

<スポンサーリンク>

 

 左の「Categories」のツリーから「conf:[default]」を選択。 「Device:」で使用するPICを選択。今回は「PIC24FJ64GB002」を選択してます。「Compiller Toolchain:」でコンパイルの種類を選択しておきます。ここでは「XC16」を選択してます。

 

 

 続いて「Categories」>「conf:[default]」>「PICKit3」を選択。「Option categories」で「Power」を選択します。PICKit3からPICへ電源供給する場合はここの「Power Target Circuit from PICKit3」にチェックを入れて、「Voltage Level」で3.375[V]を選択しておきます。使用するPICの電源電圧を選択しておきます。別電源で共有する場合はここのチェックは外しておきます。

 

 これで基本的な設定は終わりです。もっといろいろ弄っていたような覚えもありますが最低限これだけ設定しておけば書き込めました。

 

 最後にPICKit3を配線して、「Make and Program Device」クリックすれば書き込みが始まります。エラーが出なければ完了です。

 

 これだけのことでしたが思い出しながら作業していたら結構時間が掛かりました。

 

 

Pocket

<スポンサーリンク>


この投稿へのコメント

  1. 匿名希望 said on 2017-05-23 at 17:13

    arduinoを使いBLE経由でモーターを制御するやり方を教えてもらえませんか。
    モーターを制御するアプリの作成やモーターのプログラムなどを教えて頂きたいです。
    モーターは正転逆転や停止などの動作をしたいと考えており、モータードライバーはTOSHIBAの
    TA7291P使っています。
    よろしければお願いします。

    • imo said on 2017-05-24 at 19:50

      スマホ側は以前紹介したサーボモータを制御するアプリでも可能かと思います。-90から90までの数値を送信しているため、極端に言えば180通りの処理をArduino側でさせることができます。Arduino側は例えば

        if(yourservicenameCharacteristic.value()==0){
          停止処理
        }
        else(yourservicenameCharacteristic.value()>0){
          正転処理
        }
        else(yourservicenameCharacteristic.value()<0){
          逆転処理
        }
      

      このような処理をしてみてはいかがでしょうか。頑張って下さい。

      • 匿名希望 said on 2017-05-27 at 11:32

        ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL