JamToast 特設ページ

JamToastとは

20160623183953.jpg
20160627112429.JPG

IchigoJamの拡張用ピンソケットに挿すことで、市販のメモリーカードを使えるようにする増設ボード(Arduinoで言うところのシールド)です。JamToastの機能としては、

<基本機能>

<上級者向け機能>

があります。メモリーカードとしては、MMCおよび互換カードが使用できます。

 

IchigoJamのファームウェアを書き換える動画をアップロードしました。メモリーカードを挿して電源ONにするだけです。面倒な配線が不要で簡単にできます。

 

入手方法

基本的に各自がDIYで作る形です。ハードウェアおよびソフトウェアの情報を公開していますので、これらを元にMakeしましょう!

 

ちなみに開発時に使用したパーツの在庫がかなりあるため、それらをまとめてキットとして下記のイベントで販売する予定です。Make系サークル「京都電創庵」のブースに置かせてもらう予定です。数に限りがありますので、なくなり次第終了とさせて頂きます。

 

使い方、機能詳細

IchigoJamファームウェアの書き換え

PC等を使い、IchigoJamファームウェアのbinファイルをメモリカード直下に置きます。ファイル名は「jam.bin」(大文字小文字混在可)に変更します。JamToastをIchigoJamに装着し、メモリーカードをJamToastのカードソケットに挿してから、IchigoJamの電源スイッチをONにします。メモリーカード上にjam.binが存在すれば、JamToastはIchigoJamファームウェアの書き換え処理に移ります。

書き換え中はCARD-LEDが点灯します。書き換えが終わったらCARD-LEDが消灯し、JamToastはIchigoJam側のマイコンを再起動させます。書き換え時にエラーが発生した場合、POW-LEDとCARD-LEDが共に点滅を繰り返して知らせます。

書き換えに成功した後、jam.binは自動的に削除されます。

 

BASICプログラムのセーブとロード

IchigoJam側からはI2C-EEPROMが繋がっているように見えるので、使い方はそれと同じです。SAVE/LOADコマンドで、プログラム番号は100~227を使用します。

SAVEコマンドを入力すると、例えばプログラム番号が100の場合、メモリカード直下に「IJ100.BAS」というファイル名でプログラムが保存されます。ファイルが無い場合は新規に作成され、ファイルが存在する場合は上書きされます。

これらのファイルはパソコン等でコピーしたり移動したりすることができます。ファイルはテキストファイルではなくバイナリファイルです。テキストエディタ等 でプログラムを編集することはできません。これはIchigoJamにPCで表示できない特殊な文字があり、JamToast側で対応できないためです。

 

任意のデータの保存と読み出し

IchigoJam上からI2Cコマンド(I2CW/I2CR)を用いて、アドレス#11に対してライトおよびリードを行うと、メモリカードにデータを保存したり読み出したりすることができます。


データを保存するときのコマンド

R=I2CW(#11,#700,1,#700,2)

コマンドバイト部はダミーです。書き込みデータに反映されません。アドレスは何を指定してもかまいませんが、長さは1バイト固定です。データバイト部には書 き込むデータのアドレスと長さを指定します。最大長は512バイトです。512バイトを超えたデータは無視され書き込まれません。

コマンドを実行すると、メモリカード直下に「IJDATA.DAT」に書き込んだデータが保存されます。ファイルが無い場合は新規に作成され、ファイルが存在する場合は上書きされます。


データを読み出すときのコマンド

R=I2CR(#11,#700,1,#701,2)

コマンドバイト部はダミーです。書き込みデータに反映されません。アドレスは何を指定してもかまいませんが、長さは1バイト固定です。データバイト部には読み出し先のアドレスとデータの長さを指定します。最大長は512バイトです。

コマンドを実行すると、メモリカード直下の「IJDATA.DAT」から指定バイト数のデータがIchigoJamへ送信されます。

ファイルが存在しなかったり、指定バイト数のデータが無い場合でも、I2CRコマンドは正常終了となります。エラーの処理についてはBASICプログラム側で対応してください。

 

連続追記(ロガー)モード

IchigoJam上からI2CWコマンドを用いてアドレス#12にライトを行うと、メモリカードにデータを追記し続けることができます。ロガーモードのコマンドを実行する前に、後述するコントローラのリセットを必ず行ってください。

コマンド

R=I2CW(#12,#700,1,#700,4)

コマンドバイト部はダミーです。書き込みデータに反映されません。アドレスは何を指定してもかまいませんが、長さは1バイト固定です。データバイト部には書 き込むデータのアドレスと長さを指定します。最大長は512バイトです。512バイトを超えたデータは無視され書き込まれません。


ロガーモードでは下記の仕様に従ってデータが保存されます。


なお、一度に書き込むデータのサイズが512バイト未満の場合、コントローラー内部にバッファリングされ、すぐにはメモリーカードに書き出されません。さらにデータを書き込んで、合計で512バイト以上になった時点でメモリーカードに書き出されます。

この動作はメモリーカードの劣化を防ぐためですが、途中で電源を切断した場合など、一部のデータがメモリーカードに書き込まれずに消えてしまう可能性があるので注意してください。

バッファリングされたデータが残っている場合、コントローラのリセットを行うことで、メモリカードに書き出すことができます。ただしBASICプログラム側でリセットの仕組みを入れる必要があります。

 

コントローラのリセット

IchigoJam上からI2CRコマンドを用いてアドレス#12にリードを行うと、コントローラー(JamToastのマイコン)の内部状態がリセットされます。ロガーモード使用後でバッファーに残っているデータがあれば、メモリーカードに書き出されます。

コマンド

R=I2CR(#12,#700,1,#700,1)

コマンドバイト部、データバイト部ともにダミーですが、リード先のアドレスはプログラムで使用していない場所を指定してください。

 

多分FAQかもしれないこと

 

その他関連情報

 

コメント