google-site-verification: google3bd66dd162ef54c7.html

Arduino UNOで ATmega328Pへブートローダーを書き込む

Arduino ブートロダー書き込みの配線
 
 Arduinoで何か作る時、ささっと作るならUNOなどの完成ボードでやれば簡単です。でも、恒久的に使うとなるとコストパフォーマンスが悪いし、何より消費電力が大きいのが難点です。

 そういう場合は、ATmega328Pのチップにブートローダーを書いておき、UNOなどに挿してスケッチを書き込み。その後チップを取り外して単独動作させる、という手がプログラムライターが不要なので一番簡単だと思います。

 でも、この手を使うにはブートローダを書き込んだATmega328Pのチップが必要になります。スイッチサイエンスからブートローダー書き込み済みのチップが350円で売られているので、それを買えば簡単です。でもなんだかつまらない気もするので、素のATmega328Pを秋月から入手しました。こちらは250円。

 Arduino UNO を使ったブートローダ書き込みについてはWeb上にいくつか記事が書かれており、基本的にはその通りにやればうまくいきます。

 ただ、はまりやすいと思われる点などがあったので、そのあたりをまとめておきます。

 手順や必要なファイルは、Uno Bootloader Fixer...に書かれている通りに行います。

▼配線図  http://arduino.cc/en/Tutorial/ArduinoISPより抜粋転載
ブトローダー書き込み、実態配線図
 冒頭の写真はこの図をもとに配線しています。ただ、この図は電源の配線が丁寧すぎるので少し手抜きしました。

 以下、私が遭遇したトラブルです

1.コンパイルエラー
 optifiz.zipを解凍してコンパイルすると、WProgram.hが見つからないというエラー発生。
 これは、optiLoader.hの中に書かれているインクルードファイル名を修正することで対処。つまり、
  
   #include <WProgram.h> を #include <Arduino.h> に変更 (一部全角にしています)

 この修正が必要であることは、あちこちのサイトに書かれていました。

 それでもコンパイルエラー発生
なぜか二つプログラムが、、
 なぜかoptifixが二つある!(クリックで拡大します)

 よく判らないのですが、スケッチをいつもの作業用のフォルダに置いたら、コンパイルが通るようになりました。上の状態は、スケッチを、¥ardunio¥arduino-1.0¥libraries¥optifix 配下に置いた場合です。何が起きてるのかうまく説明出来ないのですが、どこかが干渉しているのでしょう。

 これでコンパイラが通るようになったので、早速アップロードしてブートローダー書き込みは一応成功。

 でも、以下の点に注意が必要です。

2.実行手順とターゲットの電源
 Arduinoではプログラムをアップロードするとすぐに実行が始まりますが、実行までにシリアルモニタを19200bpsに設定しておかないと、書き込み成功の画面を見ることが出来ません。
 私、いつもの9600bpsの状態のままでうっかりスケッチをアップロード。その後シリアルモニタを見るとなにやら文字化けしたメッセージが。ならば、19200bpsに設定してリセットをかけると書き込み失敗の文字が!

 あとで判ったのですが、この文字化けしたメッセージは、実は書き込み成功のメッセージでした。optifixのスケッチはチップのクロックオシレータを外部に変更するので、二回目以降はエラーが帰ってきたわけです。

 こういう目に会わないための対策として、ターゲットCPUの電源(5V)の配線は実際に書き込みを行う直前まで抜いておくと良いと思います。ターゲットの電源が入っていなければoptifixはエラーメッセージを表示するので、スケッチなどソフト側の環境の準備が済んでいることが確認出来ます。その後、ターゲットに5V電源を供給してローダーを書き込めば、見通し良く作業を進めることが出来ます。

▼シリアルモニタで見た書き込み状況
シリアルモニター画面
 失敗!と書いてある時点では5V電源を入れていない状態、つまりわざと失敗させています。再スタートをかける前に5V電源を供給することで、無事書き込みは成功しています。

 続けて他のチップに書き込みを行う場合などもあると思うので、ターゲットの5V電源は切っておいて作業した方がいろいろと安全だし、状態が判りやすくなると思います。

 冒頭の写真、判りにくいですが実は5V電源(赤いジャンパー線)は未接続状態です。

 この記事の作成では、なんでも独り言さんのサイトを参考にさせていただきました、ありがとうございます。
関連記事

テーマ : ハードウェア
ジャンル : コンピュータ

コメントの投稿

管理者にだけ表示を許可する

書き込めました

はじめまして
 ArduinoUNOを使って、ATmega328への書き込みができました。
ありがとうございます。

Nariさん、今晩は

コメントありがとうございます。
何かお役に立てたなら嬉しいです。

そちらのブログ拝見しました。LabVIEWやMATLABとかも触ってみたいのですが、時間と金がありませんw

ブートローダーの書き込み。

ラジオペンチさん。こんばんは。
実は私も生のATMeag328を購入して、ブートローダーを書き込みたいなと思い、例によってネット徘徊していたら、またもやラジオペンチさんのページにたどり着きました。
記事を読んで、大体分かったのですが、参考ページの
http://arduino.cc/en/Tutorial/ArduinoISP
の接続図を見ていたら、セラロックを使った配線と、ラジオペンチさんのように何も使わない接続図があるのですが、両者の違いは何なのでしょうか。
最終的には「ユニバーサルの」にゼロプレッシャーソケットを取り付けて、ブートローダー書き込み機専用にしたいと思っています。
どこかの記事で読んだのですが、一度ブートローダーを書き込んだICに再度書き込みをするには、クリスタルが必要と書いてあったような・・・
それと、もしクリスタルを使う配線にする場合、ICの1番ピン(+5Vを供給しているところ)に使われている抵抗は何Ωの抵抗を使用すればよいのでしょうか。
毎度お世話になりすみません。

re:ブートローダーの書き込み。

かずべいさん、おはようございます。

セラロックを配線を省略するとブートローダーの書き込みは一回だけになります。いったんブートローダーを書き込むとクロックが内蔵のCRオシレーターから外部オシレーターを使うようになるからです。

ユニバーサルーのを使うならオシレーターも付けておいたほうがいいです。こうしておくヒューズが変な状態になって使えなくなったチップの復活にも使える可能性があります。ブレッドボードで私やったことがあります。

1番ピン(Reset)はチップ内部で50kΩでVccにプルアップされています。なので外部に抵抗は不要です。でも安定性重視なら外部でプルアップしているのでしょう。その場合は10kΩくらいでいいと思います。

では、ご検討を祈ります。

いつもありがとうございます。

ラジオペンチさん。こんにちは。
いつも的確な情報をありがとうございます。
やっぱりそう言う事だったんですね。
実はブレッドボード上で実験してみたんですが、書き込み済みのAVRにやってみたら、何度やっても「G」を入力する画面に戻ってしまうので、そんな感じがしました。
あれから私も色々調べてみましたが、こちらのページで書き込み用シールドを作成されている方がいらっしゃったので、参考にして見たいと思います。
http://www3.big.or.jp/~schaft/hardware/bootloader_writer/page002.html
ちなみに、USB電流積算計の方ですが、結局圧電ブザーを取り付けて動作させると、挙動がおかしくなり動作しなくなったため、やはり元に戻しました。
ブートローダー書き込み機を作り終えたら次は、スケッチ書き込み専用Arduinoを作成しようと考えております。
いや~すっかり電子工作にはまってしまいました。
また、立ち寄らせていただきます。

ご報告

ラジオペンチさん。こんにちは。
色々とご助言頂いたおかげで、満足の行く物が出来上がりました。素人相手にいろいろ教えて頂いてありがとうございました。
とりあえず何とか出来上がりましたので、ご報告いたします。
一応「ブートローダーライター」は
http://kazubeiblog.blog90.fc2.com/blog-date-20140116.html
そして「スケッチライター」は
http://kazubeiblog.blog90.fc2.com/blog-date-20140117.html
で、記事にしています。
またちょくちょく立ち寄らせていただきます。
ありがとうございました。

re:ご報告

かずべいさん、今晩は

ブートローダーライターにスケッチライターの記事拝見しました。工作用便利グッズも。
私もライター作ってみたいのですが、面倒なのでその都度ブレッドボードに配線してます。

ブートローダーを一つ書くと市場価格で100円分価値が上がるので楽しいですよね。

それとラジコンヘリやられているんですね、うらやましいです。
カレンダー
09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード