前回のATmega328pとV-USBの続きです。USBaspLoaderはUSBaspと互換のブートローダーです。これがあれば自作のUSB機器をライター無しで書き込むことができます。USBaspと互換があるおかげでavrdude等のUSBaspに対応したソフトウエアがそのまま使えます。
しかし、やっぱりATmega328pで使うときには、はまりポイントがあります。まず一つ目はATmega328pとV-USBで取り上げたリセットベクタの話が一つ。次にヒューズビットの話です。ATmega88pやATmega168pとかと同じだろうと踏んでいたら違いました。それもブートローダーの設定の部分と低電圧リセットの3bit分が入れ替わっています。参考までに私のマイコンのフューズビットの設定を以下に示します。
Low 11010111
High 11010000
Ext -----000
この設定ではブートローダーに4kBを割り当てています。それに合わせてMakefileでBOOTLOADER_ADDRESS = 7000と直しておきましょう。7000という数字はブートローダー領域の開始アドレスです。データシートには3800と書いてありますが、ちょうどこの二倍になります。いずれも16進数ですので注意してください。
私はこのあとせっかくある4kBの領域をいかしてブートローダーモードではLCDにその旨を表示するようにしました。そのままだと、どの状態にあるのか分かりづらいですからね。しかし、SPI通信のオーバーヘッドがない分、高速でいいですね。
by Y.O