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

« 中華製Arduino NanoのArduino Uno化を行う | トップページ | Arduino用スケッチのサブルーチンをサブディレクトリに配置する »

2018年3月18日 (日)

豊四季タイニーBASIC for Arduino機能拡張版 作成しました

取り組んでした「豊四季タイニーBASIC for MW25616L実験用表示モジュール」の作成を
もう少し汎用化して、Arduino Uno用にしました。

MW25616L実験用表示モジュールの対応はオプション機能としました。
(ttconfig.hの機能選択を修正すること対応)

01

  公開サイト
    豊四季タイニーBASIC for Arduino機能拡張版(+ VFD MW25616L対応)
    https://github.com/Tamakichi/ttbasic_MW25616L

  このプログラムはTetsuya Suzuki氏の   豊四季タイニーBASICをベースにしています。

   オリジナル版
     配布サイト https://github.com/vintagechips/ttbasic_arduino

  オリジナル版からの主な機能強化
    ・プログラム領域を256バイトから1024に拡張
    ・プログラムのセーブ・ロードに対応(内部EEPROM、I2C EEPROM)
    ・スクリーン制御(LOCATE、COLOR、ATTR、CLS)
    ・全角文字対応(シフトJISコード)
    ・ラインエディタ機能強化(カーソル移動、指定行の内容表示等)
    ・2進数、16進数表記サポート(`10101111、$ABCD)
    ・演算子の追加(ビットシフト演算や論理積・和など)
    ・IF文でELSEが利用出来る
    ・GOTO、GOSUBでラベルが使える(GOTO "LOOP")
    ・GPIO対応(デジタル入出力、アナログ入力、PWM、I2C、SHIFTIN、SHIFTOUT、PULSEIN)
    ・プログラム編集コマンドの追加(RENUM、DELETE)
    ・リセット時プログラム自動起動対応
    ・I2C RTC DS3231対応(DATE、DETDATE、GETDATE、SETDATE)

  BASIC言語のプログラム開発はターミナル上で行います。
  雰囲気的には、次の動画のような感じです。

   8チャンネルアナログ入力サンプルプログラム 
   

ターミナル上でもちょっとした、動きのある表示も可能ですね。

性能評価
さて、8ビットマイコン AVRでのTiny BASIC、性能的にはどうなんでしょう?
下記の3万回ループ処理を32ビット ARMマイコン搭載のイチゴジャムと比較してみました。

10 ?TICK()
20 FOR A=1 TO 30000
30 V=V+1
40 NEXT A
50 ?V
60 ?TICK()
測定結果 
  ・豊四季 Tiny BASIC Arduino(8ビット AVR)機能拡張版
    2.262秒
  ・イチゴジャム 1.2b56 最新版 (32ビット ARM)
   81.333秒 (ビデオ出力停止時 44.31秒)
  ・イチゴジャム ラズベリーパイ版 (BASIC RPi1.2.5 ラズパイ 2 900MHz)
   2.517秒
なんと、予測外の結果!  イチゴジャムの約36倍の処理能力でした。

イチゴジャム36台分の処理を1台でこなせる性能です。
ラズパイ2版 よりも早い!

追記 2018/03/23
  イチゴジャムをビデオ停止(VIDEO 0)した場合も測定してみました。
  それでも約20倍の処理能力でした。
「え、測定ミス? プログラムミス?」と思い何回も見直してしまいました。
AVRマイコンは確かに高性能ですが、同クロック 16MHz LPC1114(ARM cortex-M0)
よりは劣ると思います。


訂正(上記消し線の部分) 2018/03/20
  てっきりイチゴジャムは16MHzで稼働していると思っていたのですが、
  48MHzで動作しているようです。
  となると、16MHz Atmega328の3倍以上の処理能力があるはずでは..

豊四季タイニーBASIC for Arduinoは、ソース公開、分かり易さ重視です。
結構、無駄な処理をしています。
コマンドの処理を行う処理関数の検索を単純検索で行っており、コマンドの実行の都度、
最悪100回以上比較処理を行う等、特にパフォーマンス重視の作りではないです。
それでもイチゴジャムの約36倍..
非常に謎です..

追記

PLAY文による演奏デモ

演奏データは、下記のサイトに公開されているのもを流用させて頂きました。

・主体性の無いページ http://astr.me.land.to
   ねこふんじゃった! http://astr.me.land.to/tool/mabi/mml/nekof.htm
10 '猫ふんじゃった
20 PLAY "L16D+C+R8F+RF+RD+C+R8F+RF+RD+C+L8RF+RF+R"
30 PLAY "L16FRFRD+C+R8FRFRD+C+R8FRFRD+C+"
40 PLAY "L8RFRFRL16F+RF+RD+C+R8F+RF+RD+C+R8F+RF+RD+C+"
50 PLAY "L8RF+RF+RL16FRFRD+C+R8FRFRD+C+R8FR"
60 PLAY "L16FRD+C+L8RFRFRL16F+RF+RD+C+L8RF+RF+RF+RF+RF+RF+R"
70 PLAY "L16FRFRD+C+L8RFRFRFRFRFRFR"
80 PLAY "L16F+RF+RD+C+R8F+RF+RD+C+R8F+RF+RD+C+"
90 PLAY "L8RF+RF+RL16FRFRD+C+R8FRFRD+C+R8FRFRD+C+"
100 PLAY "L8RFRFRL16F+RF+R8.F+RC+C+D8C+8.FRF+"

« 中華製Arduino NanoのArduino Uno化を行う | トップページ | Arduino用スケッチのサブルーチンをサブディレクトリに配置する »

arduino」カテゴリの記事

AVR」カテゴリの記事

コメント

こんばんは
Ichigojam が遅いのは、NTSC信号を作るのにパワーを食われている
ということはありませんか?

nochioさん

コメントありがとうございます。
イチゴジャムのビデオ出力停止時の処理時間を測定し、追記しました。
ビデオ出力を停止すると、83%パフォーマンスが向上しますね。
確かに、NTSC信号を作るのにパワー食われていますね。

それでも、16MHz 8ビットマイコンの1/20の性能でした。
同一クロック換算では、1/60となります。
LPC1114の本来の性能を全く出せていないのは確かのようです。


追試ありがとうございます。m(_ _)m

コメントを書く

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

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/571408/66509794

この記事へのトラックバック一覧です: 豊四季タイニーBASIC for Arduino機能拡張版 作成しました:

« 中華製Arduino NanoのArduino Uno化を行う | トップページ | Arduino用スケッチのサブルーチンをサブディレクトリに配置する »