SSブログ

PSoC 40xx で SysTick を使ってみる [PSoC]このエントリーを含むはてなブックマーク#

SysTick を使う場合の回路図

前回の記事では、 PSoC 40xx シリーズに Bootloader を導入してみました。 Bootloadable として準備したのは、 PWM を使用して LED を駆動し、 CPU をフルに使って押しボタンの状態を監視していました。 PSoC 40xx シリーズは、用意されているリソースが少ないので、このような使い方は、かなり贅沢です。 今回は、 "SysTick" と呼ばれる周期タイマを使って、 LED の駆動と押しボタンの監視を行わせます。

SysTick って何だっけ?

SysTick は、 CPUである ARM Cortex-M0 に近い場所にある周期タイマで、他の Cortex-M0 搭載プロセッサでも内蔵されています。 SysTick は、もちろん PSoC Creator からも使う事ができます。 ただし、残念な事にコンポーネントとして提供されているわけえはないので、普通のマイコンで割り込みを扱う時と同じように、すべてプログラムから制御してやる必要があります。 SysTick を使うために必要なのは、以下のステップです。

  1. SysTick 割り込みに対応する割り込みベクタに割り込みサービスルーチン (Interrupt Service Routine; ISR) を割り当てます。
  2. SysTick の周期を設定します。
  3. 割り込みを許可します。

SysTick の初期設定

これだけで、 SysTick が周期割り込みとして作用します。 それぞれのステップは、 PSoC Creator の API 関数またはマクロで定義されているので非常に簡単です。 ここでは、 CPU が 12MHz クロックで動作していることを前提として、1秒当たりの割り込み回数 SYSTICK_FREQ から1周期のクロック数 SYSTICK_PERIOD を計算させています。


割り込み周期の設定

ここで紹介するファームウェアでは、すべての処理を ISR の中で行っています。 そのため、 main 関数には無限ループのみ残っています。 CPU は、ほぼ遊んでいますので、お好きな処理を加えてやってください。

割り込み処理ルーチンに実装した二つのステートマシン

割り込み処理ルーチン

SysTick により周期的に呼び出す処理内容は、このように二つのステートマシン BootMachine と LedMachine で構成されています。


Boot 検出ステートマシン

BootMachine では、押しボタンの監視を行っています。 このステートマシンでは、押しボタンが押され続けた時間を boot_count という変数で計測していきます。 そして、 BOOT_VALIDATION で決められた長さに達したら、 API 関数 Bootloadable_Load を使って、 Bootloader を呼び出します。 BOOT_VALIDATION の長さは、2秒に設定しています。


LED 駆動ステートマシン

LedMachine では、 LED の駆動を行っています。 led_state という変数を使用して、赤を2回、緑を2回点滅させるパターンを繰り返させています。 このステートマシンの周期 LED_PERIOD は、2秒に設定しています。

Bootloadable の書き込み

いつでも開発できます

Bootloadable プロジェクトをビルドしたところ、 5856 バイトと前回のプロジェクトよりも若干小さくなりました。 理由は、深く追い求めてはいません。

Bootloadable の書き込みは、前回と同様に I2C インターフェイスを介して行います。 前回の Bootloadable を書込んでいたら、押しボタンを2秒以上押し、Bootloader を呼び出してから Bootloader Host アプリケーションで CYACD ファイルを書込みます。 前回から、 LED の点滅パターンが変化したのがわかるでしょうか。

プロジェクトアーカイブ

この記事で作成したプロジェクトは、このファイルの拡張子を "zip" に変更すると再現できるようになります。

参考文書

Using the SysTick Timer in PSoC® 4 – KBA91374
PSoC 4 で SysTick を使う方法について述べています。 コンポーネントにしてくれれば、もっとありがたいのですが。

関連文献

開発編 ARM PSoCで作るMyスペシャル・マイコン (トライアルシリーズ)

開発編 ARM PSoCで作るMyスペシャル・マイコン (トライアルシリーズ)

  • 作者: 圓山 宗智
  • 出版社/メーカー: CQ出版
  • 発売日: 2013/12/24
  • メディア: 単行本

nice!(0)  コメント(1)  トラックバック(0)  このエントリーを含むはてなブックマーク#

nice! 0

コメント 1

きぃたん

CY8CKIT-049でドキュメントの23ページの通り
http://www.cypress.com/?docID=48142
SCB_Bootloader_42XXフォルダのHEXを使うと
書き込みの時に
The flash row is not valid is not valid for the selected array.
というエラーが出る
サンプルプログラムに付属されているHEXを使うと
うまく書き込めました。
それ以外はドキュメントの通りです。
可能ならCY8CKIT-049の記事も期待しています。

by きぃたん (2014-05-20 16:54) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。