Help us understand the problem. What is going on with this article?

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

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

tadfmac
aka D.F.Mac. 実験音楽家。TripArts Music主宰。ハンディーレコーダーでの音集めが趣味。 Web技術、フィジカルコンピューティングなどにも興味があります。
http://soundcloud.com/tadfmac
kddi
KDDIは、通信を中心に周辺ビジネスを拡大する「通信とライフデザインの融合」をより一層推進し、国内はもとよりグローバルにおいても、5G/IoT時代における新たな価値創造を実現し、お客さまの期待を超える新たな体験価値の提供を追求してまいります。
http://www.kddi.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした