FC2ブログ
  VagabondWorksTitle
  当Blogは個人の趣味等に関するものです。Vagabond Worksは実在の企業、組織ではありません。
  著作権等は放棄していません。文章や写真、動画の無断盗用、転用はお断りします。

 bCore関連情報はこちら⇒GitHub bCore Wiki
 埋込用ArduinoUno互換機BARONDUINO関連情報はこちら⇒GitHub BARONDUINO Wiki

bCore NKD サンプルスクリプト 02: スイッチ操作でLEDを点灯・消灯させる(IO Port In/Out)

bCoreNKDの P00-07 をIOポートの出力、P10-17 をIOポートの入力に設定し、
入力ポート側のスイッチが押されている場合に対応するLEDを点灯させる
サンプルスクリプトのプロジェクトファイル

GitHubからまとめでDownLoadできるようになっています。



bCoreNDKSample_02.bgproj

プロジェクトファイルについては説明省略


bCoreNDKSample_02_gatt.xml
GATT設定ファイル
このサンプルアプリでは、GATTは使っていません
(何のためのBLEデバイスだ?というのはさておき)
のでGATTの設定は不要ですが、省略するとbuildに通らないため、
最低限この程度記述されたXMLファイルが必要


bCoreNDKSample_02_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_02_script.bgs

スクリプト本体ファイル

6~8行目 スクリプト中で使える変数は dim で定義。4byte 32bitのみ使用できます。

12行目 event system_boot(major ,minor ,patch ,build ,ll_version ,protocol_version ,hw )
Arudinoで言うところの setup()に相当する、スクリプト実行時に最初に呼ばれる処理
Arudinoで言うところの loop()に相当する部分は無いので、イベントドリブンでスクリプトを書く必要があります。

15、18、21行目  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
      に設定しています。

23, 24行目 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のみ反映されます。

27行目 call hardware_set_soft_timer(3277,0,0)
0.1秒ごとに繰り返しタイマ割り込みを発生させる設定です。
詳細はタイマ割り込みのサンプルで解説するのでここでは省略します。
Arudinoの用に、loop()に相当する部分はBGスクリプトには無いため
タイマ割り込みでloop()に相当する処理を実装します。

33行目 event hardware_soft_timer(handle)
タイマ割り込みが発生すると実行されるイベントハンドラから呼び出される関数です。
詳細はタイマ割り込みのサンプルで解説するのでここでは省略します。

37行目 hardware_io_port_read(port, mask)(result, port, data)
各ポートの入力に設定したbitの値を取得します。 
最初の()内が引数、後ろの()内が戻り値に相当します。
port (0:P0x、1:P1x、2:P2x)
mask マスクビット、対応するbitが1のbitのみ反映されます。
result エラーコード、成功時は0
data  所得されたポートの入力データ
なお、出力に設定してあるポートの状態(出力値)を読み取ることはできなません。

39行目
P1xから取得したポートの状態をそのままP0xに反映させます。


テスト回路


sample2.png
場所の都合で取り付けてあるスイッチは2個だけです。
スイッチを押すとGNDに接続ポートが落ちるようになっています。
内蔵Pull Upを有効にしてあるため、スイッチが押されていない場合ポートはHレベルになります。
タイマ割り込みが0.1秒周期と非常に遅いため、スイッチ操作のタイミングで点灯しない場合があります。
秋月電子の 抵抗内蔵LEDを使うと、電流制限抵抗ナシで
電源ラインとIOポート間にLEDを入れるだけで済むのでとても便利です。3.3Vでも問題なく全色点灯します。
5V仕様のもの(内蔵抵抗250Ωと推定)の場合、赤LEDが最も消費電流が大きく3.3Vで6.9mAと
BLE113の仕様値を大きく超えてしまうため、12V仕様のもの(内蔵抵抗1kΩと推定)を利用して下さい。

  1. 2016/06/10(金) 10:52:26|
  2. bCoreNKDとは?
  3. | コメント:0
<<bCore NKD サンプルスクリプト 03: ソフトウェアタイマタイマ割り込みを使う(software timer) | ホーム | bCore NKD サンプルスクリプト 01: LEDを点滅させる(IO Port Output)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

検索フォーム

カテゴリ

Project: bCore (61)
bCoreとは? (4)
bDriverとは? (5)
bCore製作事例集 (5)
bCoreNKDとは? (13)
bCoreMX & bDriverMX (2)
Project: BARONDUINO (2)
Project: QT-4X "boogie" (2)
Project: B5 (1)
Project: Fab mini 4WD (1)
mini.Rock (1)
Project S-4WDS Racing (7)
S-4WDS Racingとは? (1)
S-4WDS Racing進捗 (6)
Project: uLCX2 (2)
uLCX2BLEとは? (1)
uLCX2とは? (1)
Project: LCXX (20)
LCXXとは? (1)
LCXX進捗 (19)
Project: uLCX (12)
uLCXとは? (1)
uLCX進捗 (11)
Project: Land Crawler (39)
Land Crawlerとは? (1)
Land Crawler 進捗 (19)
LC eXtreme 進捗 (19)
AAF 回顧録 (3)
イベント/TV/雑誌など (40)
販売情報 (5)
その他 (10)
Vagabond Works (2)

最新コメント

メールフォーム

名前:
メール:
件名:
本文:

月別アーカイブ

カレンダー

05 | 2023/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -