Arduinoの処理に遅さを感じてしまい、ちょっとでも速いほうがいいと思う人は少なからずいるのではないでしょうか。
水晶振動子を16MHzから20MHzに変えるだけで1.25倍速くなります、微妙・・・?
ライブラリによっては動かないなど、保証はできませんがクロック周波数20MHzで動作させる方法を紹介します。
スポンサーリンク
とりあえずArduino Unoについてる16MHzの水晶振動子を20MHzのものに付け替えます。
ただ、よく見るとこれじゃあ20MHzのが付けられないのでは・・・
取り替えるのは右の赤枠の小さい方です。
左にあるのはUSB-シリアル変換用ICのクロック用です。
無いので無理・・・ではなくて、このタイプで20MHzのやつは秋月でも売っていますので一応入手できます。
Amazonとかで売っている互換品だと大きな水晶振動子が付けられるような穴があるので簡単です。
これがいいと思いますが、なぜか私は一番面倒くさい方法に出ました。
そう自作です。
USBコネクタはmini-Bにして接続しやすく(?)しました。
また、USB-シリアル変換ICは安いCH340Gを使っています。
それ以外は部品はありあわせを使ったので違うものの回路はほとんど同じです。
インターネットで探してみると、やろうとしてる人はいるみたいで、ブートローダを変えたり色々模索しているみたいです。
スポンサーリンク
色々読むと、ブートローダは変更せずに、アップロード時の通信速度を変えたらいいみたいです。
じゃないとよくあるエラーが出てきますよ。
avrdude: stk500_getsync( ): not in sync: resp=0x00
そのあたりを改変した記述をboards.txtに書き加えます。
ブートローダのパスなど当方と違う箇所があるかもしれません。
それなりに解読できる方のみ改変をしてください。
uno_20.name=Arduino Uno @ 20MHz uno_20.upload.protocol=arduino uno_20.upload.maximum_size=32256 uno_20.upload.maximum_ram_size=2048 uno_20.upload.speed=144000 uno_20.bootloader.low_fuses=0xFF uno_20.bootloader.high_fuses=0xDA uno_20.bootloader.extended_fuses=0x05 uno_20.bootloader.path=optiboot uno_20.bootloader.file=optiboot_atmega328.hex uno_20.bootloader.unlock_bits=0x3F uno_20.bootloader.lock_bits=0x0F uno_20.build.mcu=atmega328p uno_20.build.f_cpu=20000000L uno_20.build.core=arduino uno_20.build.variant=standard
アップロード速度の値は、115200 * 20 / 16 = 144000という感じです。
この値以外でも1.25倍した速度なら問題ないと思います。
書き込みに使うIDEは1.0系をおすすめします。(例:1.0.6)
使っていくうえで色々問題が発生する可能性もありますが、高速化できますので20MHzに置き換えてもいいと思います。
スポンサーリンク
Leave a Comment