フォト
2019年11月
          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
無料ブログはココログ

« 4連8x8ドットLEDマトリックスを試してみる 続編(2) | トップページ | GitHub Gist掲載プログラムソースをココログに埋め込む »

2019年7月13日 (土)

豊四季タイニーBASIC Arduino機能拡張版の修正中(5) タイマー割り込み機能の追加

豊四季タイニーBASIC for Arduino機能拡張版(+ VFD MW25616L対応)の修正、
タイマー割り込み機能を追加しました。

Tamakichi/ttbasic_MW25616L
   ブランチ(随時更新) https://github.com/Tamakichi/ttbasic_MW25616L/tree/update_to_v007

   2019/10/22 追記
   ブランチ版をメインストリーム(V007) にマージして正式版として公開しました。※ブランチは削除しました。
   メインストリーム(仕様確定版)   https://github.com/Tamakichi/ttbasic_MW25616L

追加コマンド
■ タイマー割り込みの定義
  ON TIMER 周期 GOTO | GOSUB 行番号|ラベル

  周期はミリ秒単位 1 ~ 32767

■ タイマー割り込みのオン・オフ指定
  TIMER ON | OFF

サンプルプログラム

10 ON TIMER 500 GOSUB "BLINK"
20 GPIO 13,OUTPUT:D=LOW:TIMER ON
30 "LOOP":GOTO "LOOP"
40 "BLINK":OUT 13,D
50 IF D ?"Blink!"
60 D=!D
70 RETURN

サンプルプログラムでは、
10行で500ミリ秒毎に、"BLINK"ラベルのある40行のサブルーチンを呼び出すように定義しています。
20行は、LED用の13ピンを出力設定にし、TIMER ONでタイマー割り込みを開始しています。

30行は、"LOOP"ラベルの行、すなわち30行にジャンプです。ここ30行で無限ループを繰り返します。
40行~70行は、タイマー割り込みで呼び出される処理です。LEDを点滅させて、画面に"Blink!"を出力します。

実行時の出力

01_20190713203001

う~ん、
タイマー割り込みが出来れば、
「何か面白いことが出来るのでは?」と思い、組み込んだのですが
使い道が浮かびません。
まあ、イベント処理の実装はちょっと勉強になったので良しとします。

タイマー割り込みは、Timer1ライブラリを利用しました。
コンパイルにも別途、Timer1ライブラリが必要です。 (2019/07/16 本体に組み込みました)


タイマーイベントキューは最大1個としています。
呼び出される処理が、追いつかない場合はイベントは破棄されます。
ですので、呼び出される処理内でカウントして時刻を刻むような処理において、
イベントが破棄された場合は、カウント数がずれます。
回避策として、Windowsみたいに、多重のコマンドイベントが重なる場合は、
1つのイベントにまとめて回数情報を付加する等の処理等が考えられるのですが、
まあ、これで良しとします。

ピン変化イベントも追加する予定でしたが、どうしよう ...

« 4連8x8ドットLEDマトリックスを試してみる 続編(2) | トップページ | GitHub Gist掲載プログラムソースをココログに埋め込む »

日記・コラム・つぶやき」カテゴリの記事

arduino」カテゴリの記事

TinyBASIC」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« 4連8x8ドットLEDマトリックスを試してみる 続編(2) | トップページ | GitHub Gist掲載プログラムソースをココログに埋め込む »