2015/08/22(土)Arduino UNO を ATmega168Pへ装換

AVR

[AVR]Arduino UNO のCPUをATmega168Pへ交換してみた。

UNOを購入したが,家にはATmega168Pの在庫があるので,それを活用出来るか試してみた。

ATmeaga168Pのヒューズビット

EXTENDED 0xF8

HIGH 0xDF

LOW 0xFF

-Boot Flash size=1024, start=$1C00

-BootRST

-Ext.Crystal OSC 8.0-

ATmega168Pへ書き込むbootloader

\hardware\arduino\bootloaders\optiboot\optiboot_atmega168.hex

ATmega168PのLockBits

0xCF

-LPM and SPM prohibited in Boot Selection

Arduino-IDEにUNO168を登録

arduino\hardware\arduino\boards.txtの以下の行を追加

##############################################################

uno168.name=Arduino Uno168

uno168.upload.protocol=arduino

uno168.upload.maximum_size=14336

uno168.upload.speed=115200

uno168.bootloader.low_fuses=0xff

uno168.bootloader.high_fuses=0xdd

uno168.bootloader.extended_fuses=0x00

uno168.bootloader.path=optiboot

uno168.bootloader.file=optiboot_atmega168.hex

uno168.bootloader.unlock_bits=0x3F

uno168.bootloader.lock_bits=0x0F

uno168.build.mcu=atmega168

uno168.build.f_cpu=16000000L

uno168.build.core=arduino

uno168.build.variant=standard

##############################################################

Arduino IDEの使い方

ツール→マイコンボードの一覧に Arduino Uno 168 があるのでそれを選択する。書き込めるプログラムメモリ領域が小さいので大きなサイズのプログラムは実行できない。

内部発信器8MHzモードでもOK

ATmega168Pのヒューズを書き換えた後、boards.txtの以下を書き換える事で問題なく利用が可能。(要するにクロックが半分になる。これによってIDEとの通信速度も半分になるだけの事)。fuseビットの定義は未検証。

uno168.upload.speed=57600

uno168.build.f_cpu=8000000L

uno168.bootloader.low_fuses=0xc2

uno168.bootloader.high_fuses=0xdd

uno168.bootloader.extended_fuses=0x07