LoginSignup
8
11

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-02-13

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

8
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
11