3
avrdude コマンドでヒューズビットを書き込む。コマンドはこんな感じで。
avrdude -p m328p -c avrispmkII -b 115200 -P usb -U lfuse:w:0xE2:m -U hfuse:w:0xDA:m -U efuse:w:0x05:m
ここまでで、ハードウェアの方の準備はおわり。このあとはソフトウェア側の準備。
4
Arduino のプロファイル(?)を書き換える。Mac なら /Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/boards.txt を書き換える(他の OS は知らない)。以下の行を良い感じの場所に挿入。
##############################################################
avr_int8.name=Arduino Internal 8MHz
avr_int8.upload.protocol=arduino
avr_int8.upload.maximum_size=32256
avr_int8.upload.speed=57600
avr_int8.bootloader.low_fuses=0xe2
avr_int8.bootloader.high_fuses=0xde
avr_int8.bootloader.extended_fuses=0x05
avr_int8.bootloader.path=optiboot
avr_int8.bootloader.file=optiboot_atmega328.hex
avr_int8.bootloader.unlock_bits=0x3F
avr_int8.bootloader.lock_bits=0x0F
avr_int8.build.mcu=atmega328p
avr_int8.build.f_cpu=8000000L
avr_int8.build.core=arduino
avr_int8.build.variant=int_8
5
ピンのマッピングを書き換える。内部発振にすることでクリスタル用のピンも I/O に使えるようになるので、使えるようにする。
/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/variants/standard をコピーして /Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/variants/int_8 とし、その中にある pins_arduino.h を書き換える。132行目からをこんな感じに置き換える。
const uint8_t PROGMEM digital_pin_to_port_PGM[] = {
PD,
PD,
PD,
PD,
PD,
PD,
PD,
PD,
PB,
PB,
PB,
PB,
PB,
PB,
PC,
PC,
PC,
PC,
PC,
PC,
PB,
PB,
};
const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = {
_BV(0),
_BV(1),
_BV(2),
_BV(3),
_BV(4),
_BV(5),
_BV(6),
_BV(7),
_BV(0),
_BV(1),
_BV(2),
_BV(3),
_BV(4),
_BV(5),
_BV(0),
_BV(1),
_BV(2),
_BV(3),
_BV(4),
_BV(5),
_BV(6),
_BV(7),
};
これでデジタルピンに20と21が増えました。