IchigoJam for STM32
LEDをつけるけすはもちろん、IchigoJam BASICのツールやゲームはそのまま動作。
Armマシン語も、仮想RAMしか使わないものならそのまま動きます!
「第3回こどもプログラミングサミット」のIchigoJamワークショップにて初お披露目!
つくりかた手順
1. 変換基板を入手(PCB発注など)
2. テスターで変換基板の回路パターンを確認(電源とGNDがショートしていないかなど)
3. CPU、STM32F030K6T6をはんだづけ(0.8mmピッチなのでLPC1114FDH28より少し簡単)
* 秋月電子で入手可能なSTM32F042K6T6でもOK
4. CPUを実装していないIchigoJamを準備(IchigoJam 完全組立キットTなど)
5. 変換基板をCPUとして接続(ピンヘッダーではんだづけや、抜き差しできるようになどお好みで)
6. USBシリアルを使い、STM用のファームウェア、IchigoJam BASICをstm32writerを使って書き込みます
* ファームウェアはIchigoJam-FANにてβ公開予定、書き込み時に接続待ちがでた場合、RESETピンを一瞬GNDに
変換基板とSTM32F030K6T6。
ミニテクニック
IchigoJam BASIC、GOTOを使わないFORコマンドを使ったエルチカ無限ループ。
FOR I=0 TO 1 STEP 0:LED A:WAIT10:A=1-A:NEXT
キャラクター9つで3x3サイズの大きなキャラとして表示する、Armマシン語。
配列の先頭2つで座標を指定して、9文字分の文字列を渡すと表示します。
10 POKE#700,8,68,8,35,27,2,11,68,26,136,89,136,128,51,128,51,19,68,73,1,11,68,3,33,2,120,26,112,66,120,90,112,130,120,154,112,3,48,32,51,1,57,245,209,112,71 20 LET[0],RND(30),RND(20):U=USR(#700,"ABCDEFGHI") 30 GOTO 20
asm15でアセンブルできるプログラムはこちら
(R1を使った仮想メモリアドレスを物理メモリアドレスへ変換がポイント)
R0+=R1 R3=8 R3=R3<<8 R3+=R1 R2=[R3]W ' [0]=X R1=[R3+1]W ' [1]=Y R3+=128 R3+=128 R3+=R2 R1=R1<<5 R3+=R1 R1=3 @LOOP R2=[R0] [R3]=R2 R2=[R0+1] [R3+1]=R2 R2=[R0+2] [R3+2]=R2 R0+=3 R3+=32 R1-=1 IF !0 GOTO @LOOP RET
高速化したい時、メインループの一番内側から順にマシン語化してみましょう
(Armマシン語入門)