atmega128で32kbの外部RAMを使う
上の写真のロボですが、サーボの制御にベステクのatmega128ボードを使っています。このボード、なんと32kBのRAMが付いているんです。ついているなら使ってしまえ、ということでWinAVRで使えるようにしてみました。
http://www11.ocn.ne.jp/~akibow/AVR-LibC_1.4.2/FAQ.html#faq_startupをかなり参考にして、以下のアセンブリファイルを追加します。
#include <avr/io.h> .section .init1,"ax",@progbits ldi r16,_BV(SRE) | _BV(SRW) out _SFR_IO_ADDR(MCUCR),r16
そしてMakefileのEXTMEMOPTSを以下のように変更します。
EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x807fff
Makefileに例が書いており、64kBで--defsym=__heap_end=0x80ffffとなっていたので、32kBでは0x807fffでしょう。あと、上記で追加したアセンブラファイルをASRCのところに追加します。
以上で外部RAM(32kB)が使えるようになります。ヘイポー。
それにしても、ChaN氏のAVRライタは使いやすいですよ〜。ISPケーブルで通信できるのでprintfデバッグも簡単ですし、winAVRでちょこっと設定すればファンクションキーを押すだけで書き込めちゃいマス。