Article header library 110733  6

PSoC 3 開発キット CY8CKIT-030 GPIO割込みを使ったLチカ!

GPIO割込みを使ったLチカ!

Article header l%e3%83%81%e3%82%ab4 316 140  2

今回は「MCUを使ったGPIO制御でLチカ!」をベースに、割込みの使い方を学ぶLチカ!です。SWを押すとLEDが消灯、はなすと点灯する仕様で、違いが分かる様に「MCUを使ったGPIO制御でLチカ!」とは逆の動きをさせます。

回路イメージ

PSoCのI/Oは今まで使用している通り、
 SW側:Digital Input , Drive Mode:Pull-up設定
 LED側:Digital Output設定 として使います。

SWにInterruptコンポーネントを接続し、SWを入り/切りするたびに割込みが発生。SWの状態によりLEDを点灯/消灯させます。

Article header  600 385  1

PSoC Creatorの設計

まず準備段階として「MCUを使ったGPIO制御でLチカ!」で使用した環境を準備します。

では作業をご紹介します。
■SWコンポーネントの設定変更
 SWコンポーネントのInterrupt設定を行いますので、コンポーネントをダブルクリックし設定画面を開き、
  Pins > Input > Interrupt:をBothEdges に設定します。
 設定が終了したらOKボタンを押してください。正しく設定できていればSWコンポーネントの表示が変わります。

Article header sw%e3%82%b3%e3%83%b3%e3%83%9d%e3%83%bc%e3%83%8d%e3%83%b3%e3%83%88%e3%81%ae%e8%a8%ad%e5%ae%9a%e5%a4%89%e6%9b%b4 774 486  1

■Interruptコンポーネント追加
 System > Interruptコンポーネントを追加し結線します。

Article header interruput%e3%82%b3%e3%83%b3%e3%83%9d%e3%83%bc%e3%83%8d%e3%83%b3%e3%83%88%e3%81%ae%e8%bf%bd%e5%8a%a0 774 419  1

■main()の編集
 TopDesign.cyschからmain.cタブを選択し編集作業を行います。プログラム制御をするため前回追加したコードは削除し、新たに以下のコードに書き換えて下さい。

 /*追加コード*/
 CY_ISR(sw_isr){
  SW_ClearInterrupt();
  if( SW_Read() ){
   LED_Write(1);
  } else {
   LED_Write(0);
  }
 }

 int main()
 {
  isr_1_StartEx(sw_isr); /* ←追加 */
  CYGlobalIntEnable;  /* ←追加 */
  for(;;)
  {
  }
 }

追加後、ファイルをセーブします。

Article header main%e7%b7%a8%e9%9b%86 774 542  1

■プロジェクトのビルド
 Build ->Build プロジェクト名 を実行して、プロジェクトのビルドを行って下さい。
  “---- Build Succeeded: **/**/**** **:**:** ---”
 と表示されたらBuild成功です。

Article header l%e3%83%81%e3%82%ab4 316 140  3

■書込み
 最後にDebug ->Programを実行しデバイスに書込み終了です。

 正常に書き込みが完了すると、
  Device ‘**************’ was successfully programmed
 と表示されますので確認してください。

 SWを押してLEDが消灯すればOKです。

補足情報

Pinコンポーネントのirq端子の出力の様子を下図に示します。

Article header interrupt%20status%20flag%e3%81%ae%e3%82%af%e3%83%aa%e3%82%a2 774 400  1

過去の記事をご覧になりたい方はこちら

評価キットをご購入されたい方はこちら

■評価キットはこちらから購入できます
 PSoC 3 開発キット: CY8CKIT-030

関連タグ