bCoreNKDの P00 をIOポートの出力に設定して、ソフトウェアタイマ割り込みを使って点滅させる
サンプルスクリプトのプロジェクトファイル
GitHubからまとめでDownLoadできるようになっています。
bCoreNDKSample_03.bgproj
プロジェクトファイルについては説明省略
bCoreNDKSample_03_gatt.xml
GATT設定ファイル
このサンプルアプリでは、GATTは使っていません
(何のためのBLEデバイスだ?というのはさておき)
のでGATTの設定は不要ですが、省略するとbuildに通らないため、
最低限この程度記述されたXMLファイルが必要
bCoreNDKSample_03_hardware.xml
ハード的な設定に関するXMLファイル
6行目 <sleep enable="false" /> は、通信相手がいない場合に問答無用で
BLE113がスリ-プしないために必要。
このサンプルのように、最初から通信しない場合は、スクリプトが走るとすぐにスリ-プしてしまいます。
9行目 <script enable="true" /> がないと、スクリプトが実行されません。
falseにするとスクリプトが実行されなくなります。
12~14行目 各ポートの 3ステートバッファの有効無効、プルアップ/プルダウンの設定を行います。
設定は、P0x、P1x、P2x単位で行います。個々のポート個別に設定を変更することはできません。
indexで、ポート(0:P0x、1:P1x、2:P2x)を選択。
3ステートバッファを有効にしたいビットを tristatemaskで1にします。(全て有効の場合$FF、Px7の有効の場合 $80)
pullで、プルアップ(up)かプルダウン(down)を選択
bCoreNDKSample_03_script.bgs
スクリプト本体ファイル
6行目 スクリプト中で使える変数は dim で定義。4byte 32bitのみ使用できます。
8行目 event system_boot(major ,minor ,patch ,build ,ll_version ,protocol_version ,hw )
Arudinoで言うところの setup()に相当する、スクリプト実行時に最初に呼ばれる処理
Arudinoで言うところの loop()に相当する部分は無いので、イベントドリブンでスクリプトを書く必要があります。
12~14行目 call hardware_io_port_config_direction(port, direction)
各ポートの入力/出力を設定します。
port (0:P0x、1:P1x、2:P2x)
direction 1を設定したBitが 出力に、0を設定したBitが 入力 に設定されます。
全出力の場合 $FF、Px7のみ出力にする場合は $80
ここでは、P0xを全出力 Pull Up、P1xを全入力 Pull Up、P2xを全出力 Pull Up
に設定しています。
16~18行目 call hardware_io_port_write(port, mask, data)
各ポートの出力に設定したbitの出力値を更新します。
port (0:P0x、1:P1x、2:P2x)
mask マスクビット、対応するbitが1のbitのみ反映されます。
data 出力データ、対応するbitの0/1がマスクビット1のbitのみ反映されます。
21行目 call hardware_set_soft_timer(time, handle, single_shot)
ソフトウェアタイマ割り込みを設定します。
time 割り込みが発生するカウントを設定します。1カウント=1/32768秒になるため、
0.1秒ごとに設定する場合 3277 とします。
hadle 割り込み発生時に引き渡されるhandleを設定します。
handleを変更しても設定できるソフトウェアタイマ割り込みは一つだけです。
複数設定した場合、最後に設定したソフトウェアタイマ割り込みが有効になります。
single_shot この引数が0の場合は、割り込み発生後再度カウントを開始し
繰り返しタイマ割り込みが発生します。
1の場合、割り込み発生後は新たにタイマ割り込みを設定しない
かぎり再度の割り込み発生は起こりません。
28行目 event hardware_soft_timer(handle)
タイマ割り込みが発生すると実行されるイベントハンドラから呼び出される関数です。
引数のhandleは、タイマ割り込みを設定した際のhandleが引き渡されます。
hardware_soft_timer内の処理がタイマ割り込み間隔よりも長い場合、
処理終了後に再度タイマ割り込みが発生します。
31~37行目
P10を割込みの度にトグルさせます。
出力に設定してあるポートの状態をreadすることはできないため、
トグル操作にはフラグとなる変数が必要になります。
テスト回路

LEDが5Hzで点滅します。ソフトウェアタイマ割り込み設定のtime引数を変更すると
点滅を速度を変えることができます。
- 2016/06/10(金) 14:06:17|
- bCoreNKDとは?
-
-
| コメント:0