ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

arduinoコミュのUNO を内蔵クロック 8MHz で動作させたい

  • mixiチェック
  • このエントリーをはてなブックマークに追加
久々のトピ立てですがよろしくお願いします。

現在、生の ATmega328 を Arduino UNO の 8MHz 内臓クロックにして
動かそうとしているのですがやり方がわからず困っています。
WEB上のあちこちの解説ページを見ているのですが、いまひとつ
重要な部分の理解ができていないため、微妙に説明が省略されて
いる部分があるとそこで思考が止まってしまいます。

というか、まず AVR の基本的な事からして理解が不十分のため
どのようにすればセットアップができるのかさえこんがらがってます。

そこで知りたいのですが、

1)ヒューズビットというわれる設定と、Arduino のブートローダーとは
 別物なのか?

2)8MHz 内蔵クロックを動かすためには、AVR ライターが必要なのか?

その他、実際に8MHzの内蔵タイプを作る上でのノウハウをご存知の
方がいらっしゃったらおつきあいいただけませんでしょうか。

よろしくお願いします。

コメント(14)

>1)

別物です。

>2)

ISPライタまたはJTAG ICEが必要。
カツベエさんありがとうございます。
1)別物で了解しました。
2)ISPライタは arduino で代行できるものでしょうか?
>>[2]

>ISPライタは arduino で代行できるものでしょうか?

私は昔一度試して失敗して以来試していませんが、できるそうです。
こんにちは、早速のお返事ありがとうございました。

現在、以下のように作業を行っていますがうまくいかないようで困ってます。

1)arduino uno を使って arduinoISP を作っておく。
2)arduinoISP から生の ATmega328P に SPI と リセットを配線(したシールドを
 作ってシールドに生 ATmega328P を乗せる)
3)avrdude-GUI というアプリケーションを使って ATmega を認識させる。
 ライターに avrisp を選択し、baud=19200、com=指定ポートを選択し、
 ATmega328p のデバイス認識およびヒューズビットの読み出しが正常に
 行われている事を確認済み。

4)arduino-1.0.4\hardware\arduino\bootloaders\atmega\ の中にある
 ATmegaBOOT_168_atmega328_pro_8MHz.hex を 生のATmega328P に書き込む。
 書き込みは無事終了する。

5)ヒューズビットを 8MHz内蔵クロックに切り替える。
 EXTENDED = 0xFD 、HIGH = 0xDA 、LOW = 0xFF 、LOCKBIT = 0xCF

6)一度 PC の USB から arduinoISP を取り外す。
  arduinoISP に刺さっている arduino uno のチップを取り外し、
  ヒューズビットを書き換えた ATmega328P を挿入して
  再度 PC の USB に差し込んで PC に認識させる。

7)arduino IDE で blink をコンパイルしてターゲットに転送するが、
  ターゲットが反応しない。

何か手順のミスや勘違いがありましたら教えてください。
最終的には、arduino uno を 8MHz 内蔵クロックで動かしたいと思っています。

よろしくお願いします。
すみません、ヒューズビットの値が間違っていました。
内蔵8MHzのヒューズビットは以下の通りでした。

EXTENDED = 0xFD
HIGH = 0xDA
LOW = 0xE2
LOCKBIT = 0xCF

どっちにしても動いていません・・・
blinkを転送する時、boardは何を選択してますでしょうか?
ATmegaBOOT_168_atmega328_pro_8MHz.hexはoptibootではないので標準のUNOとは転送速度が異なり、もしUNOを選択していたら転送できないと思います。

私は8MHz用にoptibootをコンパイルし、さらにboard.txtに8MHzのUNOの定義を追加しました。
http://jtakao.web.fc2.com/elec/8mhz_optiboot/index.html
おひさしぶりです。あの後色々トライしてみましたが、
ヒューズビットを書き換える事自体はできるのですが
その後 bootloader を書き込んだり、その後 arduino
として使う事ができずに結局一時中断してしまいました。
秋月でセラクロック16MHz使えば40円で省スペース
で済むし・・・(それを逃げという)

AVRライターを購入したらまたリトライするかもしれません
ので、その折にはよろしくお願いします。
別トピで見かけた話題ですが手元で試してみたら動いたので報告します。
基本的にたくさんとヒューズビットやらは同じですがちゃんと動きました。

念のため手順も書いときます。

ボードはFreetronicsのElevenという UNO互換のものです。

ATmegaBOOT_168_atmega328_pro_8MHz.hexを使用してmega328に書き込み。(自分はプログラマがあったのでそれを利用して書き込みました。

ヒューズは E=0xFD, H=0xDA, L=0xE2 ロックビットは仕様書読むのめんどいのでロック無し(FF)のままです。

あとは普通にIDEを使用して Tool > Board で "Arduino Pro or Pro Mini(3.3V, 8MHz )w/ATmega328"を選択(もし5V電源つかってても電圧はソフトから見えないので関係ないです)してUploadするだけです。

動かないとの事ですが、IDEのBoard設定をUNOでやってませんよね?

あと考えられる原因は、内蔵クロックの周波数誤差かな。AVRの内蔵クロックはある程度誤差があるのでたまにクロックの微調整レジスタを書き直して調整しないとシリアルがうまく通信できない個体があります。

取り急ぎ。
おぉ〜、こちらで以前に書き込みがあったのですね!
私のヒューズビットは少し違って、05,DA,E2です。こちらの商品を真似しています。
http://www.switch-science.com/catalog/1414/

書き込みはこちらの記事の真似。但し、使ったボードはDiecimila / Duemilanoveではなくて、秋月Arduinoです。
http://make.kosakalab.com/arduino/bootloader/
書き込みしたブートローダはねこ蔵さんと同じです。

更に書き込んだ328PはUNOやその他互換ボードに戻すのではなく、ブレッドボード上に328Pを挿して、抵抗2個とコンデンサ3個、LED1個で構成しています。

参考にしたのはこちらの記事の真ん中より下にある、ブレッドボードでのArduinoです。
http://pc.watch.impress.co.jp/docs/column/musashino_proto/20090806_307235.html

但し、FTDIと328Pの間のR3,R4は省略しているのと、3.3Vで動かしています。
また、ArduinoIDE上のボード選択はArduino Pro of Pro Mini (3.3V,8MHz) w/ATmega328

ご参考になれば幸いです。
あっ、書き忘れましたが、上の記事でヒューズを真似した商品の328P、ブートローダ書き込み済みなのに、チップ単体より安くてお買い得だと思います。
>私のヒューズビットは少し違って、05,DA,E2です。こちらの商品を真似しています。

今ちょちょいとAVRの仕様書みてみたんですが、Extendedは下位3ビットだけが有効で残りはレジスタ上では1が読めるので05=FDで同じようですね。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

arduino 更新情報

arduinoのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング