FreeRTOSのDemoにあるPIC24FJ128GA010用のFreeRTOSをベースにPIC24FJ64GA004用のFreeRTOSを構築してみました
ソースはこちらからダウンロードしました、ダウンロードしたファイルを解凍してDemo\Common と Demo\PIC24_MPLAB、Sourceディレクトリの内容を使います。
Step1.
MPLAB-Xで プロジェクト Demo\PIC24_MPLAB\RTOSDemo_PIC24_dsPIC を開きます
Step2.
Projectsのプロパティで Conf:[Default]を選択し、DeviceをPIC24FJ64GA004に変更します
Step3.
Clean and build project を実行するとエラーがたくさん出るのでエラーメッセージで最初のエラーにある
In file included from ./FreeRTOSConfig.h:73:0,
というところをクリックしてFreeRTOSConfig.hを開き
#include <p24FJ128GA010.h> → #include <p24FJ64GA004.h>に変更してから
もう一度 Clean and build project を実行するとbuildが完了します。
これでPIC24FJ64GA004で動作するFreeRTOSが出来るので次にターゲットボードに合わせてハードウェアの初期化を設定します
(FreeRTOSが使うハードウェアリソース)
FreeRTOSが使うのはタイマー割り込みです、デフォルトはport.cで下記のようにTimer 1割り込みになっています
#define configTICK_INTERRUPT_HANDLER _T1Interrupt
つまり、「Timer 1 はFreeRTOSで予約済み」なので他の用途には使えません。
(FreeRtosConfig.hの修正)
#define configTICK_RATE_HZ ( ( TickType_t ) 1000 )
これはFreeRTOSがタスクを切り替える時間です、デフォルトでは 1000Hz=1mS になっています値が大きいほど素早い応答が可能になりますがオーバーヘッドも大きくなるのでPIC24Fの性能としては1000~10000Hz(1mS~0.1mS)程度が無難でしょう。
#define configCPU_CLOCK_HZ ( ( unsigned long ) 16000000 ) /* Fosc / 2 */
こちらはターゲットボードのシステムクロックと同じになるようにします
次にMPLAB Code Configurator V3 を使ってターゲットボードに合わせたハードウェア設定をおこないます
Code configuratorの使い方についてここでは説明しません、Code Configuratorを使ってハードウェア初期化部分を生成するとプロジェクトツリーに MCC Generated Files という項目が追加されるのでmain.cを編集して初期化関数を追加します。
( main.c にコードコンフィギュレータが生成した初期化関数を追加する)
まず #include “mcc_generated_files/mcc.h” をインクルードファイル記述部に追加します
次に main()関数の最初を次のように変更します
//prvSetupHardware();
SYSTEM_Initialize();
以上でターゲットボードに合わせたハードウェア初期化部分の設定は終わりで、後は必要に応じてタスクの記述を削除・編集・追加していけばOKです。