SSブログ

(ARDUINO)ARDUINO UNOで、ATtiny85をプログラムする [arduino]

開発環境(IDE)もArduino 1.0となりましたので、これとUNO(R3)を使ってATtiny85を、プログラミングしてみました。
(今回は8MHz動作のテストは行っていません。それについては、後日報告します)

CIMG0178.JPG
 参考にするのは、こちら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個

 これらを使ってこのように配線します。

ArduinoISPtoATtiny45_85LED.png

 ※ここで忘れてはいけないのは、プラスの5V電源を110~120Ωに通し、それをRESETの端子に接続しておくことです。こうしてリセット機能を無効にしておかないと、Arduino ISPが正しく機能しません。

CIMG0179.JPG

 ※また、参考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
}

------------------------------------------------------------------

参考までに、ピンの配置は以下の通りです。
ATtiny85.gif


さて、ここまで来て問題なくUPLOAD出来れば手放しで喜べるのですが……どうも、うまくいかない場合があります。

 で、解決策として私がやってみたものは以下の通りです。
(1)UNOのリセットボタンを押してから、アップロードしてみる。
(2)パソコンから、一度UNOのUSBケーブルを外して、つなぎ直してアップロードしてみる。
(3)IDEのArduino1.0を終了し、もう一度起動してから、アップロードしてみる。
(4)ボードの選択をインターナル8Mhz動作に設定していたならば、インターナル1Mhzに設定し直してアップロードしてみる。(※ヒューズ・ビットが正しく設定出来ていないかもしれませんから)
(5)ATtiny85を上から指でブレッドボードに押しつけてアップロードしてみる。
 ※ATtiny85はピンもとても華奢なので、きちんとブレッドボードに刺さっているかを確認してください。(意外にも結構これが原因だったりします)

 これらの対応で、なんとかアップロードが出来ます。

 一度書き込んでOKだったのに、二度目以降が失敗続き、なんてこともあるようです。
 これは、抵抗の値を変えても、抵抗をコンデンサに変えても、変わらないようです。

なお、 近いうちに、8MHz動作について報告する予定です。

nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。