電源周りの回路はAE-UM232Rを使い、赤い部分のパーツを準備する。
22 pF × 2
LEDと電流制限抵抗(抵抗値はLEDに合わせ好みの明るさに調節)
リセット回路にダイオード追加
1N4148 × 1
Arduino Duemilanove 328 互換機 回路図 (PDF)
- 秋月AE-UM232R × 1
- ATmega328P-PU × 1
- セラミックコンデンサー
22 pF × 2
- 水晶発振16MHz × 1
- タクトスイッチ × 1
- オプション
LEDと電流制限抵抗(抵抗値はLEDに合わせ好みの明るさに調節)
リセット回路にダイオード追加
1N4148 × 1
Arduino Duemilanove 328 互換機 回路図 (PDF)
- AE-UM232Rをスタンドアロンで動作させる (参照: 秋月のAE-UM232RをAVRライターとして使う )
AE-UM232R | ― | ATmega328P-PU |
---|---|---|
CTS (10ピン) | ― | MISO (18ピン d12) |
DCD ( 9ピン) | ― | MOSI (17ピン d11) |
DSR ( 8ピン) | ― | SCK (19ピン d13) |
RI ( 6ピン) | ― | RESET ( 1ピン rst) |
- C13(0.1μF)外す。(DTRピンとRESETピン切り離す)
- AE-UM232Rのジャンパーピン J1:2−3間ショート、J2:ショート
- AE-UM232RとPCをUSBケーブルで接続する。
- Avrdude-GUI起動しProgrammerは 'diecimila: FT232R Synchronous BB' を選択する。
- Fuseの設定とブートローダー選択して書き込む
Fuse Bit:
Lo = 0xFF, Hi = 0xDA, Ext = 0xFD(05)
Flash Hexファイル:
[Arduino IDEフォルダー]\hardware\arduino\bootloaders\atmega\ATmegaBOOT_168_atmega328.hex
[optibootの場合]
Fuse Bit:
Lo = 0xFF, Hi = 0xDE, Ext = 0xFD(05)
Flash Hexファイル:
[Arduino IDEフォルダー]\hardware\arduino\bootloaders\optiboot\optiboot_atmega328.hex
- アップロードが完了したらLock Bitを0x0Fにセットし(実際の設定値は未使用のビットが立つので0xCFになる)Avrdude-GUIを終了する。
- USBケーブルを外して C13(0.1μF)を挿す。(19ピンLEDが必要ならば挿す)
- USBケーブルを接続して Arduino IDEを起動
マイコンボードの設定は
デフォルトブートローダーは「Arduino Duemilanove w/ ATmega328」を選択する。
optibootは「Arduino Uno」を選択する。
Arduino UnoはUSBシリアル変換にATmega16U2/8U2を使っているが
optibootだとFT232RLでもArduino Unoで認識する。
ArduinoのUno化と言われている。
以上でスケッチを書き込めて、動作するはずなのだが。。。ここでつまづく
スケッチを書き込もうとするとエラーが発生して書き込めない。
TXDとRXDはクロスしてATmega328Pにつないであるのに通信できていない。
avrdude: stk500_getsync(): not in sync: resp=0x00
どうやらオリジナルArduinoでも起きている現象みたい。
リセット回路でC13の電圧+電源電圧が加わることが原因らしい。
エラーがでたらタクトスイッチを数秒間ながめに押しつづけて
コンデンサーをしっかり放電してから離しリセットする。
それから書き込み開始、これでエラーなく動作した。
RESETピンは内部プルアップされているはずだが、回路図どおり10kでプルアップするべき?
Arduino Uno Rev3のリセットは、プルアップ抵抗と電源より高い電圧をVCCへ逃がすために
ダイオードが追加されているので、1N4148あたりを追加すると改善策するかも?
手元に適当なダイオードがないので後日追加してみよう。(1N4148追加してみました)
Arduino Uno Rev3 回路図 (PDF: Arduino_Uno_Rev3-schematic)
2台目からは1台目にArduinoISPを書き込みブートローダーライターにできる。
[Arduino IDEフォルダー]\Arduino\hardware\arduino\boards.txtを編集する。
ex. [Optiboot] Arduino Duemilanove w/ ATmega328 の追加は
以下を挿入する。
##############################################################
atmega328o.name=[Optiboot] Arduino Duemilanove w/ ATmega328
atmega328o.upload.protocol=arduino
atmega328o.upload.maximum_size=32256
atmega328o.upload.speed=115200
atmega328o.bootloader.low_fuses=0xFF
atmega328o.bootloader.high_fuses=0xDE
atmega328o.bootloader.extended_fuses=0x05
atmega328o.bootloader.path=optiboot
atmega328o.bootloader.file=optiboot_atmega328.hex
atmega328o.bootloader.unlock_bits=0x3F
atmega328o.bootloader.lock_bits=0x0F
atmega328o.build.mcu=atmega328p
atmega328o.build.f_cpu=16000000L
atmega328o.build.core=arduino
atmega328o.build.variant=standard
##############################################################
ex. [Optiboot] Arduino Duemilanove w/ ATmega328 の追加は
以下を挿入する。
##############################################################
atmega328o.name=[Optiboot] Arduino Duemilanove w/ ATmega328
atmega328o.upload.protocol=arduino
atmega328o.upload.maximum_size=32256
atmega328o.upload.speed=115200
atmega328o.bootloader.low_fuses=0xFF
atmega328o.bootloader.high_fuses=0xDE
atmega328o.bootloader.extended_fuses=0x05
atmega328o.bootloader.path=optiboot
atmega328o.bootloader.file=optiboot_atmega328.hex
atmega328o.bootloader.unlock_bits=0x3F
atmega328o.bootloader.lock_bits=0x0F
atmega328o.build.mcu=atmega328p
atmega328o.build.f_cpu=16000000L
atmega328o.build.core=arduino
atmega328o.build.variant=standard
##############################################################
コメントをかく