最近TINY BASICが流行っているようなのでちょっとやってみる。

 鈴木哲哉氏が開発したTINY BASICを使わせてもらいます。
命名-豊四季タイニーBASIC(電脳伝説 Vintagechips)

 以下からTTB_Arduino.zipをダウンロードする。
豊四季タイニーBASICのリファレンスを公開(電脳伝説 Vintagechips)

 開発環境はArduino IDE 1.7.2を使用。Arduino.orgの方からダウンロード。
New Arduino IDE 1.7.2

以下、動作環境はMacOSX 10.10 Arduino IDE 1.7.2

 まずはArduino Leonardoで動作確認。先ほどのTTB_Arduino.zipを展開し、Arduino IDE 1.7.2で展開したフォルダ内のTinyBASIC.inoを開く。
 マイコンとシリアルポートを指定し、書き込み。シリアル通信で確認。特に問題なし。

 次にArduino MEGA 2560を指定して動作確認。これもOK。

 さて、Arduino Zero Pro / Arduino Due だが、これらを指定してコンパイルすると以下のエラーが出た。

In file included from TinyBASIC.ino:23:0:
ttbasic.h: In function 'unsigned char* iexe()':
ttbasic.h:1107:36: error: cast from 'unsigned char*' to 'short int' loses precision [-fpermissive]
index = (short)lstk[lstki - 1];
^
ttbasic.h:1113:36: error: cast from 'unsigned char*' to 'short int' loses precision [-fpermissive]
vstep = (short)lstk[lstki - 2];
^
ttbasic.h:1116:34: error: cast from 'unsigned char*' to 'short int' loses precision [-fpermissive]
vto = (short)lstk[lstki - 3];
^

 該当する箇所(一部)はこのようになっている。indexはポインタなので、AVR系ではshortでもARM系では違う模様。
     index = *cip;
 ...
     index = (short)lstk[lstki - 1];

次の様に書き換えた。これでコンパイルしたらエラーなし。
     index = (uintptr_t)lstk[lstki - 1];

ついでにsetup()のシリアルポートを準備する所で
while(!Serial);
を追加した。

修正後のソース:
https://gist.github.com/houmei/a078fb52f5309846b3d2


 Arduino Dueで、マイコンをArduino Due(Programming Port)に指定して書き込み。動作OK。

 しかし、コンパイルと書き込みはできてもArduino Zero Proは何も応答しなかった。これはあとで。

 おまけ:複数のマイコンボードを接続して調べた今回は、このような電源スイッチ付のUSBハブが便利だった。
2015HUB





ELECOM USBハブ USB2.0対応 個別スイッチ付 バスパワー シール付 4ポート ブラック U2H-YS4BBKELECOM USBハブ USB2.0対応 個別スイッチ付 バスパワー シール付 4ポート ブラック U2H-YS4BBK

エレコム 2010-12-09
売り上げランキング : 10111

Amazonで詳しく見る
by G-Tools