目次
はじめに
SAADCの機能を使うサンプルコードを動かした。この記事は作業の備忘録、そしてエラー原因を共有するために作成した。
セットアップ
Nordic公式サイトを参考にして以下の作業を行った。開発環境はOSX10.15.2、SDKはnRF5 SDK v13.0.0である。
サンプルコードの取得
-
本サイトの
nRF5_SDK_13.0.0_04a0bfd.zipをクリックし、ダウンロードする。 - コンピュータ内で解凍する。
書き込みを行う
- ターミナルを起動。
-
cd /nRF5_SDK_13.0.0_04a0bfd/examples/peripheral/saadc/pca10040/blank/armgccを実行。 -
make flashを実行。
出力をシリアルモニタで見る
-
ls /dev/tty.usb*でデバイス名を確認する。
(出力例)/dev/tty.usbmodem0006827997481 - 1.で出力されたデバイス名をコピーする。
-
screen (デバイス名) 115200,cs8,-parenb,-cstopb(デバイス名はペーストする)
(入力例)
screen /dev/tty.usbmodem0006827997481 115200,cs8,-parenb,-cstopb - analog_pin2(P0.28)とGNDを導線で結ぶ。(analog _pin2(P0.28)に0Vを入力ß)
- 値を確認する。
(出力例)
APP:INFO:ADC event number: 48
APP:INFO:18
APP:INFO:18
APP:INFO:18
APP:INFO:18
APP:INFO:18 - GNDに刺さっていた導線を5Vに差し替える。(analog _pin2(P0.28)に5Vを入力)
- 値を確認する。
(出力例)
APP:INFO:SAADC HAL simple example.
APP:INFO:ADC event number: 0
APP:INFO:562
APP:INFO:563
APP:INFO:563
APP:INFO:562
APP:INFO:562
プログラムの確認
このプログラムでは基本的にスリープモードに入って電力消費を抑えている。そして、イベントが発生する場合はイベントの割り込みが発生し、スリープから離脱し、各機能の動作が実行される。
nrf _drv _power _init()
有効な電源モジュールドライバーは、電源システムからのすべての割り込みを処理。
nrf _pwr _mgmt _init()
power_managementを初期化。
saadc _init()
saadcの初期化。
saadcチャンネルの有効化。
データをSAMPLES _IN _BUFFERのサイズのバッファーに変換する。
saadc _sampling _event _init()
PPIモジュールの初期化。
timer _handlerの初期化。
400ms毎にm _timerへ時間を送る。
m _timerへのcompare channnelの割り込み禁止。
m _timerの起動。
m _ppi _channelをPPI channelに割り当てる。
timer _compare _event _addrとsaadc _sample _task _addrをm _ppi _channelに割り当てる。
saadc _sampling _event _enable()
m _ppi _channelを有効にする。
最後に
Nordic公式サイトではpin2とGND,VCCを接続するように記されている。インターネットで調べると、使用するマイコンのpin2はP0.00と接続されていると書かれている。そのため筆者は一度P0.00とGND,5Vの変化をみたのだが、出力の変化がなかった。ここではSAADCを使うため、analog_pinのpin番号2(P0.28)と接続することに注意されたい。