2015/08/22(土)Arduino UNO を ATmega168Pへ装換
[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