Edited at

Arduino 1.6でATTiny85やATTiny44を開発できるようにしてみる

More than 3 years have passed since last update.

Arduino 1.6が出ました。

これまでATTinyの開発にはArduino 1.0.x系を使ってたのですが、1.6が正式版としてリリースされたことですので、移行を検討してみたいと思います。

Arduino 1.6では1.0.xからhardwareフォルダの構成が変わっています。

また、board.txtの書き方も結構変わっています。

まじかー!と途方に暮れていたところ、Arduinoの達人、@@maris_HYさんより

と教えていただきましたので、やってみました。


前提


環境について。

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.txthardware/attiny/avr/platform.txtにコピー

これやっとかないとエラーが出ます。


追記。


と、またまた教えていただきました!ので、

修正してみたら、うまくいきました。

platform.txtの修正箇所を書いておきます。コピー後、下記を修正してください。

修正前


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の部分を削除します。

修正後


platform.txt

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.txtunlock_bitslock_bitsの定義も不要になります。


ATTiny85 内部発振16.5Mhzの設定方法


①hardware/attiny/avr/board.txtの修正

ATTiny85ではboard.txtを下記のように修正します。

修正前(Arduino 1.0.x用のboard.txt記述例)


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記述例)


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を修正します。

avrdude.confの修正方法


ATtiny85のパートの、memory "lock"readの定義がぽっかり抜けているので、上記サイトの通りコピペしてください。


これで、ブートローダーも書き込めるようになります。


ATTiny44 外部クリスタル16Mhzの設定方法

ATTiny44でも試してみましたので、こちらの修正方法も書いておきます。


hardware/attiny/avr/board.txtの修正

ATTiny44ではATTiny85のような不具合が無いみたいですので、board.txtだけ修正すればブートローダーも書き込めました。

修正前(Arduino 1.0.x用のboard.txt記述例)


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記述例)


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。。。。よく固まる。