「Arduino NanoをAVRライタにしてATmega328P単独でLチカしてみる。(その1)」の続き。
3.ブレッドボードやジャンパ線などを使って以下のように配線、回路を準備する。
ATmega328P
1pin – D10
1pin – 10kΩ – 5V
7pin – 5V
8pin – GND
13pin – 1kΩ – LED – GND (Optional)
17pin – D11
18pin – D12
19pin – D13
19pin – 1kΩ – LED – GND (Optional)
20pin – 5V
22pin – GND
Arduino Nano
RST – 10kΩ – 5V
RST – 10uF – GND
D7 – 1kΩ – LED – GND (Optional)
D8 – 1kΩ – LED – GND (Optional)
D9 – 1kΩ – LED – GND (Optional)
LEDは表示用なので任意で構わないと思う。
ただ、あった方が動作確認になっていい。
上にも書いた通り、初めは内蔵クロックでと考えていた。
だが、このATmega328PはUNOから外したものだった。
なので16MHzのセラロックを取り付けた。
Ceralock center pin – GND
9pin – Ceralock
10pin – Ceralock
抵抗の値はそこらに転がってたのをつけただけで適当。
LEDのは数百Ω程度以上でお好みで、他は数kΩ程度。
コンデンサはもっと小さな値でやってる人も見かけた。
4.Arduino NanoにArduinoISPを書き込む。
これは通常のスケッチを書き込むのと同じ手順だ。
ただし、上の RST – 10uF – GND は外さないと書き込めなかった。
無事書き込みが終了した。
D8につないだLEDがゆっくり強弱を繰り返す感じで点滅する。
5.以下のコードで新しいファイルを作成する。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
void setup() { pinMode(7, OUTPUT); pinMode(13, OUTPUT); } void loop() { digitalWrite(7, HIGH); digitalWrite(13, LOW); delay(500); digitalWrite(7, LOW); digitalWrite(13, HIGH); delay(500); } |
これはATmega328PでLチカをするコードだ。
13pin – 1kΩ – LED – GND (Optional)
19pin – 1kΩ – LED – GND (Optional)
が交互に点滅する。
6.IDEを以下の設定にして RST – 10uF – GND を取り付ける。
このコンデンサ、あるとNanoにArduinoISPが書き込めない。
ところが、無いとATmega328Pへの書き込みでエラーが出る。
正直、意味がよくわからない設定もあるがそのまま行く。
7.Sketch > Upload Using Programmer
最初だけ保存窓が出るがお試しなのでそのまま保存。
書き込み中はArduino NanoのD7とATmega328Pの19pinのLEDが点滅する。
8.ATmega328Pの13pinのLEDがゆっくりLチカを始める。
どうやら書き込みできたようだ。
だが、点滅速度がやたら遅い。
これは何かの設定ミスだろうからあとで考える。
とりあえずホントに単独で動いてるのか確認する。
Arduino Nanoを取り外して電源を外から取ってみた。
追記
現在の状況と問題点
電源と1pinプルアップとセラロックだけの最小回路でLチカが確認できた。
動作スピードがプログラムで期待したものより遅い。
遅いがプログラムで2倍にすれば2倍にはなる。
同じセラロックで倍のクロックの設定で書き込むと半分の実行速度になる。
内蔵クロックでの動作ができない。
ちょっと進展
いろいろやってたらセラロック無しで8MHzで正しい速度で動いた。
そもそもこれが当初目的としていた動作状態だ。
ただ、何をやったらそうなったかわからない。
パーツや配線でなく何かの手順が間違ってる。
「Arduino NanoをAVRライタにしてATmega328P単独でLチカしてみる。(その3)」へ続く。
Tweet