(ARDUINO)ARDUINO UNOで、ATtiny85をプログラムする [arduino]
開発環境(IDE)もArduino 1.0となりましたので、これとUNO(R3)を使ってATtiny85を、プログラミングしてみました。
(今回は8MHz動作のテストは行っていません。それについては、後日報告します)
参考にするのは、こちらProgramming an ATtiny w/ Arduino 1.0(http://hlt.media.mit.edu/?p=1695)です。
では、順番にいきましょう。
1.必要な物(ハードウェア系)
(1)arduino UNO
(2)ATtiny85
(3)ブレッドボードとジャンパワイヤー
(4)抵抗(110Ω~120Ωくらいに出来るもの)、このほかLEDを動作させるための適当な抵抗もあるとOK。
(5)LED1個
これらを使ってこのように配線します。
※ここで忘れてはいけないのは、プラスの5V電源を110~120Ωに通し、それをRESETの端子に接続しておくことです。こうしてリセット機能を無効にしておかないと、Arduino ISPが正しく機能しません。
※また、参考HPにあるように、10μFのコンデンサをRESET側に+、GND側に-を接続してもリセット端子が無効に出来ます。
ハードウェア系は以上です。
2.必要な物(ソフトウェア系)
(1)統合開発環境IDEの「Arduino1.0」
(2)ATtiny85書き込み用の設定ファイル(https://github.com/damellis/attiny/zipball/Arduino1)
ここで入手したdamellis-attiny-6bff522.zipを展開し、中身をArduinoのスケッチが保存されているディレクトリの「hardware」フォルダに移動します。
※もし「hardware」フォルダがない場合は、新たに作成してください。
3.ATtiny85へのプログラムの書き込み
(1)UNOに「Arduino ISP」のプログラムをインストール。
IDEを立ち上げて、[File]-[Examples]-[Arduino ISP]と進むと、ISP用のスケッチがどーんと開きますのでこれをUNOに入れてください。
(2)BORDの設定は、ATtiny85のインターナルの1MHz、もしくは8MHzを選択します。なお、今回のやり方では8MHzでは正しく動作しません。ヒューズ・ビットが1MHz動作のままになってしまっているからです。
(3)通信ポートは、UNOと同じポートを選択してください。
あとは、プログラムの作成をして、UPLOADすればOKです。
使えるのは、以下のコマンドです。
pinMode()
digitalWrite()
digitalRead()
analogRead()
analogWrite()
shiftOut()
pulseIn()
millis()
micros()
delay()
delayMicroseconds()
SoftwareSerial (has been updated in Arduino 1.0)
※なんと、ソフトウェアシリアルが使えるようですね。
でも、これはヒューズ・ビットを正しく8MHz動作に設定出来たときに使えます。
今はまだ使えません。
また、相変わらず……
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
このようなエラーは出ます。でも、このエラーが出ても問題なく書き込まれていますので、ご安心ください。
参考までに、サンプルとしてブリンクならば以下のようになります。
------------------------------------------------------------------
void setup() {
pinMode(0, OUTPUT);
}
void loop() {
digitalWrite(0, HIGH); // set the LED on
delay(1000); // wait for a second
digitalWrite(0, LOW); // set the LED off
delay(1000); // wait for a second
}
------------------------------------------------------------------
参考までに、ピンの配置は以下の通りです。
さて、ここまで来て問題なくUPLOAD出来れば手放しで喜べるのですが……どうも、うまくいかない場合があります。
で、解決策として私がやってみたものは以下の通りです。
(1)UNOのリセットボタンを押してから、アップロードしてみる。
(2)パソコンから、一度UNOのUSBケーブルを外して、つなぎ直してアップロードしてみる。
(3)IDEのArduino1.0を終了し、もう一度起動してから、アップロードしてみる。
(4)ボードの選択をインターナル8Mhz動作に設定していたならば、インターナル1Mhzに設定し直してアップロードしてみる。(※ヒューズ・ビットが正しく設定出来ていないかもしれませんから)
(5)ATtiny85を上から指でブレッドボードに押しつけてアップロードしてみる。
※ATtiny85はピンもとても華奢なので、きちんとブレッドボードに刺さっているかを確認してください。(意外にも結構これが原因だったりします)
これらの対応で、なんとかアップロードが出来ます。
一度書き込んでOKだったのに、二度目以降が失敗続き、なんてこともあるようです。
これは、抵抗の値を変えても、抵抗をコンデンサに変えても、変わらないようです。
なお、 近いうちに、8MHz動作について報告する予定です。
(今回は8MHz動作のテストは行っていません。それについては、後日報告します)
参考にするのは、こちらProgramming an ATtiny w/ Arduino 1.0(http://hlt.media.mit.edu/?p=1695)です。
では、順番にいきましょう。
1.必要な物(ハードウェア系)
(1)arduino UNO
(2)ATtiny85
(3)ブレッドボードとジャンパワイヤー
(4)抵抗(110Ω~120Ωくらいに出来るもの)、このほかLEDを動作させるための適当な抵抗もあるとOK。
(5)LED1個
これらを使ってこのように配線します。
※ここで忘れてはいけないのは、プラスの5V電源を110~120Ωに通し、それをRESETの端子に接続しておくことです。こうしてリセット機能を無効にしておかないと、Arduino ISPが正しく機能しません。
※また、参考HPにあるように、10μFのコンデンサをRESET側に+、GND側に-を接続してもリセット端子が無効に出来ます。
ハードウェア系は以上です。
2.必要な物(ソフトウェア系)
(1)統合開発環境IDEの「Arduino1.0」
(2)ATtiny85書き込み用の設定ファイル(https://github.com/damellis/attiny/zipball/Arduino1)
ここで入手したdamellis-attiny-6bff522.zipを展開し、中身をArduinoのスケッチが保存されているディレクトリの「hardware」フォルダに移動します。
※もし「hardware」フォルダがない場合は、新たに作成してください。
3.ATtiny85へのプログラムの書き込み
(1)UNOに「Arduino ISP」のプログラムをインストール。
IDEを立ち上げて、[File]-[Examples]-[Arduino ISP]と進むと、ISP用のスケッチがどーんと開きますのでこれをUNOに入れてください。
(2)BORDの設定は、ATtiny85のインターナルの1MHz、もしくは8MHzを選択します。なお、今回のやり方では8MHzでは正しく動作しません。ヒューズ・ビットが1MHz動作のままになってしまっているからです。
(3)通信ポートは、UNOと同じポートを選択してください。
あとは、プログラムの作成をして、UPLOADすればOKです。
使えるのは、以下のコマンドです。
pinMode()
digitalWrite()
digitalRead()
analogRead()
analogWrite()
shiftOut()
pulseIn()
millis()
micros()
delay()
delayMicroseconds()
SoftwareSerial (has been updated in Arduino 1.0)
※なんと、ソフトウェアシリアルが使えるようですね。
でも、これはヒューズ・ビットを正しく8MHz動作に設定出来たときに使えます。
今はまだ使えません。
また、相変わらず……
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
このようなエラーは出ます。でも、このエラーが出ても問題なく書き込まれていますので、ご安心ください。
参考までに、サンプルとしてブリンクならば以下のようになります。
------------------------------------------------------------------
void setup() {
pinMode(0, OUTPUT);
}
void loop() {
digitalWrite(0, HIGH); // set the LED on
delay(1000); // wait for a second
digitalWrite(0, LOW); // set the LED off
delay(1000); // wait for a second
}
------------------------------------------------------------------
参考までに、ピンの配置は以下の通りです。
さて、ここまで来て問題なくUPLOAD出来れば手放しで喜べるのですが……どうも、うまくいかない場合があります。
で、解決策として私がやってみたものは以下の通りです。
(1)UNOのリセットボタンを押してから、アップロードしてみる。
(2)パソコンから、一度UNOのUSBケーブルを外して、つなぎ直してアップロードしてみる。
(3)IDEのArduino1.0を終了し、もう一度起動してから、アップロードしてみる。
(4)ボードの選択をインターナル8Mhz動作に設定していたならば、インターナル1Mhzに設定し直してアップロードしてみる。(※ヒューズ・ビットが正しく設定出来ていないかもしれませんから)
(5)ATtiny85を上から指でブレッドボードに押しつけてアップロードしてみる。
※ATtiny85はピンもとても華奢なので、きちんとブレッドボードに刺さっているかを確認してください。(意外にも結構これが原因だったりします)
これらの対応で、なんとかアップロードが出来ます。
一度書き込んでOKだったのに、二度目以降が失敗続き、なんてこともあるようです。
これは、抵抗の値を変えても、抵抗をコンデンサに変えても、変わらないようです。
なお、 近いうちに、8MHz動作について報告する予定です。
2012-01-26 01:58
nice!(0)
コメント(0)
トラックバック(0)
コメント 0