OK05 色々試してみた
例えば loop$ 以降を以下なカンジにしてみた。
loop$: mov r0,#16 mov r1,#1 bl setGpio ldr r0,=1000000 bl Wait mov R0,#16 mov r1,#0 bl SetGpio ldr r0,=1000000 bl Wait b loop$
点滅しました。当り前ですが。
んでは、ということで以下に修正。これだと何度か明滅しますね。以下はスタックポインタ設定直後あたりから引用してます。
mov r0,#16 mov r1,#1 bl SetGpioFunction ptrn .req r4 ldr ptrn,=pattern seq .req r5 mov seq,#0 loop$: mov r0,#16 mov r1,#1 lsl r1,seq and r1,ptrn bl SetGpio ldr r0,=1000000 bl Wait add seq,#1 and seq,#0b11111 b loop$ .section .data .align 2 pattern: .int 0b11111111000000001111111100000000
Wait の引数を触ってみます。
ldr r0,=250000
これだと明滅が続きますね。何が悪いんだろ。ちなみに間隔は一定ではありません。
ビットマップを逆にしてみるか、つうか目がちかちかします。
.int 000000000010101011101110111010101
あんま変わらんな。むむむ、と言いつつ ok03 を make して動かしてみたら明滅が一点スパンですね。何が違うのか。
つうか色々やってて一点スパンで明滅するようになって (というかそこからソースを変えても挙動が変わらなくなってて) 微妙っちゃ微妙。
あ
コピィ元なディレクトリを間違えてたorz
つうかやっぱおかしい。イメージ書換えてるはずなのに挙動に変化が無かったりとか。ビットマップてきに
.int 0b11111111000000001111111100000000
と
.int 0b01010101010101010101010101010101
な挙動が同じとかあり得ない上に明滅の間隔が一定ではないんだよね。
とは言え
ok03 な実装はきちんと定期的な間隔で明滅します。つうことは Wait な実装が微妙なのだろうか。ええと以下なコメントがあるのですが
* Use our new SetGpio function to set GPIO 16 base on the current bit in the * pattern causing the LED to turn on if the pattern contains 0, and off if it * contains 1.
また明日確認してみます。なんとなく第六感デバッグで負けた感てのは色々な意味でアレ。