2016-01-01から1年間の記事一覧

メモリの内容を調べる(PEEK相当をマシン語で)

IchigoJamのBASIC言語にはメモリ内容を調べるPEEK関数があります。 これはBASIC言語から見た仮想的なメモリ空間を16ビットのアドレスで指定して調べるものです。なので、マイコンから見えているメモリ空間上に配置された各種レジスタの内容を読むために、PEE…

マシン語でLチカ

IchigoJamのマシン語からポートを直接操作するサンプルプログラムです。やってること自体はBASIC で LED 文つかったほうが早いですけれどもーアセンブラソースはこんな感じ。JS製 IchigoJam用アセンブラでマシン語に変換できます。 @led r1=[@dat] r3=[r1+0]…

IchigoJam 用アセンブラ

こちらのページマシン語メモリアクセスで画面超速表示! IchigoJamではじめるARMマシン語その3 http://fukuno.jig.jp/1188 のニモニックをIchigoJam用の機械語(BASIC のPOKE文)に変換するアセンブラをjavascriptで組んでみましたAsembler for IchigoJam http…

テーラー展開としての逆フーリエ変換

さて、この微分 F(1) 二階微分 F(2) を使って もとの 時系列データ f を表現してみましょう関数 f を その微分で表現する、といったら、テーラー展開です。f(t) = Σ α1 F(1)(n)(t) + Σ α2 F(2)(n)(t) + + Σ α3 F(3)(n)(t) + Σ α4 F(4)(n)(t) +.... と、無限…

微分としてのフーリエ変換

こんなありがちな時系列データ f が手元にあるとします。 これを微分したい! たとえば、2点間の距離変化のデータだったとしたら、以前よりも伸びてるのか縮んでるのか調べたい。 ありがちなのが、適当に2つの期間の平均値をとって、その差を調べる方法。で…

以下の記事はフィクションであり、実在の関数 公式 アルゴリズムなどとは 一切関わりありません

ホントはエイプリルフールのネタに寝かせておこうかと思ったのですが、ちょっと目が冴えたので落書き。みなさん、すでにフーリエ変換とかFFTはご存知だと思うので そのあたりの説明は省略

プログラム

10 n=0 :rem PWMは0.01ミリ秒単位で周期を指定 11 [0]=2551 :rem G 100000/391.99 Hz *10 12 [1]=3822 :rem C 100000/261.62 Hz *10 13 [2]=3296 :rem E 100000/329.63 Hz *10 14 [3]=2272 :rem A 100000/440 Hz *10 20 play"L4G":Q=[n] 30 Q=[n]:pwm 2,Q*2+…

使い方

上記動画を参照 ボタンを押すと、G -> C -> E -> A -> OFF とモードが変わります。 (モード変更時にその高さの音が鳴ります)

回路

OUT2 LED (負論理 アクティブロー) OUT1 LED (正論理 アクティブハイ)

ウクレレ用ストロボチューナー

こちらの作例をパクろうと思ったのですが、 AVR ストロボ式ギターチューナー S.O.Sモドキ うまくマネできなくて「何の成果も得られませんでした」 こんなきれいに残像が割れませんでした。 (一応、チューニングが合ってくると残像が小さくなる。。。ような…

結果

0 0 1 1 2 1 3 2 中略 23 28657

IchigoJamで動かせるようにBASICに書き換え

手作業でやりましたが、自動化ツールも存在します。 上のblog記事からリンクをたどってください 10 poke #700,#00,#22, #01,#21, #13,#1c, #10,#b5 20 poke #708,#82,#42, #04,#da, #cc,#18, #01,#32 30 poke #710,#19,#1c, #23,#1c, #f8,#e7, #18,#1c 40 po…

コンパイル結果を逆アセンブル

00000000 : 0: 2200 movs r2, #0 2: 2101 movs r1, #1 4: 1c13 adds r3, r2, #0 6: b510 push {r4, lr} 8: 4282 cmp r2, r0 a: da04 bge.n 16 c: 18cc adds r4, r1, r3 e: 3201 adds r2, #1 10: 1c19 adds r1, r3, #0 12: 1c23 adds r3, r4, #0 14: e7f8 b.n…

C言語で書く

int fib(int n) { int x,x1,x2,i; x=0; x1=1; x2=0; for(i=0;i

BASICで書くとこんなん

100 x=0: y=1:z=0:n=23 110 ?0,0 120 for j=1 to n 130 x=y+z: y=z: z=x 140 ?j,x 150 next 32bitマイコンなのでBASICでもけっこう速い。一瞬で表示されます。残念ながら24番目以降を計算するには2バイト整数だと足りないので なんらかの工夫が必要になります

IchigoJam マシン語でフィボナッチ数列 

部屋の隅からDIP ARMマイコン LPC1114が出てきたので 子供パソコンIchigoJam焼いてみた。というわけで BTN 端子に針金を刺してタッチセンサーにするのにも飽きたのでマシン語でフィボナッチ数列を書くなど。 C言語をマシン語にするほうほうは こちらのページ…