Clicker 2 for PIC32MXの基本的な使い方

Clicker 2 for PIC32MXは、PIC32MX460F512Lの32ビットPICを搭載した汎用開発ボードです。

本体には2つのmikroBUSポートがあり様々なクリックボードを装着して機能を拡張できます。

mikroBUSはマイコンボード共通のクリックボード装着用コネクタの規格でPICマイコンを初めARMマイコン用ボードなど様々な開発ボードで採用されている共通規格です。mikroBUS規格に対応したクリックボードを装着すれば様々な機能をマイコンボードに付加することができます。

Clicker 2 for PIC32MXに搭載のPIC32MX460F512Lにはあらかじめ、ブートローダープログラムが書き込まれています。よって本体のUSBポート(mini-B)とパソコンを接続すれば専用の書き込みソフトによってパソコンからHEXファイルを書き込むことができます。別途マイコンライターは必要ありません。また本Clicker 2 for PIC32MXのブートローダーはHIDデバイスとして認識されるため、デバイスドライバーが必要ないのも便利です。

Clicker 2 for PIC32MXにはリチウムポリマーバッテリー(3.7V)を接続できるコネクタと、充電や電源コントロールを行う電源制御IC、LTC3586が搭載されています。USBポートからパスパワーでリチウムポリマーバッテリーの充電ができます。携帯に便利なアプリケーションを簡単に開発できます。

※3.7Vであれば市販のものが利用可能です。端子のピンピッチは2.54mmです。オスコネクタは別途販売しております。

 

また、プログラムの開発にはPIC32マイコン用のコンパイラーmikroC PRO for PIC32やXC32などのコンパイラーを使って、PIC32マイコンとして開発が可能な他、chipKIT coreをArduino IDEにダウンロードすればArduino IDEで開発することも可能となります。Arduinoのライブラリを使って開発することもできるPIC32ボードです。Clicker 2 for PIC32MXをArduino IDEで使用する方法についてはちらで紹介しています。


■各部の名称

  1. 本体ON/OFF電源スイッチ
  2. 電源スイッチ拡張用パッド
  3. 32.768KHz発振子(RTC用)
  4. 8MHzクリスタルオシレーター
  5. PIC32MX460F512L
  6. 26コネクションパッド(左右)
  7. mikroBUSソケット 1及び2
  8. 押しボタンタクトスイッチ (RE4とRG9)
  9. 実験用LED  (RE3とRA10)
  10. LTC3586-1 USBパワーマネージメントIC
  11. 電源LEDと充電インジケーターLED
  12. マイコンリセットボタン (ブートローダーモードボタン)
  13. USBコネクタ (mini-B)
  14. リチウムポリマーバッテリーコネクター (2.54mm)
  15. ICSP用パッド

 

■ピンアサイン

※クリックして拡大表示します。

 

■電源について

電源は3系統あります。1つはUSBパスパワー給電です。本体のUSBコネクターに+5VのVBASが給電されると、その電源を利用します。なおUSBバス給電の際に(14)のコネクタにリチウムポリマーバッテリーが接続されていると自動的に充電されます。充電中は充電インジケーターLED(11)が点灯します。なお電源スイッチ(11)をOFFにしてもリチウムポリマーバッテリーが接続されている場合には充電は継続されます

2つ目はリチウムポリマーバッテリーからの給電です。(14)のコネクタに3.7V出力のリチウムポリマーバッテリーを接続すると、バッテリーが給電されます。

3つ目は外部電源からの給電です。本体の26コネクションパッド右のVSYSパッドに外部から3.3Vの電源電圧を印加します。この場合リチウムポリマーバッテリーは絶対に接続しないでください。外部給電時はリチウムポリマーバッテリーは使用できません。(同時接続厳禁

なお本体の電源電圧は3.3Vですが、LTC3586-1によってmikroBUSの5Vピンからは5Vが取り出せます。

 

■リチウムポリマーバッテリーについて

リチウムポリマーバッテリーは使い方によって時に危険な場合があります。誤った使い方、配線のショート、過負荷によってバッテリーが膨張したり発火等の危険があります。使用に際して十分な理解と安全性の確認を行った上でご使用ください。使用にあたってはこちらのようなサイトで必ずその危険性を認識の上、ご使用ください。(火災発生事例はこちら

リチウムポリマーバッテリーには3.7V出力のものをご利用ください。端子は2.54mmピッチです。充電はUSBバスパワー給電の時のみ行えます。VSYSピンからの外部給電の時は絶対にリチウムポリマーバッテリーを本体に接続しないてください

充電時の電圧は4.2V、充電電流は300mA程度となっています。

ご使用においては特に下記の点にご留意の上、その特性や危険性をよくご判断の上ご使用ください。

  • 充電は近くに燃えるものが無い安全な場所で行ってください。
  • 充電中は必ず監視してください。(異音、異臭、膨張を確認してください)
  • 1セルあたり3V以下のバッテリーを再充電すると発火する危険性があります。
  • バッテリーが膨れたら即使用を中止し、安全な場所に移動させてください。継続して充電すると爆発します。
  • バッテリーの発熱は遅れて発生する場合がありますので充電後は観察してください。
  • バッテリーに衝撃が加わった場合や損傷がある場合には使用しないでください。
  • 本製品はお客様が開発するボードです。配線ミスやショートは大変危険です。使用前に検証確認をしてください。
  • モーターを接続しているなど、外部に負荷が大きな部品を接続している場合には仕様をご確認ください。

 

■PWMジャンパー設定

mikroBUS2のPWMピンは、マイコンのRD0と接続するか、RG12と接続するかを選択できます。工場出荷時の設定ではRD0と接続されています。通常はこの設定で何ら問題ありませんが、もしRD0ピンをmikroBUS2のソケット以外で使いたい時にはここのジャンバーの設定を変更してください。

変更する場合には0オームのチップ抵抗を外して、隣の位置に半田付けして使います。

 

■USBIDピンのジャンパー設定

PIC32MX460F512LにおいてRF3ピンは、USB OTGのID detectピンです。GPIOとしても使えますでデフォルト設定ではRF3ピンはIOピンとして使えるようになっています。

もしUSB OTGを使用する場合でID detectピンとして使用したい場合には、ジャンパーピンの設定を変更する必要があります。0オームのチップ抵抗をUSBID側に半田し直して下さい。


■全回路図と基板寸法

※クリックするとPDFファイルが開きます。

 


■使用準備をする

■パソコンとの接続

USBケーブルを使用してパソコンのUSBポートと接続してください。最初に接続すると本ボードのブートローダードライバーが自動的にインストールされます。ブートローダーはUSB HIDとして認識されるため特にデバイスドライバーは必要ありません。

※接続したら電源スイッチをONにしてください。

※電源が入ると緑LEDが点灯します。

※リチウムポリマーバッテリーが接続されている場合には充電されます。インジケーターLEDを確認してください。

 

■ブートローダーソフトウエア(mikroBootloader)のインストール

ボード上のPIC32MX460F512LにHEXファイルを書き込む際に使うブートローダーのソフトウエアをパソコンにインストールします。

下記URLからmikroBootloaderをダウンロードしてください。

http://www.microtechnica.tv/support/software/mikrobootloader.zip

zipファイルとなっていますので展開します。setup.exeが展開されますので実行して画面の指示に従いインストールしてください。

 

これで、準備は完了しました。


■基本的な使い方

HEXファイルの書き込みはmikroBootloaderで行います。

 

使い方はとても簡単です。PIC32MX460F512Lに書き込まれているブートローダーはマイコンがリセットされた直後から約3秒間、ブートローダーに入る(書き込みモードに入る)時間があります。この3秒を経過するとマイコン内に書き込まれているHEXファイルが動きますのでブートローダーは動作しません。

書き込み方法は次の5ステップです。

1:本体をパソコンと接続して電源を投入します。本体のリセットボタンを1回押します。

2:ソフトウエアの”Wait for USB link”のアイコンが赤くなっている間に”Connect”ボタンを押します。

3:”Browse for HEX”ボタンを押して書き込みたいHEXファイルを選択してください。

4:”Begin uploading”ボタンを押すと数秒でプログラムの書き込みが完了します。

5:書き込み完了後、3秒程度経過してから書き込んだプログラムが動作します。

 

操作のポイントは、ボード上のリセットスイッチを押した後、3秒以内にmikroBootloaderソフトウエアの”Connect”ボタンを押すことです。このタイミングを逃すとブートローダーモードに入れません。その場合には再度やり直して下さい。

 


■チュートリアル ~mikroC PRO for PIC32でプログラム作成~

 

体験版のCコンパイラーを使って、簡単なプログラムを作って実際にボード上で動作するまでを体験します。

Clicker 2 for PIC32は別のページでご紹介しているようにArduino IDEで、Arduino互換デバイスのようにプログラムを作ることも可能です。そのような使い方をされたい場合にはこちらのページをご参照下さい。

ここでは、PIC32デバイスとしてmikroC PRO for PIC32という使いやすいCコンパイラーの体験版を使ってプログラムを作ってみます。体験版は6KBまでのコードサイズ制限がありますがその他の機能制限はありません。

mikroC PRO for PIC32が気に入ったら製品版のご購入もご検討頂ければと思います。

 

では早速mikroC PRO for PIC32でプログラムを作ってみましょう。ここではボタンを押している時だけ2つのLEDが交互に100ミリ秒間隔で点滅するプログラムを作ってみます。

 

(1)mikroC PRO for PIC32をお持ちでなければ下記URLからダウンロードしてください。

http://download.mikroe.com/setups/compilers/mikroc/pic32/mikroc-pic32-setup-v400.zip

ZIPファイルを展開してセットアップを実行してください。画面の指示に従いインストールしてください。

 

(2)インストール後mikroC PRO for PIC32を起動してください。

 

(3)新規にプロジェクトを作成します。プロジェクトでは使用するマイコンの種類やデバイスの動作周波数等を設定して新規にプログラムを作れるようにします。メニューバーの”Project”→”New Project”をクリックします。”Next”を押して進みます。

 

(4)Project Settingウインドウでは次のように入力してください。

  • Project Name:  CLICKER2_TEST
  • Project folder:   プロジェクトを新規に作成したいフォルダを指定します(日本語を含まないフォルダを指定)
  • Device name:   PIC32MX460F512L
  • Device clock:  80.000000 (MHz)

内容を確認して”Next”を押して続行します。

※動作周波数は80MHzとします。ボードには8MHzの発振子が搭載されています。この発振子を分周器で1/2にした後、PLLにて20逓倍し80MHz動作とします。

 

(5)次の画面ではそのまま”Next”をクリックします。次の画面では”Include None(Advanced)”にチェックを入れて”Finish”を押して完了します。

(6)これでソースファイルの”CLICKER2_TEST.c”というC言語のファイルが作られました。最初はmain関数しかありません。ここにプログラムを記述していきます。今回は左タクトスイッチ(RE4)を押している時のみ、2つのLEDが100ミリ秒間隔で交互に点滅するプログラムを作ります。下記のプログラムを参考にプログラムを記述してください。

 


sbit LD1 at LATE3_bit;
sbit LD2 at LATA10_bit;
sbit LD1_Direction at TRISE3_bit;
sbit LD2_Direction at TRISA10_bit;

sbit SW1 at RE4_bit;
sbit SW1_Direction at TRISE4_bit;

void main() {
    AD1PCFG = 0xFFFF;
    JTAGEN_bit = 0;
    LD1_Direction = 0;
    LD2_Direction = 0;
    SW1_Direction = 1;
    
    while(1){
    
        if(SW1==0){
            LD1 = 0;
            LD2 = 1;
            delay_ms(100);
            LD1 = 1;
            LD2 = 0;
            delay_ms(100);
        }
        LD1 = 0;
        LD2 = 0;
    }
}

 

とても分かりやすいプログラムです。

最初の sbit は文字列にビットを割り当てるタイプです。LED1はLD1という名前でPORTEのビット3に割り当てています。PIC32シリーズではポートの出力はLATxレジスタに値を代入します。該当ビットが1でHに、0でL出力となります。一方で、入力ピンとしてピンの状態を読み取りたい場合にはPORTxレジスタを使います。

LATE3_bit という書き方はLATEレジスタのビット3を示しています。

LD1_Direction という文字列にピンの入出力方向を設定するTRISxレジスタのビットを割り当てています。TRISxレジスタは該当ビットが1で入力ピンに、0で出力ピンとなります。TRISE3_bit はTRISEレジスタのビット3ということになります。

main関数では最初に全ピンをデジタルIOピンとして使用できるようにAD1PCFGレジスタに0xFFFFを代入しています。ADコンバーターを使う場合にはこのレジスタをいじる必要がありますのが、すべてのピンをデジタルIOピンとして使いたい場合には、とにかくプログラムの先頭で0xFFFFを代入すればよい、と考えておきます。

JTAGENレジスタはJTAGを使用するかどうかの設定レジスタです。有効になっていると割り当てられているピンが使えませんのでここでは無効にしています。

入出力方向の設定値を代入しています。LD1_Direction = 0 はLD1のピン、すなわちPORTEのビット3を出力としています。同様にしてタクトスイッチについては入力ピンとしています。

本Clicker 2 for PIC32MXボードの2つのタクトスイッチはアクティブローです。ボタンを押していない時は常にHレベル、ボタンを押した時はLレベルです。よって、if文の条件分岐で条件式にSW1がLレベルの時を判定しています。

LD1 = 0 でLEDは消灯します。逆に1を代入すると点灯します。

delay_ms(100) は遅延関数です。引数はミリ秒単位です。ここでは0.1秒としています。

 

(7)続いて、コンフィギュレーションビットの設定をします。コンフィギュレーションビットとはPICマイコンのハードウエアに関する基本的な動作等について設定する項目で、この設定が正しくないとプログラムが正しくてもプログラムが動きません。

本例では、マイコンを80MHzで動作させます。ボードには8MHzのクリスタルが実装されています。このクロックを分周器で1/2にして4MHzとし、PLLという逓倍回路に入力します。PLLで20逓倍すると80MHzとなります。そういった設定をするわけです。

設定は細かく、色々と設定できますのがここでは予め設定値が登録されたファイルを読み込んでコンフィギュレーションビットの設定を完了させましょう。

メニューバーの”Project”→”Edit Project”をクリックします。

 

(8)ウインドウが表示されたら右側にある”Load Scheme”ボタンを押します。

通常は既に登録されているファイル一覧が表示されます。この中から、”P32MX460F512L_PLL_8_to_80MHz.cfgsch”ファイルを選択して開いて下さい。(似たようなファイルがあるので間違えないようにしてください。)

 

(9)これでコンフィギュレーションビットの設定が完了しました。”OK”ボタンを押して完了します。

 

(10)作ったプログラムをコンパイルしてHEXファイルを作りましょう。ツールバーの”Build”ボタンを押すか、メニューバーの”Build”→”Build”でビルドしてください。画面下のMessageウインドウに状態が表示されます。

(11)下図のように”Finished successfully”と表示されれば成功です。エラーが表示された場合には間違いがないかよくプログラムを確認してください。

(12)mikroBootloaderでHEXファイルをボードに書き込んでみましょう。

mikroC PRO for PIC32はmikroBootloaderが直接呼び出せます。”Tools”→”USB HID Bootloader”をクリックして起動させてください。

 

(13)起動したら、Clicker 2 for PIC32MXボードのリセットスイッチを1回押します。

するとmikroBootloaderソフトウエアの “1 Wait for USB link “の所にあるUSBマークが赤くなります。その間に(リセット直後から3秒間)にmikroBootloaderソフトウエアの “Connect”ボタンを押して下さい。

ボードがブートローダーモードに入れると先ほどのボタンが”Disconnected”という表示になり、USBマークが赤いままになります。また、History Windowに”Connected”と表示されます。

※タイミングがずれると失敗します。その場合にはリセットからやり直して下さい。

 

(14)”Browse for HEX”ボタンを押して、コンパイルしたHEXファイルを指定します。HEXファイルはプロジェクトを作成したフォルダ内に生成されています。

 

(15)”Begin uploading”ボタンを押して下さい。アップロードが始まります。完了すると、”Restarting MCU…”というメッセージが表示されますのでOKボタンを押して完了します。

 

(16)プログラムは3秒後から動作します。3秒程度経過したら、RE4のタクトスイッチを押してみて下さい。スイッチを押している間LEDが交互に点滅することが確認できます。

 

 

 

wpmaster

chipKIT coreにより Arduino IDEで開発する方法

chipKIT coreを使用することにより、Arduino IDEでArduinoと同じ方法でプログラムを作ることが可能となります。

基本的にはPIC32MXなのでmikroC PRO for PIC32等のPIC32用コンパイラを使って開発しますが、chipKITの導入で現在人気のあるArduino IDEでスケッチをつくるのと同じ方法でプログラムを作成してボードに書き込むことができます。


■Arduino IDEでchipKIT coreを使えるようにする

1.Arduino IDEを公式サイトからダウンロードしてインストールします。

https://www.arduino.cc/en/Main/Software

※web editionではなくダウンロードして利用するIDEを選択してダウンロードしてください。

 

2.Arduion IDEを起動し、”ファイル”→”環境設定”をクリックします。

 

3.”追加のボードマネージャのURL”と書かれた所に次のURLをコピーして貼り付け、OKボタンを押します。

https://github.com/chipKIT32/chipKIT-core/raw/master/package_chipkit_index.json

 

4.”ツール”→”ボード”→”ボードマネージャ”の順でクリックします。

 

5.ボードマネージャが表示されたら”検索をフィルタ・・”と書かれた所に chipkit と入力して検索します。

 

6.クリックして選択すると”インストール”というボタンが表示されますので、クリックしてインストールします。

7.”ツール”→”ボード”で使えるボード一覧が選択できます。この中に、上記で正しくchipKIT coreがインストールされると下図の通り”MikroElektronika Clicker 2″が選択できますので、これを選択します。

選択できたら、これで使えるようになりました。

 


■最初の一歩 ~LEDを点滅させる~

まずは、簡単に使い方を試してみます。最初にLチカ(LED点滅)を試してみます。

書式はArduinoと全く同じです。Clicker2 for PIC32MXには2つのLEDと2つのタクトスイッチが実装されています。このLEDとスイッチを利用してみます。最初はLEDの点滅だけを試してみましょう。

LEDは”LD1″がRE3に、”LD2″がRA10に接続されています。PICの場合ピン名はRE3やPORTE.B3などと「ポート名+ビット」で表現しますが、Arduino IDE内では番号で記述します。どのピンが何番なのかは対応表がありますので、こちらをご参照ください。PDF版はこちらです。

上の図を見ていただくと分かるとおり、LED1は85、LED2は86となっています。よってこの番号を指定することになります。

次のようにスケッチを記述してみましょう。


const int LED1 = 85; 
const int LED2 = 86;

void setup() {

  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
     
}

void loop() {

  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, LOW);
  delay(100); 
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, HIGH);
  delay(100); 

}

 

LED1とLED2を交互に100ミリ秒間隔で点滅させる内容です。

では、コンパイルしてボードにプログラムを書き込みましょう。パソコンにClicker2 for PIC32MXを接続してください。初回接続時は、デバイスドライバーがインストールされますので、インストールを確認してから次にすすんでください。

Clicker2 for PIC32MXのブートローダー(マイコンにプログラムをダウンロードするファームウエア)は、あらかじめClicker2 for PIC32MXのPIC32MX460F512Lに書き込まれています。またこのブートローダーは、USB HIDデバイスとして認識されるため、別途デバイスドライバーを用意する必要はありません。自動的にインストールされます。

 

プログラムが正しいことを確認したら、”マイコンボードに書き込む”ボタンを1回押してください。

スケッチがコンパイルされます。

その後、下部のメッセージ欄に「*** Enter programming mode now. ***」と表示されます。この表示が出たら3秒以内にClicker2 for PIC32MXボードのリセットスイッチ(赤いタクトスイッチ)を1回押してください。

これで自動的にブートローダーモードに入り、今コンパイルしたスケッチがマイコンにダウンロードされます。

書き込みが正しく実行されると下図のようにフラッシュメモリーの書き込みがdone、ベリファイがdoneになります。プログラムが正しければ、ボード上でプログラムが動作します。(書き込み終了からプログラム動作開始まで3秒程度かかります。)

ボード上のLED1とLED2が交互に点灯していることを確認してください。

これで最初のプログラム作成は完了です。


■もう1つスケッチを試してみる ~ボタン入力と点滅させる~

ここでは、タクトスイッチを使ったスケッチを記述してみます。

変数に値を代入して点滅時間を変更する内容も確認してみてください。

 


const int LED1 = 85; 
const int LED2 = 86;
const int SW1 = 87;
const int SW2 = 88;

int SW1_State = 0;
int SW2_State = 0;

unsigned long milsec = 100;

void setup() {

  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(SW1, INPUT);
  pinMode(SW2, INPUT);
     
}

void loop() {
  SW1_State = digitalRead(SW1);
  SW2_State = digitalRead(SW2);
  
  if(SW1_State == LOW){
    milsec = 100;
  }
  if(SW2_State == LOW){
    milsec = 1000;
  }

  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, LOW);
  delay(milsec); 
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, HIGH);
  delay(milsec); 

}

 

スイッチは、2つあり片方は87番、もう一方は88番です。よって最初にその内容を定数として記述してあります。

このスイッチはアクティブローです。スイッチを押していない時はHレベル、押したときがLレベルになります。

プログラムの内容は最初プログラムは2つのLEDが100ミリ秒間隔で交互に点滅しています。左型のスイッチ(87)を押すとそのまま100ミリ秒間隔で点滅します。右側のスイッチ(88)を押すと点滅する間隔が1秒間隔となります。再度左のスイッチを押すと100ミリ秒間隔となります。

 

そのほか、Arduinoの様々な命令が使えますので、Arduino IDEで作るPIC32MXの世界をお楽しみください。

 


■補足情報(適宜修正いたします)

バッテリーの電圧を読み取る場合の注意点です。Clicker2回路図を見ると、BATTERY VOLTAGEピンを読み取る前にBATT SENSE ENABLEピンをローに設定する必要があることがわかります。 読み取り後にBATT SENSE ENABLEをハイに戻すことをお勧めします。これは、センシング抵抗を介したバッテリの放電を防ぎます。

 

 

wpmaster