前回からの続きです。
このテーマを最初からご覧になる場合はこちらからどうぞ。
雛形プロジェクトの作成
今回のTOPPERS/ASP PIC24F版では、OSで使用するタイマーやデバッグ出力用のシリアル通信などのデバイスドライバをMicrochip社のMPLAB Code Configurator(MCC)で吐き出したものをそのまま利用しています。
MCCは、ターゲットのクロックの設定やピンの割り付けなどの作業をGUIで簡単に設定するツールです。
「MPLAB X IDE」上で動作するものであり、前々回「MPLAB X IDE」をインストールした時に一緒にインストール済みです。
これを使用して、必要なデバイスドライバやミドルウェアをソースコードとして吐き出させるために、今回のターゲットである「Explorer 16/32 Development Kit」用の雛形プロジェクトを作成します。
とはいえ、今回これは必須の作業ではありません。
かつて、Microchip社のこの手の設定ツールで出力させたソースコードには、再配布に厳しいライセンスが設定されてました。
しかしながら、これが最近大幅に緩和され、自由に再配布しても問題ないライセンスとなりました。
したがって、このブログで配布しているTOPPERS/ASPのソースコードの中に、これらのデバイスドライバも含まれています。
その証拠、前回ちゃんとビルド通りましたよね?
なので、単純に「Explorer 16/32 Development Kit」でTOPPERS/ASPを動かしたいだけなら、今回の記事の作業は必要ありません。
ただ、もし「Explorer 16/32 Development Kit」でTOPPERS/ASPがサンプルプログラムまで動作した次の段階として、他のデバイスドライバが必要(I2CとかSPIとかね…)だとか、PIC24Fを積んだ別のボードにTOPPERS/ASPを動かす必要が出てきた時のために、MCCの使い方を知っておいた方が良いと思います。
何より、色々なベンダーのマイコンを扱っていると、この手のツールの使い方は全部似て非なるものなので、すぐに忘れちゃうので、自分のためにメモを残しておこうかと…。
では、早速作業です。
まずは「MPLAB X IDE」を起動して下さい。
画面上部の「File」、「New Project...」メニューを順にクリックしていきます。
以下のような「New Project」ダイアログが表示されます。
ここから「Categories」リストから「Microchip Embedded」を、「Projects」のリストから「Application Project(s)」をそれぞれ選択して、ダイアログ下方の「Next >」ボタンをクリックしてください。
以下の画面では「Family」コンボボックスで「16-bit MCUs (PIC24)」を「Device」コンボボックスで「PIC24FJ1024GB610」をそれぞれ選択し、ダイアログ下方の「Next >」ボタンをクリックします。
以下の画面では、インストールの仕方によっては複数の項目がリストされているかもしれませんが、ここでは「XC16 (vX.XX)[C:\Program Files\Microchip\xc16\vX.XX\bin]」を選択状態にして、ダイアログ下方の「Next >」ボタンをクリックします。
以下の画面では「Project Name」の右側のテキストボックスにプロジェクト名を入力します。
適当に「hinagata」とかで良いでしょう。
入力して「Next >」ボタンをクリック。
すると「New Project」ダイアログは閉じられ「MPLAB X IDE」のメインビューは以下のような表示が現れます。
もし、このページの右下に「Finish」ボタンが押せるような状態となっていたら、これをクリックします。
しばらく待っていると、以下の画面に切り替わります。
ここからGUIで今回のターゲットである「Explorer 16/32 Development Kit」で動くソフトウェアを作るために様々な設定をしていきます。
まずは(多分、最初に開いていると思われる…)「System Module」から設定して行きましょう。
「System Module」タブの更に下の「Easy Setup」タブから…。
デフォルトで「FRC Oscillator」のところを「Primary Oscillator」に変更です。
そのすぐ左の周波数設定をデフォルトで「8000000 Hz」のところを「32000000 Hz」に変更。
少し下にスクロールして「Use Secondary Osillator」チェックボックスを✅️に。
さらに下へスクロールして「Emulatoe Pin Placement」コンボボックスをデフォルトで「Communicate on PGEC1 and PGED1」のところを「Communicate on PGEC2 and PGED2」に変更。
「System Module」タブの更に下、現在の「Easy Setup」タブから「Registers」タブに切り替えて、それからちょっと下へスクロール…。
「FDEVOPT1」レジスタの「ALTVREF」ビットをデフォルトで「VREF+ and CVREF+ on RA10, VREF- and CVREF- on RA9」のところを「VREF+ and CVREF+ on RB0, VREF- and CVREF- on RB1」に変更。
下にスクロールして…。
「FOSC」レジスタの「KCKSM」ビットをデフォルトで「Both Clock switching and Fail-safe Clock Monitor are disabled」のところを「Clock switching is enabled, Fail-safe Clock Monitor are disabled」に変更。
次は「FOSCSEL」レジスタ。
「PLLMODE」ビットをデフォルトで「No PLL used; PLLEN bit is not available」のところを「96 MHz PLL (8 MHz input)」に変更。
まだまだ…。
「FPOR」レジスタの「LPCFG」ビットをデフォルトで「No Retention Sleep」のところを「Retention Sleep controlled by RETEN」に変更。
お次は「CLKDIV」レジスタの「RCDIV」ビットをデフォルトで「Primary Oscillator」のところを「Primary Oscillator with PLL Module」に変更。
そろそろ飽きてきた…。
「OSCCON」レジスタの「NOSC」ビットをデフォルトで「Fast RC Oscillator」のところを「Primary Oscillator with PLL Module」に変更。
これで「System Module」に関して「は」設定終了です。
…つーことは、まだやんなきゃならないことがあります。
作業してピンと来た方も多いと思いますが、ここまでの設定は基本的なクロック設定だったり、デバッグピンの選択だったり…マイコンの基本的なコンフィグレーションに過ぎません。
TOPPERS/ASPを動かすためには、更にいくつかの設定が必要です。
例えば、OSが使用するタイマーとか、デバッグ用のシリアル通信ポートなどのペリフェラルです。
まずは、タイマーの設定を行いましょう。
これには「Resource Management [MCC]」タブを開く必要があります。
「MPLAB X IDE」の左側にタブがありますので、それをクリックすると開くことができます。
この「Resource Management [MCC]」タブの下方には「Device Resources」というリストがあります。
ここには、追加可能な様々なペリフェラルが並んでいます。
アルファベット順にソートされているのでタイマーは下の方にありますね。
「TMR1」の左側の「+」マークをクリックしましょう。
すると「Resource Management [MCC]」タブの上方の「Project Resources」リストに「TMR1」が追加され、メインビューには「TMR1」の設定画面が開きます。
今度は、コイツの設定をしないといけません。
まあ「System Module」の時ほど複雑じゃないですよ?
「TMR1」タブの更に下の「Easy Setup」タブから…。
「Prescaler」は、デフォルトで「1:1」のところを「1:8」に変更します。
次に「Period Count」のテキストボックスに「0x4E1F」と入力します。
(このとき「Timer Period」のテキストボックスが赤く点滅したりしますが、気にしなくていいです。)
同時に「Enable Timer Interrupt」チェックボックスを✅️にしておきましょう。
最後に、シリアル通信ポートの設定を行いましょう。
(「Foundation Service~云々」じゃない方。)
「Project Resources」リストに「UART1」が追加され、メインビューには「UART1」の設定画面が開きます。
「UART1」タブの更に下の「Easy Setup」タブから…。
ここは「Enable UART Interrupt」チェックボックスを✅️するだけでOKです。
ホント、最後の最後。
シリアル通信ポートを追加したので、これが使うマイコンのピンを設定してやる必要があります。
これには「Pin Manager: Grid Vier」タブを開く必要があります。
「MPLAB X IDE」の最下方にタブがありますので、それをクリックすると開くことができます。
「Pin Manager: Grid Vier」が開いたら「UART1」モジュールが出てくるまでスクロールし「U1RX」の行と「Port F」の「4」の列が交わるグリッドをクリックします。
グリッドの背景が緑色になり、鍵のマークを施錠状態にすればOKです。
同様に「U1TX」の行と「Port F」の「5」の列が交わるグリッドもクリックします。
これで、シリアル通信ポートのピン設定は完了です。
さて、これで「Explorer 16/32 Development Kit」でTOPPERS/ASPを動かすための全ての設定が完了しました。
今まで行った設定内容を盛り込んだデバイスドライバやミドルウェアをソースコードとして吐き出させます。
「Project Resources」リストの上方にある「Genarate」ボタンをクリックしましょう。
この記事の通りに作業いただいた場合は、以下のパスにソースコードを含む「mcc_generated_files」というディレクトリが出力されます。
C:\Users\<ユーザー名>\MPLABXProjects\hinagata.X
一方、今回の内容と同じ「mcc_generated_files」がTOPPERS/ASPのディレクトリの中に元々存在します。
C:\cygwin64\home\<ユーザー名>\asp_pic24f_gcc\target\explorer1632_db_gcc
冒頭にお伝えした通り、今回の記事の作業は必ずしも行っていただく必要はありませんでした。
しかし、TOPPERS/ASPが動いた後、そこでアプリケーションを作ろうとした時に、新しいペリフェラルを使いたいケースが必ず出てきます。
そういう時には、今回の記事の内容を応用していただいて、雛形プロジェクトを作ってソースコードを生成してください。
今回はタイマーとシリアル通信ポートだけでしたが、他のペリフェラルも大体同じ手順で設定することができます。
こうして新しく生成した「mcc_generated_files」を元々の「mcc_generated_files」に上書きすれば、追加したペリフェラルをTOPPERS/ASP上で使うことができますよ。
さて、次回はTOPPERS/ASPを実機に書き込んで、デバッグを行ってみましょう。
ブログも、もうちょっと頻繁に更新できるくらいの生活の余裕が欲しいです…。
<続く>