西東京市にいる組み込みおやじ-電子工作、回路設計、ファーム TIPS

このブログはビーコンの代表である菅原が、電気電子、電子工作、組み込みソフトウェアなどで、自分が苦労したところや面白い気づきなどを記事にしていきます。電子工作やマイコンに親しむ人が少しでも増えたらという思いでつづります。
やっぱり、電子工作が好きなんですよ。
<< Renesas Rx621 :FreeRTOS CS+プロジェクト移植 | main | アリババで頼んでいつ来たか >>
fstrageの処理中にリセット動作が起こる。
0

    nRF52で、外付けADCで常時サンプリングするプログラムを開発している。

    ここで 設定を変えたいがために Nordicが提供しているライブラリ FlashStrageという仕組みを使っている。

    サンプルソースを元にコーディングしたが、イレース動作か書き込み動作でリセットしてしまうと言うことが起きていた。

     

    FlashStrageは Bluetooth動作にも配慮した動作をする。ソースを参照してみると fs_eraseとかfs_store などの消去、書き込みのコマンドを発行しても即座に動作せずに、一旦キューに蓄えておいて、動作できるタイミングで順次実行しているようだ。

    海外のサイトなどを当たっても、Nordicのサイトでも特に実装上の注意書きはない。

     

    いろいろ動作のタイミングを探っていたが、ADCのアクセスのタイミングとバッティングしたときにリセット動作が起こっているらしいとわかってきた。

    ADCとnRF52は SPIのインターフェースで以下の手順で通信する。

     

    ・ADC発行のデータレディー信号を割込みにして、割り込み処理内でSPIで該当するレジスタを読み込む

    ・SPI通信終了のハンドラでデータを取得

     

    今回は測定値を保存するなどではなく設定の時だけ FlashStrageを使いたいので、以下の対策をした。

    ADC動作中はFlashStrageを発行しない。(発行を一時待つ)

    FlashStrage動作中はADCの割込みを無視する。

     

    ということでバッティングを回避する処理を入れたら、問題のリセット動作は発生しなくなった。

     

     

    JUGEMテーマ:組み込み開発

    | ビーコン菅原 | nRF5x Nordic | 06:56 | comments(0) | trackbacks(0) |









    http://blog.suga41.com/trackback/362
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
    << October 2018 >>
    + RECOMMEND
    + RECOMMEND
    + SELECTED ENTRIES
    + RECENT COMMENTS
    + RECENT TRACKBACK
    + CATEGORIES
    + ARCHIVES
    + つぶやき
    + MOBILE
    qrcode
    + LINKS
    + PROFILE