bCoreNKDの P00-07, P10-17, P20-22 19本ある全てのIOポートを出力に設定して
いわゆるLチカ(LEDを光らせる)サンプルスクリプトのプロジェクトファイル
GitHubからまとめでDownLoadできるようになっています。
bCoreNDKSample_01.bgproj プロジェクトファイルについては説明省略
bCoreNDKSample_01_gatt.xml GATT設定ファイル
このサンプルアプリでは、GATTは使っていません
(何のためのBLEデバイスだ?というのはさておき)
のでGATTの設定は不要ですが、省略するとbuildに通らないため、
最低限この程度記述されたXMLファイルが必要
bCoreNDKSample_01_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_01_script.bgs スクリプト本体ファイル
5~7行目 スクリプト中で使える変数は dim で定義。4byte 32bitのみ使用できます。
11行目 event system_boot(major ,minor ,patch ,build ,ll_version ,protocol_version ,hw )
Arudinoで言うところの setup()に相当する、スクリプト実行時に最初に呼ばれる処理
Arudinoで言うところの loop()に相当する部分は無いので、イベントドリブンでスクリプトを書く必要があります。
13~15行目 変数の初期化
18、21、24行目 call hardware_io_port_config_direction(port, direction)
各ポートの入力/出力を設定します。
port (0:P0x、1:P1x、2:P2x)
direction 1を設定したBitが 出力に、0を設定したBitが 入力 に設定されます。
全出力の場合 $FF、Px7のみ出力にする場合は $80
26~28行目 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のみ反映されます。
30行目 call hardware_set_soft_timer(3277,0,0)
0.1秒ごとに繰り返しタイマ割り込みを発生させる設定です。
詳細はタイマ割り込みのサンプルで解説するのでここでは省略します。
Arudinoの用に、loop()に相当する部分はBGスクリプトには無いため
タイマ割り込みでloop()に相当する処理を実装します。
38行目 event hardware_soft_timer(handle)
タイマ割り込みが発生すると実行されるイベントハンドラから呼び出される関数です。
詳細はタイマ割り込みのサンプルで解説するのでここでは省略します。
45~48行目
全て出力ポートに設定してあるP0x、P1x、P2xを1bitずつ0.1秒周期でカウントアップ
しながら点滅させています。
Px0が5Hz、Px1が2.5Hz、Px2が1.25Hz・・・と、上位ビットが下位ビットの半分の周期で
点滅を繰り返します。
引数に入れてある portxData は、4byteデータですが、有効なのは下位の1byteのみになります。
テスト回路 全てのIOポートにLEDを刺すのは場所が無いため。P0xにのみLEDをつけて試しています。
秋月電子の
抵抗内蔵LED を使うと、電流制限抵抗ナシで
電源ラインとIOポート間にLEDを入れるだけで済むのでとても便利です。3.3Vでも問題なく全色点灯します。
5V仕様のもの(内蔵抵抗250Ωと推定)の場合、赤LEDが最も消費電流が大きく3.3Vで6.9mAと
BLE113の仕様値を大きく超えてしまうため、12V仕様のもの(内蔵抵抗1kΩと推定)を利用して下さい。
VIDEO
2016/06/09(木) 16:46:17 |
bCoreNKDとは?
| コメント:0