perlでAVRニモニックを機械語に変換(その4)

まだAVR続いてます。

簡単なアセンブラを作って、avr-asでアセンブルしたものを、マイコンに書き込んで確認しました。
割り込みベクタは無視して0番地からプログラム配置しています。

        ldi r24,0x08
        ldi r25,0x00
        out 0x17,r24
        out 0x18,r24
LOOP:
        rjmp LOOP

このプログラムだと、LEDは光りました。

職業病でこの簡単なプログラムでも、リセットがかかっていないか確認したくなります。
マイコン起動時には、LEDはOFFさせて、nopをいれてから、LEDをONして、無限ループ。
ただしこのnopは、Vimで、yy1999pです。(nopが2000個)

        ldi r24,0x08
        ldi r25,0x00
        out 0x17,r24
        out 0x18,r25

	nop

        out 0x18,r24
LOOP:
        rjmp LOOP

2000個nopを入れると、書き込みも時間がかかりますね。

root@raspberrypi:~/led# make write
avrdude -p t85 -c linuxgpio -U flash:w:sample.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e930b
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "sample.hex"
avrdude: input file sample.hex auto detected as Intel Hex
avrdude: writing flash (4012 bytes):

Writing | ################################################## | 100% 3.10s

avrdude: 4012 bytes of flash written
avrdude: verifying flash memory against sample.hex:
avrdude: load data flash data from input file sample.hex:
avrdude: input file sample.hex auto detected as Intel Hex
avrdude: input file sample.hex contains 4012 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 1.86s

avrdude: verifying ...
avrdude: 4012 bytes of flash verified

avrdude: safemode: Fuses OK (E:FF, H:DF, L:62)

avrdude done.  Thank you.

root@raspberrypi:~/led# 

LEDの点灯の仕方は見た目では変わりませんでした。そこで、ONとOFFを逆にしてみます。

        ldi r24,0x08
        ldi r25,0x00
        out 0x17,r24
        out 0x18,r24

	nop

        out 0x18,r25
LOOP:
        rjmp LOOP

書き込んで確認すると、LEDが点灯しています。つまりどこかでリセットがかかっています。
ウォチドッグかなんかでしょうけど、とりあえず飽きてきましたので、次回は一旦スクリプトの記事に戻そうかと思います。
そのうちAVR触った時に、ここ数回のAVR記事を更新しておきます。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA