7 years, 1 month ago.

mbedos5を利用した場合のCPUの挙動について

現象

mbedos5を利用してコードを書いた際に,1msecごとに50us程度の割り込み?が発生します. (neopixelを制御するコードを書いていて気づきました). これが仕様(threadの取り回しとか?)なのかそれ以外なのか,知見がなくわかりませんでした.

回避方法があればご教授いただければ幸いです.

再現環境

  • mbedos5
  • Redbear BLE nano v2
  • オンラインコンパイラ(ターゲットをnRF52-DK設定で利用)

再現する最も簡単なコード

simple loop

#include "mbed.h"
DigitalOut o(P0_29);

int main() {
    o = 0;
    while(true) {
        o = !o;
    }
}

波形 /media/uploads/NOBU_E753/blenano2-mbed5----.png

比較実験

  • hrm1017+mbed2:発生せず
  • bel_nano+mbed2:発生せず
  • bel_nano2+mbed2:発生せず

この結果よりmbedos5が関係しているのではと推測しています. nano2以外のnRF52は所持しておりませんので実験できておりません.

正式なやり方ではない(nano2向けをnRF52-DK向けでビルドしている) 事項をフォーラムに書くのは正しくないのかもしれません. その場合は質問の却下等していただいてかまいません.

1 Answer

6 years, 8 months ago.

Nordicが提供しているsoftdeviceがCPU時間を使用しているのではないでしょうか。 STなどのすべてのソースをユーザがコントロールできるマイコンで試してはいかがでしょうか。

mbedを利用しないのであれば、softdeviceの機能を利用しない方法がNordicのwebに出ていたと思います。