arduinoとAVR

前回ハマりましたが、arduinoの簡単さってすごいですよね~。
ただ、たまに微妙にですがあの大きさが仇になることも有りますw
今回基板を作るにあたって微妙にarduino nanoでは大きくてAVRを使ってみることにしました。


むか~~し書いたarduinoのスケッチをAVRに入れる方法の記事を思い出しました。

まずはその記事に従いAtmega328Pが使えるように
http://www.leonardomiliani.com/repository/package_leonardomiliani.com_index.json

をコピーして

次にarduino IDEのArduino→References(windowsの場合はファイル→環境設定)をクリックすると下の様なボックスが出ます。
スクリーンショット_2017-03-09_17_52_00.png

このボックスの右端のマークをクリックして最後の行の終わりで改行してから
ctrl+vでコピーを張り付けます。(ここでは右クリック使えませんw)

ツール→ボード→ボードマネージャーをクリックし

ツールで328Pを選択して、念のため(Opitboot)と書いてある物を選択。
これはarduino用のブートローダーがスケッチと一緒に書き込まれる設定です。

そもそもarduinoのブートローダーとはarduinoIDEを使ってarduinoにUSBを介してスケッチを書き込むために必要な物で、これが書き込まれたAtmega328PでないとUSBから書き込めません。
ちなみにこのブートローダーが初めから書き込まれているATmega328Pも秋月で素の物と比べて40円高で売っていますw

arduinoの対応する端子が分かるようにシールが貼ってあるので超便利w

16Mhz の発振子を付ければarduinoとまったく同等の機能となります。(あっw発振子にGND配線も必要ですw)

この位の差となりますね~。

まっ、ブートローダーは上記のように自分で書き込みも出来ますから、このシールとその手間を40円で高いと思うかどうかですねw

ちなみにブートローダーが入っていますと

arduino UNOに取り付けてarduinoUNOの設定で書き込みが出来ます。

で、書き込んだものは先ほども言いましたが全くarduinoUNOと同等の仕事をしてくれますw

ちょっと横道にそれましたが、づづっと戻ってボードの設定が終わったらコンパイルしてHexファイルを取り出すのですが、以前は面倒でしたが現在は

それ専用のコマンドが在って、コンパイル後にこちらで確認

こんな感じでHexファイルが保存されています。

これをAVRISPmk2を使えば普通の(ブートローダーの入っていない)ATmega328Pにも書き込めます。

先ほどのHexファイルを指定してProgramをポチっと

フューズの設定は注意してくださいね

オレンジのチェックは外して、外部クリスタルを選択します。

Programを押すと警告がでます。これは外部クリスタル用の設定に変えると今後は外部クリスタルが付いていないとプログラムの書き込みができなくなる事への警告です。
ちなみに後に外部クリスタルを付けた状態で内部クリスタルを選択してやるとまた外部クリスタル無しでもプログラムの書き込み出来るようになります。

Continueをポチッと押して完了。

動画はブートローダー書き込み済みの物ですが、この方法でも同じように動きます

この位の大きさの差と再プログラム時の書き込みの手間等を考えると何方を取るか微妙ですよね~。

ちなみに同じような方法でコチラを参考にattiny85が使えるようにして、前々回のNeoPixelのプログラムのHexファイルを作成しAVRISPmk2で同じく書き込んでみました。上記ブログの様にarduinoを用いての書き込みでも出来ます。
プロブラムは少し改変しています。
2行目を #define PIN 3
6行目を #define engine 0
7行目を 
#define after 1
に変更しています。

フューズの設定は外部クリスタルは必要なく内部クリスタルの8Mhzで動きますので、LOW.CKDIV8のチェックを外すだけです。
このattiny85の大きさはarduinoとはかなり差があり助かりますねw
今話題のレベルのレイザークレストのエンジンとかにどうでしょうか(^_^)/

arduinoで前回みたいなクソめんどくさいタイマー割り込み考える位ならこうやって小さな別マイコンで管理した方が簡単ですもんねw

関連すると思われる記事:

12 comments

  1. こんにちは
    ISPポイントのピンだけ出しておくと、書き換えが簡単ですよ~

  2. AVRやったやった。
    懐かしいですね。でも僕はアルディのUNOに
    書き込んでマイナスドライバー突っ込んで
    バコってはずすのよ。
    んで出来上がり。新しいメガ突っ込んで
    データ送って初期化して終わりなの。
    ナノだけにね!

  3. こんばんは
    前回の記事のご説明をありがとうございました!
    お陰でvolatileの使い方が分かったような、、、(笑)
    今回の記事もNANOの大きさが問題の時は凄く役に立つ内容ですね。こうなってくるとますますPICには戻れそうもありません。まだ10個以上の在庫があるのですが、、、

  4. 今回のエントリは色々な備忘録として、とても良いです!

    みんな。もっとTips書き込むんだ!

  5. きららさん こんにちは!
    コメントありがとうございます!
    そうですよね~私みたいに一発でプログラム決まらないアホにはICSPの設置は必要ですよね~。
    展示会でその場で書き換えちゃうことさえありますからねw

  6. てつのさん こんにちは!
    そうだね~UNOのマイコン部分を置き換えての書き込みが楽だよね。
    ただ、その場合は生のATmegaは使えなくてブートローダーが書き込まれていないとプログラムを書き込めないんだよね~。そのためのブートローダー書き込み済みATmegaが秋月に存在しているのは今回初めて知りましたw
    このブートローダー書き込み積みATmega328Pは秋月だと320円なんだけど、Amazonとかでは1000円以上で売られているというwwwホントAmazon怖いわwww

  7. Vividさん こんにちは!
    私も今回の一件でvolatileの使い方がなんとなくわかりましたw
    Vividさんも随分arduinoにドップリと浸かってきましたねww
    Nanoが大きさ的にダメな時はもう少し小さいarduinoもあるみたいですが、究極はやはりマイコン単体ですよねw最小求めたらNanoに乗っているATmega328単体と言う物も有りますからねw
    実は私もPIC結構余って持ってますwww

  8. gyoさん こんにちは!
    これ昔書いた記事の書き直し版だからw
    小さい物モデラーのgyoさん的にはマイコンの大きさはかなり気になるところでしょうねw
    最終的にはNanoに乗っているATmega328も単体で今回と同じように使えるので、いざとなったら試してみてw
    それと小さい物回路としてはdiorama111さんをフォローすると色々と得るところが大きいと思うよ。この人凄いからwwうちらなんかとはレベルが違うよw
    私のプログラミングのきっかけになった人です^^

  9. いやできるのよ!
    初期化コマンドあるから!
    どうやるか忘れたけど!!!
    (笑)

  10. どんどんarduino菌を周りにバラまいてますね、感染力ハンパないわw
    まぁ冗談は置いといてナイス記事です(^^)
    ライブラリ使いまくれるArduinoIDEで設計して単体マイコンに落とし込めるメリットは大きいですよね。nanoで困ったらここの記事に戻ってこよう!328P単体もなぜか持ってるし(使ったことないけど(^^; )

  11. てつのさん こんばんは!
    えっ!そんなコマンド有るの???
    ブートローダー無しでの書き込み・・・・どうなってるのか分からない・・・
    ちょっと思い出してwww!!

  12. なおさん こんばんは!
    arduinoはかのVividさんも感染しましたからねw
    実はコレ、arduinoを始めたきっかけの記事の焼き直しでもあるんですよw
    AVRに書き込みできるのを知って真面目にarduinoの勉強始めたからねw
    だって単体のマイコンである程度出来るならそれであまり不自由のない模型製作だったからね~^^;
    それが今ではarduinoなかったらやりたい事の半分以上は出来そうにありませんw
    マイコン単体使いも簡単だから試してみてね~!

Leave a Reply

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

wp-puzzle.com logo