Arduino 1.6が出ました。
これまでATTinyの開発にはArduino 1.0.x系を使ってたのですが、1.6が正式版としてリリースされたことですので、移行を検討してみたいと思います。
Arduino 1.6では1.0.xからhardware
フォルダの構成が変わっています。
また、board.txt
の書き方も結構変わっています。
まじかー!と途方に暮れていたところ、Arduinoの達人、@@maris_HYさんより
お、「Arduino Hardware Cores migration guide from 1.0 to 1.6」 https://t.co/Apn8Uuxvco なんてページを発見(^^)
— まりす (@maris_HY) February 10, 2015
と教えていただきましたので、やってみました。
前提
環境について。
Arduino 1.0.5か1.0.6とkosakalabさんで配布している hardware.zip(2014.09.04版)を利用してATTinyの開発環境が構築できていることを前提としています。
ただし。
kosakalabさんが配布されているhardware.zip(2014.09.04版)はArduino 1.0.5での利用を想定したものです。
1.6がリリースされる前のものですので、その点ご理解のうえ、自己責任でご利用をお願いします。
やってみたことはLチカまでです。
Lチカまでしかやってませんので、各種関数が使えるか等の検証はできていませんので、この点もご理解をお願いします。
共通:① hardware/attiny/*
をhardware/attiny/avr/*
に変更しておく
Arduino Hardware Cores migration guide from 1.0 to 1.6の
Step 1: Move core files into a vendor/architecture folder structure.
の項を見ると、フォルダ構成を変更しろ、と書いてあります。
hardware/attiny/
の下にあるフォルダ・ファイルをすべて hardware/attiny/avr/
に移動させておきます。
共通:② hardware/arduino/avr/platform.txt
をhardware/attiny/avr/platform.txt
にコピー
これやっとかないとエラーが出ます。
追記。
@tadfmac @morecat_lab platform.txtのtools.avrdude.erase.pattern=〜とtools.avrdude.bootloader.pattern=〜にunlock_bitsとlock_bitsが出てるので該当箇所を削ったら良さげw
— まりす (@maris_HY) February 13, 2015
と、またまた教えていただきました!ので、
修正してみたら、うまくいきました。
platform.txt
の修正箇所を書いておきます。コピー後、下記を修正してください。
修正前
tools.avrdude.erase.pattern="{cmd.path}" "-C{config.path}" {erase.verbose} -p{build.mcu} -c{protocol} {program.extra_params} -e -Ulock:w:{bootloader.unlock_bits}:m -Uefuse:w:{bootloader.extended_fuses}:m -Uhfuse:w:{bootloader.high_fuses}:m -Ulfuse:w:{bootloader.low_fuses}:m
:
tools.avrdude.bootloader.pattern="{cmd.path}" "-C{config.path}" {bootloader.verbose} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:{runtime.platform.path}/bootloaders/{bootloader.file}:i" -Ulock:w:{bootloader.lock_bits}:m
上記2行から、-Ulock:w:{bootloader.lock_bits}:m
の部分を削除します。
修正後
tools.avrdude.erase.pattern="{cmd.path}" "-C{config.path}" {erase.verbose} -p{build.mcu} -c{protocol} {program.extra_params} -e -Uefuse:w:{bootloader.extended_fuses}:m -Uhfuse:w:{bootloader.high_fuses}:m -Ulfuse:w:{bootloader.low_fuses}:m
:
tools.avrdude.bootloader.pattern="{cmd.path}" "-C{config.path}" {bootloader.verbose} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:{runtime.platform.path}/bootloaders/{bootloader.file}:i"
上記修正を行うと、②hardware/tools/avr/etc/avrdude.confの修正
に記載した修正は不要になります。
また、board.txt
のunlock_bits
とlock_bits
の定義も不要になります。
ATTiny85 内部発振16.5Mhzの設定方法
①hardware/attiny/avr/board.txtの修正
ATTiny85ではboard.txtを下記のように修正します。
修正前(Arduino 1.0.x用のboard.txt記述例)
attiny85-16.name=ATtiny85 (internal 16.5 MHz clock)
attiny85-16.bootloader.low_fuses=0xe1
attiny85-16.bootloader.high_fuses=0xdf
attiny85-16.bootloader.extended_fuses=0xff
attiny85-16.upload.maximum_size=8192
attiny85-16.bootloader.path=dummy
attiny85-16.bootloader.file=dummy.hex
attiny85-16.build.mcu=attiny85
attiny85-16.build.f_cpu=16500000L
attiny85-16.build.core=arduino
attiny85-16.build.variant=tiny8
修正後(Arduino 1.6用のboard.txt記述例)
attiny85-16.name=ATtiny85 (internal 16.5 MHz clock)
attiny85-16.bootloader.low_fuses=0xe1
attiny85-16.bootloader.high_fuses=0xdf
attiny85-16.bootloader.extended_fuses=0xff
attiny85-16.upload.maximum_size=8192
# attiny85-16.bootloader.path=dummy
# attiny85-16.bootloader.file=dummy.hex
attiny85-16.build.mcu=attiny85
attiny85-16.build.f_cpu=16500000L
attiny85-16.build.core=arduino
attiny85-16.build.variant=tiny8
attiny85-16.bootloader.tool=avrdude
attiny85-16.bootloader.file=dummy/dummy.hex
# attiny85-16.bootloader.unlock_bits=0xff
# attiny85-16.bootloader.lock_bits=0xff
attiny85-16.upload.maximum_data_size=512
attiny85-16.build.board=AVR_ATTINY85_16
attiny85-16.upload.tool=arduino:avrdude
とりあえず、これでプログラムを書き込めるようになります。
ただし、Arduino ISPでブートローダーを書き込もうとするとエラーになります。
なので、以下のavrdude.conf
の修正も必要です。
②hardware/tools/avr/etc/avrdude.confの修正
※以下avrdude.confの修正は、
platform.txt
を修正していない場合のみ必要です。
上記①だけの状態ですと、ATTiny85にブートローダーを書き込もうとすると、エラーが出ます。
これは、どうやらバグのようです。
下記サイトを参考にavrdude.confを修正します。
ATtiny85
のパートの、memory "lock"
のread
の定義がぽっかり抜けているので、上記サイトの通りコピペしてください。
これで、ブートローダーも書き込めるようになります。
ATTiny44 外部クリスタル16Mhzの設定方法
ATTiny44でも試してみましたので、こちらの修正方法も書いておきます。
hardware/attiny/avr/board.txtの修正
ATTiny44ではATTiny85のような不具合が無いみたいですので、board.txtだけ修正すればブートローダーも書き込めました。
修正前(Arduino 1.0.x用のboard.txt記述例)
attiny44-16.name=ATtiny44 (external 16 MHz clock)
attiny44-16.bootloader.low_fuses=0xfe
attiny44-16.bootloader.high_fuses=0xdf
attiny44-16.bootloader.extended_fuses=0xff
attiny44-16.upload.maximum_size=4096
attiny44-16.build.mcu=attiny44
attiny44-16.build.f_cpu=16000000L
attiny44-16.build.core=arduino
attiny44-16.build.variant=tiny14
修正後(Arduino 1.6用のboard.txt記述例)
attiny44-16.name=ATtiny44 (external 16 MHz clock)
attiny44-16.bootloader.low_fuses=0xfe
attiny44-16.bootloader.high_fuses=0xdf
attiny44-16.bootloader.extended_fuses=0xff
attiny44-16.upload.maximum_size=4096
attiny44-16.build.mcu=attiny44
attiny44-16.build.f_cpu=16000000L
attiny44-16.build.core=arduino
attiny44-16.build.variant=tiny14
attiny44-16.bootloader.tool=avrdude
attiny44-16.bootloader.file=dummy/dummy.hex
# attiny44-16.bootloader.unlock_bits=0xff
# attiny44-16.bootloader.lock_bits=0xff
attiny44-16.upload.maximum_data_size=256
attiny44-16.build.board=AVR_ATTINY44_16
attiny44-16.upload.tool=arduino:avrdude
まだ1.0.6使ってた方がいいかも。。。。
これから少しづつ触っていきたいと思いますが、まだちょっと不安定ですね。。。1.6。。。。よく固まる。