Arduino1.0 で ATtiny13 をとりあえず動かす [Arduino]
ATtinyでの開発もArduino1.0に移行してきたいと思っています。
基本的には、次のページをベースにしようと思いました。
High-Low Tech - Programming an ATtiny w/ Arduino 1.0
http://hlt.media.mit.edu/?p=1695
非常にスマートな方法です。
「board.txt」と「pins_arduino.h」という2つのファイルを準備すればいいみたい。
しかし、ATtiny13 はいろいろ試してみたのですが私にはこの方法では動かすことができなかったので、少し泥臭い方法で動かしてみました。
● オートリセットの問題
いままで Duemilanove と Arduino 0021 でとくに問題なかったのですが、、
(Arduino 0022以降で?)オートリセットの問題というのがあるようです。
ATtinyにスケッチを書き込む際に、Arduino にリセットがかかってしまい、ArduinoISPが実行できないということらしいです。
⇒ これを回避する方法 (RESET端子の電圧が下がらないようにすればいいみたい)
・その1:RESET端子を110~124Ωで+5Vにプルアップ
Arduino playground - DisablingAutoResetOnSerialConnection:
http://www.arduino.cc/playground/Main/DisablingAutoResetOnSerialConnection
・その2:RESET端子-GND端子間に10uFのコンデンサを挿入
High-Low Tech - Arduino board as ATtiny programmer:
http://hlt.media.mit.edu/?p=1706
(120Ωの抵抗を挟んでみた)
● ArduinoISP の問題
これがとっても悩みました。
Duemilanove に Arduino1.0 で ArduinoISP を書き込むとこんな感じのエラーが出て何ともなりませんでした。
上の2つはいつものエラーで、問題ないのですが、下の2つが問題。
・Duemilanove か Uno か?
・ブートローダーが問題なのか? (標準のもの? optiboot?)
・開発環境(002x か 1.0 か)なのか?
・ArduinoISPのバージョン(002x に付属のスケッチか、1.0 のものか)?
(以前購入しておいたUno(R1) を出してきて試したりしました)
結論としては、(Windows版での確認ですが)
★ Arduino 002x の環境で Arduino 002x に付属のArduinoISP スケッチ を使う!
この方法で、とりあえず動作確認できました。
Arduino 1.0 を使っていても、ArduinoISPは以前のものを使った方がよさそうです。
(あるいは、ArduinoISP以外のライターを使うとか?)
● さて、動かす。
これは、またまた以前の
ATtiny13 で Arduino
http://hello-world.blog.so-net.ne.jp/2011-11-17
からの発展です。
Arduino1.0 からでも以前の設定が出てきます。
しかし、そのまま選択しても動きません。
hardware / avr / cores / attiny13 にある 「WProgram.h」 というファイルをそのまま同じフォルダに「Arduino.h」というファイル名でコピーして保存します。
(「WProgram.h」 はそのままです。)
それだけです。
基本的には、次のページをベースにしようと思いました。
High-Low Tech - Programming an ATtiny w/ Arduino 1.0
http://hlt.media.mit.edu/?p=1695
非常にスマートな方法です。
「board.txt」と「pins_arduino.h」という2つのファイルを準備すればいいみたい。
しかし、ATtiny13 はいろいろ試してみたのですが私にはこの方法では動かすことができなかったので、少し泥臭い方法で動かしてみました。
● オートリセットの問題
いままで Duemilanove と Arduino 0021 でとくに問題なかったのですが、、
(Arduino 0022以降で?)オートリセットの問題というのがあるようです。
ATtinyにスケッチを書き込む際に、Arduino にリセットがかかってしまい、ArduinoISPが実行できないということらしいです。
⇒ これを回避する方法 (RESET端子の電圧が下がらないようにすればいいみたい)
・その1:RESET端子を110~124Ωで+5Vにプルアップ
Arduino playground - DisablingAutoResetOnSerialConnection:
http://www.arduino.cc/playground/Main/DisablingAutoResetOnSerialConnection
・その2:RESET端子-GND端子間に10uFのコンデンサを挿入
High-Low Tech - Arduino board as ATtiny programmer:
http://hlt.media.mit.edu/?p=1706
(120Ωの抵抗を挟んでみた)
● ArduinoISP の問題
これがとっても悩みました。
Duemilanove に Arduino1.0 で ArduinoISP を書き込むとこんな感じのエラーが出て何ともなりませんでした。
上の2つはいつものエラーで、問題ないのですが、下の2つが問題。
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny45
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny45
avrdude: stk500_paged_write(): (a) protocol error, expect=0x14, resp=0x64
avrdude: stk500_cmd(): programmer is out of sync
・Duemilanove か Uno か?
・ブートローダーが問題なのか? (標準のもの? optiboot?)
・開発環境(002x か 1.0 か)なのか?
・ArduinoISPのバージョン(002x に付属のスケッチか、1.0 のものか)?
(以前購入しておいたUno(R1) を出してきて試したりしました)
結論としては、(Windows版での確認ですが)
★ Arduino 002x の環境で Arduino 002x に付属のArduinoISP スケッチ を使う!
この方法で、とりあえず動作確認できました。
Arduino 1.0 を使っていても、ArduinoISPは以前のものを使った方がよさそうです。
(あるいは、ArduinoISP以外のライターを使うとか?)
● さて、動かす。
これは、またまた以前の
ATtiny13 で Arduino
http://hello-world.blog.so-net.ne.jp/2011-11-17
からの発展です。
Arduino1.0 からでも以前の設定が出てきます。
しかし、そのまま選択しても動きません。
hardware / avr / cores / attiny13 にある 「WProgram.h」 というファイルをそのまま同じフォルダに「Arduino.h」というファイル名でコピーして保存します。
(「WProgram.h」 はそのままです。)
それだけです。