ModusToolbox™を使おう [プロジェクト作成編]


ModusToolbox™を初めて使用する組込ソフトウェア技術者に ModusToolbox™の基本的な機能の使用方法を説明します。
今回は ModusToolbox™を使用して新規にプロジェクトを作成し、PWM で LEDを点灯させるプログラミング方法を説明します。
事前準備
使用環境
ソフトウェア: ModusToolbox™
評価基板: CY8CKIT-062-BLE
ModusToolbox™のバージョンによっては表示が資料と異なる場合がありますことをあらかじめご了承ください。
作業フォルダについて
まず作業するフォルダですが、基本的には場所、名称とも自由ですが、なるべくデバイスのルートフォルダに近い場所で名称にはスペースを含まない半角英数字をおすすめします。
今回の例では、 C:¥ModusToolbox フォルダ以下に“workspace”というフォルダを作成して( C:¥ModusToolbox¥workspace ) 使用しています。
ModusToolbox™ワークフロー
ModusToolbox™での標準的な開発ワークフローは以下のようになります。
※コンポーネントの設定では、 ペリフェラルを GUI で簡単に設定できるツールを利用できます。Device Configurator の他に CAPSENSE™を簡単に設定できる CAPSENSE™ Configurator や Bluetooth® を簡単に設定できる Bluetooth Configurator などがあります。
プロジェクトの作成
ModusToolbbox™でプロジェクトを新規に作成します。
① ModusToolbox™を起動します。
Windows メニューから Eclipse IDE for Modus Toolbox を選びます。
② クイックパネルから New Applicationを選択して、Project Creator を起動します。
③ Project Creator で以下を選択して、空のプロジェクトを作成します。
・PSoC 6 BSPs:CY8CKIT-062-BLE
・Template Application:Empty App
コンポーネントの設定
ここで、LED に接続されている Pin と PWM の設定を行います。
④ Project Explorer の Empty_App(③で入力した任意のプロジェクト名)を選択し、
⑤ クイックパネルから Device Configurator を起動します。
LEDピンの設定
ポート P0[3] を LED 用の出力ピン として設定します。Device Configurator の Pins タブを開きます。
⑥ Port0のP0[3]にチェックを入れ、 Name を「LED」とします。(チェックされるとPinがアサインされます)
⑦ 右側のParametersにある Drive Mode は「Strong Drive, Input buffer off」を選択します。
⑧ LED (負論理)のドライブに使用しますので、初期値 ( Initial drive state ) はHigh (1)に設定してください。
⑨ 右側の Parameters にある Digital Output の Value はプルダウンメニューから
TCPWM[0] 32bit Counter 1 pwm_n
を選択します。
これは指定した PWM の出力先を P0[3] に設定したことになります。
PWMの設定
Peripherals タブを選択し、TCPWM(Timer Counter PWM)を PWM として設定します。
⑩ LED の Pin 出力で選んだ TCPWM[0] 32bit Counter 1 をチェックします。
⑪ 選択ウィンドウが表示されますので、PWM-1.0を選びます。
⑫ Name をPWMと記入します。
Device Configuratorの右側にあるTCPWM[0] 32-bitCounter1を設定します。
⑬入力されるクロック信号Clock Signalは16 bit Divider 0 clkを選択します。
⑭ 入力が完了したら Device Configurator の設定を File ⇒ Save します。
ソースコードの記述
main.c ファイルの記述
main()関数を以下のように記述します。赤字が追加のプログラムです。
int main(void)
{
cy_rslt_t result;
/* Initialize the device and board peripherals */
result = cybsp_init() ;
if (result != CY_RSLT_SUCCESS)
{
CY_ASSERT(0);
}
__enable_irq(); /* Enable global interrupts. */
Cy_TCPWM_PWM_Init(PWM_HW, PWM_NUM, &PWM_config);
Cy_TCPWM_PWM_Enable(PWM_HW, PWM_NUM);
Cy_TCPWM_TriggerStart(PWM_HW, PWM_MASK);
for(;;)
{
/* Place your application code here. */
}
}
Cy_TCPWM_TriggerStart() ; の行の後にCy_TCPWM_PWM_SetCompare0(PWM_HW, PWM_NUM,値) ;という行を追加して値を 0 から 1000 (Periodの値) の範囲で変化させると LED の明るさを変えることができます。
ビルド/プログラム
ここでは、ビルドしてプログラム(デバイスへ書き込みを行い実行)を行います。
⑭ ビルドしてプログラムします。
クイックパネルのプログラムを選択します。
※クイックパネルの Program は基本的に書込みを行うためのものですが、プロジェクトの構成ファイルに更新があった場合には自動的にビルドも行います。従って、結果的にビルドとプログラムの両方が行われます。また、書込み後にデバイスを停止するような指示を行わないため、結果的にアプリケーションの実行が始まります。もし、意図しないアプリケーションの実行を止めたい場合には Debug を選択してください。
ビルドに問題がなければ、引き続きアプリケーションが PSoC™にプログラムされ、その進行状況が以下のように表示されます。
プログラム(書込み)が終了すると、アプリケーションが実行されて LED が光ります。
このプログラムは main() 関数内に Cy_TCPWM_PWM_SetCompare0 関数を追加して周期を変更して LED の輝度を変えることができます。詳細は先に説明しておりますmain.c ファイルの記述を参照してください。
担当エンジニアからの一言
今回は、丸文で行っておりますModusToolbox™のワークショップのラボから、新規にプロジェクト、コードを作成する方法を説明しました。
サンプルコードは、各種用意されており、それらを利用して所望のプログラムを作成することもできます。丸文のHandsOnセミナでは、タイマ、DMA、UARTを使ったプログラミングも実施しております。
その他すべての名称は、それぞれの所有者に帰属します。