STM32Primer2をBARE-METALで使ってみる2 -Systickタイマと電源制御-

前回は一番基本的なLEDの点滅を行いました。点滅だけなので、STM32 Primer2の
バッテリーの制御(電源OFF)ができません。これから先いちいちUSBケーブルを抜き差し
するのは不便なので今回は電源制御を行います。


電源の制御にあたって、STM32(というかCortex-M3)に搭載されているSystickタイマ
を利用し、定期的にSWポートをスキャンしてある条件を満たしていれば電源をOFFに
することにします。これはCircleOSと同じ仕様ですね。

具体的には1mSecごとにCenterキー(PA8)を走査して5000mSecの間連続してHi
レベルにあったときにSHUTDOWN(PC13)をHiレベルにしてFETスイッチをOFFに
します。4入力キーの定義も行っていますが、今回は使うのはまだCENTER
キーだけです。

un
↑4+1キー入力と電源制御(SHUTDOWN)周辺

またRLINKのフラッシュの方法も少し工夫しました。RFlasher7でちんたらやってた
ら非常に煩わしいので、OpenOCDを使ってた時よろしくmake programでコマンドラ
インのフラッシュライタを呼び出し、バッチ処理しています。これでOpenOCD使って
た頃とまったく変わらない操作性になりました。やっぱこっちのスタイルの方がい
いですね〜♥もちろんRLINKのデバイスドライバはWinUSBの方で!

un
↑OpenOCDのフラッシュプログラムの処理をRLINKに置き換える


土台が整ったので、ここから先は駆け足になると思います。同じ事やってても何も
身につかないのは自覚してるので浅く広く早くでやっていくつもりです。
一応ねむいさんの基本スタンスは…
●無償で公開されてるライブラリ・プログラムは極力有り難く利用させてもらう。
●↑のことした場合は"ネットで見つけた"とか書かずに公開元のルールのもと引
 用先をブログやソース内で明示させてもらう。
●使わせてもらう前にざっとでいいからコードを眺めて流れを把握する。
●ここは自分でやらないとだめだ!って部分は自分で調べてフルスクラッチで書く。
●真似てやって壊れても潰れても燃えても泣かない(これ重要)。一度壊したけど。
●他の方がされていることに過度に干渉しない(これ重要)
この辺虹裏内での立ち回りと全く同じなわけですが、気をつけます。

Comments

ねむいさんこんにちは。
ブログ記事、参考させていただいてます。私も人様の成果を拝借しているくちですので(もちろん自己責任で)、FreeRTOSがPrimer2に移植できた暁は使わせてください!
CircleOSはリアルタイム処理に必要なタスク管理がいまいちと思え、リアルタイムOSを試してみたいと思っている日々でした。

Todotani様

はじめまして、ねむいです。

実はすでにstm32circle.comにFreeRTOSのデモが上がっていたりします(泣)。
私は見えなかったことにして移植の準備をちゃくちゃくと進めています。

実際にいじってみると電源周りが弱かったり開発上の制約いろいろ受けたり
するSTM32 Primer2ですが、この際元が取れるまでしっかりと遊び倒ましょう。

> 実はすでにstm32circle.comにFreeRTOSのデモが上がっていたりします(泣)。

確かにありますね。気がつかなかった。ただ、demoはLEDチカチカだけで、shutdownやバッテリー監視というPrimer2に最低限必要な機能がないため、この部分は開拓の余地ありかと。

実は、FreeRTOS demoを動かしてからCircleOSに戻した際に、U17を飛ばしてしまいました(涙)。。。恐らく、USBコネクターの抜き差しの際に問題が発生した模様。自分もLDOの交換に挑戦です。

Todotani様

こんばんは、ねむいです。

FETスイッチがONになってる状態でUSBコネクタでPCと接続すると、
元から電圧かかってる所にさらに過渡電圧が加算されることになるので
確かに一番危険な状態になっちゃいます。

あとバッドノウハウになるのであまり声を大にして言うことはできま
せんが、これから先もSTM32 Primer2使い倒すつもりの方はまだ生き
てるやつも早急にLDOに変えるべきですね。もちろんLDOに変える時は
二の舞を踏まないためにも十分吟味して選定してください。

  • ねむい
  • 2009/11/09 10:50 PM

×二の舞を踏まないためにも
○二の舞にならないためにも
でしたねorz

ねむい様

質問させて下さい。

デバック環境は何を使用しているでしょうか?

  • takaki
  • 2010/02/03 11:44 AM

takaki様

はじめまして、ねむいです。

ご質問の件、STM32 Primer2の範囲内の事と判断してお答えしますと、STM32Primer2
上での開発は"ビルド環境"のみで行っています。"デバッグ環境"は用意して
いません。ビルドインされてるRLinkはSWD接続のフラッシュプログラマとし
てしか使用していないですね。

JtagKey+OpenOCD+Insightで動き追ったらこんなのすぐわかるのに〜…って
歯痒い思いをする局面は何度も何度もありましたが…

Post a Comment








Go to top of page