縁側 > ホビー > おもちゃ > 電子玩具 > 電子小物道場
「縁側」-みんなが作る掲示板-からのお知らせ
縁側からのお知らせ

縁側をご利用いただく際のルール&マナー集を用意いたしました
ユーザーの皆様に楽しくご参加いただけるよう、主に投稿時の注意点などをまとめています。
ご投稿の前には必ずご一読をお願いいたします。詳しくはこちら⇒「縁側 ルール&マナー

紹介文

手始めにUncompatino(ATmega328P Arduino UNO 準互換)を勉強していきたいと思います。

  • 電子小物道場の掲示板
  • 電子小物道場の伝言板
  • 電子小物道場の投稿画像
電子小物道場の掲示板に
電子小物道場の掲示板に新規書き込み

Unconmatino でソフトウエアを開発するうえで避けて通れないのが、AVRマイコンへの FUSE bit の書き込み、ブートローダーの書き込みです。

Arduino は完成品で売られており、それらは既に書き込まれているため、自分で書き込む必要はありません。しかしながら Uncompatino のようにキットで売られているものは自分で書き込む必要があります。

そのために、avrdude が必要となります。

このスレでは avrdude の環境構築について書きます。

2014/12/31 09:40  [1681-6]   

写真1 Windowsの機能の有効化と無効化 写真2 解凍したものを1つのフォルダに集める

avrdude の環境構築について書きます。条件として、Windows7 64bit OS を前提としています。

参考にさせていただいたのは、「老い耄れしんすけ日記」です。

http://d.hatena.ne.jp/oibore_shinsuke/20
131114/1384378214



手順です。

1.avrdude をダウンロードする。
 これは「すzさん」が作成されたソフトウエアです。

 http://suz-avr.sblo.jp/category/780472-1
.html
 に行って、現時点の最新版、avrdude-serjtag04e.zip をダウンロードして解凍します。

2.avrdude-GUIをダウンロードする。
 これは「yukiさん」が作成されたソフトウエアです。
 avrdude はコマンドプロンプト(通称 dos窓)で使うものなので、GUIラッパー(GUIで包むものという意味)の、avrdude-GUIから呼び出して使います。
 でもこれは本家のavrdude-guiとは全く無関係とのことです。

 http://yuki-lab.jp/hw/avrdude-GUI/ に行って、現時点の最新版、 avrdude-GUI Version 1.0.5 実行バイナリをダウンロードして解凍します。

3.libusb0_x86.dllをダウンロードする。
 私も全然わかっていないのですが、これは、ユーザーがUSB機器を使うのに、いちいちWindowsのカーネルドライバーをいじらなくてもいいようにしている、DLLとのことです。

 http://sourceforge.net/projects/libusb-w
in32/
 に行って、libusb-win32-bin-1.2.6.0zip をダウンロードして解凍します。

4..NET Framework2.0を用意する。
 Windows7には最初からこれが付属しているとのことです。ただ何もしないと使えません。
 コントロールパネルから「プログラムと機能」を起動します。起動したら、左側のエリアに「Windows の機能の有効化または無効化」というリンクがあるので選択します。
 Windows の機能というウィンドウが開きます。ここで、Microsoft.NET Framework 3.5.1のチェックボックスをオンにします。ここでは塗りつぶされたようになっていればOKです。

 Windows8/8.1もやり方は同じです。写真1を参考にしてください。

5.1つのフォルダに上記を全部集めます。各フォルダから下記のものを1か所に集めます。
 avrdude.conf
 avrdude.exe
 avrdude-GUI.exe
 libusb0.dll(これは、libusb0_x86.dllをリネームしたものです)
 写真2を参考にしてください。

 普段は、avrdude-GUI.exe を起動します。

2014/12/31 13:31  [1681-7]   

写真1 デバイスマネージャーでCOM#を確認する 写真2 設定の変更 写真3 FuseのReadボタンをクリック 写真4 Fuse ビットを読み込む

動作確認をします。

1.USB ドライバーのインストール
 PCのUSB 端子に、Uncompatino を挿すとFTDIのドライバーがインターネット経由で自動的にインストールされます。少し時間は掛りました。10分くらいでしょうか。あらかじめドライバーを入手していれば、デバイスマネージャーから直接インストールします。これだとすぐに完了です。

2.Uncompatinoを接続したUSB端子のCOMポート番号を調べる
コントロールパネルからデバイスマネージャーを起動します。写真1のようにUSB端子にUncompatinoだけしか接続していなければ、COM3がUncompatinoに接続されています。もし、複数の装置がPCに接続されているなら、Uncompatinoを抜き差ししてCOMxが消えたり表示されたりしますからそれで判別してください。

3.avrdude_GUI を起動
 あらかじめ Uncompatino を PCの USB端子に挿しておきます。ちなみに挿すと LEDがピカピカ光ります。

 avrdude_GUIの画面で、Programmerのところをドロップダウンリストから下記を選択します。
 FT232R Synchronous BitBang(diecimila)

 Portには先ほど調べたものをドロップダウンリストから選択します。
 私の場合は COM3でした。

 Deviceには、ドロップダウンリストからAtmega328P(m328p)を選択します。

 Command line Optionには、-P ft0 B 115200 と打ち込みます。
 以上、写真2を参照のこと。

 Fuseエリアのところで、Readボタンをクリックします。写真3を参照のこと。

 Fuse ビットの値が読めたらOKです。写真4を参照のこと。

2014/12/31 14:15  [1681-8]   

書き忘れましたが、Uncompatinon のショートピンの状態は、全部ショートにしてください。
全部ショートの状態が、SPIモード(MISO-CTS, MOSI-DCD, SCLK-DSR, RESET-RI)の書き込み状態となります。

2014/12/31 14:39  [1681-9]   

訂正 写真1 Windowsの機能の有効化と無効化

[1681-7]にて写真1を間違えてしまいましたので訂正します。

2015/1/1 05:42  [1681-10]   

写真5 avrdudeの設定値

FUSEビットについて

hFUSE
7:ATmega328PのPC6端子は、UncompatinoのRESET端子に接続されているので、PC6はRESETピンにしなくてはならない。値は1にする。
6:デバッグWIRE機能を許可するとRESETピンがdw端子に定義され、外部からアクセスできるようになる。UncompatinoではPC6はRESETピン固定なので、デバッグWIRE機能は不許可とする。値は1にする。
5:直列プログラミングに使用される端子はPBと兼用されている。直列プログラミングするので、値は0にする。(1にすると並列プログラミングでしか書き戻せないので厄介なことになる)
4:ウォッチドッグ タイマはレジスタWDTCSRで制御でよいと思うので、値は1にする。
3:チップ消去でEEPROM内容を未保護でいいので、値は1にする。
2:書き込むブートローダーのサイズが2KBなので、値は0とする。
1:書き込むブートローダーのサイズが2KBなので、値は1とする。
0:ブートローダー領域として、値は0とする。
結局DAhとなります。

lFUSE
7:8分周しない。値は1とする。
6:システムクロック出力不許可にする。値は1とする。
5:外部クリスタル発振子、低速上昇電源。値は1とする。
4:外部クリスタル発振子、低速上昇電源。値は1とする。
3:低電力発振器動作。値は1とする。
2:低電力発振器動作。値は1とする。
1:低電力発振器動作。値は1とする。
0:外部クリスタル発振器。値は1とする。
結局FFhとなります。

eFUSE
eFUSEの7~3は未定義の部分なので、全部0とします。理由は1を書いても0のままでした。
それでは次にBODLEVEL2~0には何を設定すべきでしょうか。
その前にBODLEVELとはなんでしょうか。これはBrown-out Detector trigger level の略で、電源電圧低下の監視を何Vで行うかという設定です。今回はUSB電源なので、BODを設定しない(111)か、5Vの監視ということで(100)かですが、100とします。
結局04hとなります。


ブートローダについて
Arduino IDE の下記フォルダのoptiboot_atmega328.hex を使用します。
\arduino-1.0.6-windows\arduino-1.0.6\har
dware\arduino\bootloaders\optiboot\optib
oot_atmega328.hex


2015/1/8 22:01  [1681-23]   

avrdude-GUIでFUSEビットの書き込みをしたときのログを載せておきます。
値は、hFUSE DAh  lFUSE FFh  eFUSE FCh を書いた時のものです。

========== ここから下です。

avrdude.exe: BitBang OK
avrdude.exe: pin assign miso 3 sck 5 mos
i 6 reset 7
avrdude.exe: led pin assign rdy 10 pgm -
1
avrdude.exe: drain OK

ft245r: bitclk 230400 -> ft baud 11
5200
ft245r: set CBUS 40 -> 0
avrdude.exe: AVR device initialized and
ready to accept instructions

Reading | ##############################
#################### | 100% -0.00s

avrdude.exe: Device signature = 0x1e950f

avrdude.exe: reading input file "0x
DA"
avrdude.exe: writing hfuse (1 bytes):

Writing | ##############################
#################### | 100% 0.05s

avrdude.exe: 1 bytes of hfuse written
avrdude.exe: verifying hfuse memory agai
nst 0xDA:
avrdude.exe: load data hfuse data from i
nput file 0xDA:
avrdude.exe: input file 0xDA contains 1
bytes
avrdude.exe: reading on-chip hfuse data:


Reading | ##############################
#################### | 100% 0.02s

avrdude.exe: verifying ...
avrdude.exe: 1 bytes of hfuse verified
avrdude.exe: reading input file "0x
FF"
avrdude.exe: writing lfuse (1 bytes):

Writing | ##############################
#################### | 100% 0.02s

avrdude.exe: 1 bytes of lfuse written
avrdude.exe: verifying lfuse memory agai
nst 0xFF:
avrdude.exe: load data lfuse data from i
nput file 0xFF:
avrdude.exe: input file 0xFF contains 1
bytes
avrdude.exe: reading on-chip lfuse data:


Reading | ##############################
#################### | 100% 0.02s

avrdude.exe: verifying ...
avrdude.exe: 1 bytes of lfuse verified
avrdude.exe: reading input file "0x
FC"
avrdude.exe: writing efuse (1 bytes):

Writing | ***failed;
########################################
########## | 100% 0.14s

avrdude.exe: 1 bytes of efuse written
avrdude.exe: verifying efuse memory agai
nst 0xFC:
avrdude.exe: load data efuse data from i
nput file 0xFC:
avrdude.exe: input file 0xFC contains 1
bytes
avrdude.exe: reading on-chip efuse data:


Reading | ##############################
#################### | 100% 0.02s

avrdude.exe: verifying ...
avrdude.exe: verification error, first m
ismatch at byte 0x0000
0xfc != 0x04
avrdude.exe: verification error; content
mismatch
ft245r: set CBUS 40 -> 0

avrdude.exe done. Thank you.

============== 以上です。

2015/1/8 22:19  [1681-24]   

写真6 写真7 写真8 写真9

ATmega328pのFUSEビットの設定値を決めるにあたってのデータシートを載せておきます。

2015/1/9 23:07  [1681-25]   

写真10

続きです。

Atmega328pのデータシートは下記からダウンロードしました。

英文
http://akizukidenshi.com/download/mcu/av
r/atmega48-88-168-328_A_P_PA.pdf


日本語
http://www.avr.jp/user/DS/PDF/mega88A.pd
f

2015/1/9 23:13  [1681-26]   


この掲示板の新着スレッド

全員投稿可
電子小物道場
電子小物道場をお気に入り登録
運営者:
オーションさん
設立日:
2014年12月27日
  • 注目度:

    303(お気に入り登録数:2件)

  1. 1ドラマスキー

該当掲示板はありません

ページの先頭へ