この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
広告
posted by fanblog
2016年06月05日
USB−シリアル変換IC FT232RLを使ったブートローダの書き込み
Aruduino IDE(開発環境)を使用してもISPにてブートローダを書き込めるとのことですが、Aruduino(ハードウエア)をライターとして用意し、ライターソフトも書き込む必要があります。
avrdude(開発環境)は、ターゲット(例えばUncompatino)のATmega328Pに直接ヒューズビットやブートローダを書き込めるとのことです。これは、USB-シリアル変換ICのFT232RLのCTS、DSR、DCD、RIの4つの制御線を以下のようにATmega328Pに接続することによって、ヒューズビットとブートローダを書き込めるようになっているとのことです。
CTS--MISO
DCD--MOSI
DSR--SCK
RI--RESET
+5VとGNDはUSB経由でPCから供給されることが前提。
参考にしたサイトです。
http://engawa.kakaku.com/userbbs/1681/Page=2/SortType=ThreadID/#1681-6
avrdude(開発環境)は、ターゲット(例えばUncompatino)のATmega328Pに直接ヒューズビットやブートローダを書き込めるとのことです。これは、USB-シリアル変換ICのFT232RLのCTS、DSR、DCD、RIの4つの制御線を以下のようにATmega328Pに接続することによって、ヒューズビットとブートローダを書き込めるようになっているとのことです。
CTS--MISO
DCD--MOSI
DSR--SCK
RI--RESET
+5VとGNDはUSB経由でPCから供給されることが前提。
参考にしたサイトです。
http://engawa.kakaku.com/userbbs/1681/Page=2/SortType=ThreadID/#1681-6
タグ: avrdude
ATmega328P ヒューズビットに設定する値
日本語データシートからヒューズビットの項目P182を抜き出しました。ATmega328Pとしてのヒューズビットの設定値を決定します。
前提条件:USB電源、16MHz水晶発振器、3.3V動作にも対応しておく。水晶発振器の出力は外部に供給しない(全振幅発振器にはしない)。
P182は下記。
拡張ヒューズバイト:
BODLEVEL0~2の設定 電源電圧低下検出レベルの設定。 BODLEVELの値の説明についてはP197参照。
P197は下記。電源が+5V固定なら100とすべきだが、+3.3Vで駆動させることは十分想定されるので、101の設定にしておくのが無難と思われる。よって拡張ヒューズバイトは、FDhとする。しかしながら実際にこの値を書いても拡張ヒューズバイトは下3ビットしか自由に書き込めない。上位5ビットは何を書いても0になるので、拡張ヒューズバイトは、05hとする。
ヒューズ上位バイト:
RSTDISBLは、PC6はRESETピンとするので1を指定。
DWENは、デバッグのやり方の知識がないのでとりあえず無効として1を指定。
SPIENは、直列プログラミングを許可するので、0を指定。
WDTONは、ウォッチドッグ タイマは常時有効にしないので1を指定。
EESAVEは、チップ消去からEEPROM内容を保護しないので1を指定。
BOOTSZ1,0ブートローダのサイズ指定。ブートローダのファイルサイズで決めるべきものだが、自分ではブートローダを作成しないので、出来合いのもののサイズから、2048ワードとなる01を指定する。
BOOTRSTリセットベクタをブートローダ領域にするかどうかの指定。ブートローダ領域にするので0を指定する。
表27-7は下記。
ヒューズ上位バイトは、DAhとする。
ヒューズ下位バイト:
システムクロックは、16MHz水晶発振器としますのでこれを前提とする。パワーダウンパワーセーブ機能は使用しないことにする。
CKDIV8 システムクロックを8分周するかどうか。分周しないので、1を指定。
CKOUT システムクロックは出力しないので、1を指定。
水晶発振器だが、出力を外部に供給しないので全振幅発振器にはしない。よって、表9-3から、CKSEL3〜1 111を指定。
USB電源(電池駆動しない)なので、パワーダウン、パワーセーブ機能は使用しない。表9-4から、CKSEL0は1、SUT1,0は01とする。
ヒューズ下位バイトは、DFhとする。
前提条件:USB電源、16MHz水晶発振器、3.3V動作にも対応しておく。水晶発振器の出力は外部に供給しない(全振幅発振器にはしない)。
P182は下記。
拡張ヒューズバイト:
BODLEVEL0~2の設定 電源電圧低下検出レベルの設定。 BODLEVELの値の説明についてはP197参照。
P197は下記。電源が+5V固定なら100とすべきだが、+3.3Vで駆動させることは十分想定されるので、101の設定にしておくのが無難と思われる。よって拡張ヒューズバイトは、FDhとする。しかしながら実際にこの値を書いても拡張ヒューズバイトは下3ビットしか自由に書き込めない。上位5ビットは何を書いても0になるので、拡張ヒューズバイトは、05hとする。
ヒューズ上位バイト:
RSTDISBLは、PC6はRESETピンとするので1を指定。
DWENは、デバッグのやり方の知識がないのでとりあえず無効として1を指定。
SPIENは、直列プログラミングを許可するので、0を指定。
WDTONは、ウォッチドッグ タイマは常時有効にしないので1を指定。
EESAVEは、チップ消去からEEPROM内容を保護しないので1を指定。
BOOTSZ1,0ブートローダのサイズ指定。ブートローダのファイルサイズで決めるべきものだが、自分ではブートローダを作成しないので、出来合いのもののサイズから、2048ワードとなる01を指定する。
BOOTRSTリセットベクタをブートローダ領域にするかどうかの指定。ブートローダ領域にするので0を指定する。
表27-7は下記。
ヒューズ上位バイトは、DAhとする。
ヒューズ下位バイト:
システムクロックは、16MHz水晶発振器としますのでこれを前提とする。パワーダウンパワーセーブ機能は使用しないことにする。
CKDIV8 システムクロックを8分周するかどうか。分周しないので、1を指定。
CKOUT システムクロックは出力しないので、1を指定。
水晶発振器だが、出力を外部に供給しないので全振幅発振器にはしない。よって、表9-3から、CKSEL3〜1 111を指定。
USB電源(電池駆動しない)なので、パワーダウン、パワーセーブ機能は使用しない。表9-4から、CKSEL0は1、SUT1,0は01とする。
ヒューズ下位バイトは、DFhとする。