Arduino 20MHz 再度挑戦

IDEに20MHzのボード追加で20MHzはどうも早とちりのようでした。
もう一度よく考えると20MHzのブートローダーが無く出来るはずがありません。ただLチカは早くなったように感じたのは・・・・

ではどうしたら20MHz化は出来るのでしょう?

ブートローダーのmakeファイルに20MHzの記述を追加

atmega328_20MHz: TARGET = atmega328_20MHz
atmega328_20MHz: MCU_TARGET = atmega328p
atmega328_20MHz: CFLAGS += ‘-DLED_START_FLASHES=3’ ‘-DBAUD_RATE=115200’
atmega328_20MHz: AVR_FREQ = 20000000L
atmega328_20MHz: LDSECTIONS = -Wl,–section-start=.text=0x7e00 -Wl,–section-start=.version=0x7ffe
atmega328_20MHz: $(PROGRAM)_atmega328_20MHz.hex
atmega328_20MHz: $(PROGRAM)_atmega328_20MHz.lst

atmega328_20MHz_isp: atmega328_20MHz
atmega328_20MHz_isp: TARGET = atmega328_20MHz
atmega328_20MHz_isp: MCU_TARGET = atmega328p
# 512 byte boot, SPIEN
atmega328_20MHz_isp: HFUSE = DE
# Full swing xtal (20MHz) 258CK/14CK+4.1ms
atmega328_20MHz_isp: LFUSE = FF
# 2.7V brownout
atmega328_20MHz_isp: EFUSE = 05
atmega328_20MHz_isp: isp

omake.bat でビルドすればatmega328_20MHzのブートローダーが出来ます。
ところが新しいIDEではビルドできません。toolファルダーには何もありません。

1.0.1 でビルドしなんとかatmega328_20MHzのブートローダーが出来上がりました。1.8.15 の optiboot にコピーそしてatmega328_20MHzのボード追加。

uno20MHz.name=Arduino Uno 20MHz
uno20MHz.upload.protocol=arduino
uno20MHz.upload.maximum_size=32256
uno20MHz.upload.speed=115200

uno20MHz.upload.tool=avrdude
uno20MHz.bootloader.tool=avrdude
uno20MHz.bootloader.low_fuses=0xff
uno20MHz.bootloader.high_fuses=0xde
uno20MHz.bootloader.extended_fuses=0x05
uno20MHz.bootloader.unlock_bits=0x3F
uno20MHz.bootloader.lock_bits=0x0F
uno20MHz.bootloader.file=optiboot/optiboot_atmega328_20MHz.hex

uno20MHz.build.mcu=atmega328p
uno20MHz.build.f_cpu=20000000L
uno20MHz.build.board=AVR_UNO
uno20MHz.build.core=arduino
uno20MHz.build.variant=standard

スケッチの書き込みも出来、無事 Arduino Nano(Uno) の 20MHz 化が完成です。

Arduino Nano uSDX

uSDX 1.02rが16MHzに対応したため早速テストをしてみました。容量不足でコンパイルが出来ないので、
Arduino Nano V3 のプログラムサイズを最大化する – Qiita
こちらを参考に容量UPをしコンパイル可能となりましたが書き込みはできません。
ucx@groups.io | Search
こちらを確認するとUNOブートローダーを書き込みUNO化する記事があり書き込みも出来るようになりました。

ところがLCDには何も表示されません。
Re: uSDX for kids (groups.io)
A4に1kΩのプルアップ抵抗の追加がLCDによっては必要のようです。

ここまで来るのに一か月近くかかりましたが先に進むことが出来ます。ユニバーサル基盤での作成を始めます。

Arduino Nano 20MHz化 2

どうやっても20MHzでのブーローダーが書き込めません。仕方なく16MHzの水晶に付け替えテストしてみることにしました。

Atmega328 の足に直接はんだ付けをなんとかすることができました。さて16MHzでブートローダーの書き込みは何回か失敗しましたがやっと生き返りました。ことあと水晶を20MHzに付け替え20MHz化に再度挑戦してみます。

Arduino Nano 20MHz化

uSDXをArduino Nano で作ってみたいと思いNano を20MHz化に取り組み。
水晶を20MHzにしてboards.txt にArduino Nano 20MHzを追加してブートローダを書き込みしてみました。「書き込みできました」と上手くいったように見えますがスケッチの書き込みはできません。
Atmel Studio で確認すると

ブートローダの書き込みが上手くいってないのかもしれません。またまた課題が出来てしまいました。(uSDXは16MHzにも対応したようです。)

uSDX ISP端子追加

ファームウェアの更新が楽にできるようにISPコネクターを付けました。ピンヘッダーを接着剤で付け配線をしただけです。

これで簡単にファームウェアの更新が出来るようになりましたので最新版の1.02rに更新しておきました。

問題点は 7.01735 7.13765 7.14765MHz で一瞬受信が停止してすぐ戻るといった現象が起こることです。
Sメーターはノイズレベルで4、強い信号で9 と改善されています。

次の取り組みとしてArduino Nano の20MHz化のため水晶発振子の交換にトライ。水晶発振子を取り外し20MHzの水晶発振子を取り付けたはいいのですが力を入れすぎ基板を破損。

剝がれてしまいましたのではんだ付けが出来ません。ATMEGA328P-AUに直接はんだ付けが必要となってしまいました。なんとか修繕をしてArduino Nano と74HC4053でuSDX 2号機を作る準備に入ります。