ま"’s blog

電子工作の部屋?

ArduinoIDEからBitBangでブートローダーを焼く

昨日の記事温湿度計の自作 - ま"’s blogマイコンの設定を書くのを忘れてました。それだけではアレなので、ついでにArduinoIDE環境からBitBang方式でブートローダーを焼くための設定も紹介します。

ATmega88V-10Uの設定

  • 内部クロック1MHz動作(デバッグは328Pの内部クロック8MHzモード)
  • BODはdisable(消費電力を抑えるため)
  • ソフトはArduinoIDEで開発&デバッグ
  • 母艦はMac。(Windows/Linuxの方は一部読み替えてください)
  • ArduinoIDEのバージョンは1.8.19。

ArduinoIDEでATmega88の開発環境を用意する

ArduinoIDEのインストール方法は省きます。
デフォルトでは328Pの開発しかできませんが、ボードマネージャでボードを追加することで違うチップの開発もできます。私はMiniCoreを使用しました。
詳しくは
GitHub - MCUdude/MiniCore: Arduino hardware package for ATmega8, ATmega48, ATmega88, ATmega168, ATmega328 and ATmega328PB
を参照してください。

ArduinoIDE->Preferences->Additional Boards Manager URLs: に

https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json

を追加します。既に書き込んでいる人はその蘭の右側にあるボタンを押すとテキスト編集画面が出るので、最終行に追加します。
Tools->Board: xxxx -> Boad Manager... を選択してBoad Managerを表示させます。 スクロールしてMiniCoreを探すかFilterエリアにMiniCoreと入力し、MiniCoreの最新版を選択してINSTALLボタンをクリックします。現在のバージョンは2.2.1です。

BitBang書き込みモードを追加する

Macでは~/Library/Arduino15/packages/以下にMiniCoreボード開発環境がインストールされます。この中のprogrammers.txtというファイルがブートローダー書き込みプログラムの設定の記述ファイルなので、それを編集します。

% cd ~/Library/Arduino15/packages/MiniCore/hardware/avr/2.2.1
% cp -p programmers.txt{,.org} 

まずはオリジナルを取っておいて、以下のように追加します。

% diff -c programmers.txt{.org,} 
*** programmers.txt.org	2023-04-12 23:37:55.000000000 +0900
--- programmers.txt	2023-04-13 18:36:39.000000000 +0900
***************
*** 72,74 ****
--- 72,95 ----
  stk500.program.protocol=stk500
  stk500.program.tool=avrdude
  stk500.program.extra_params= -P {serial.port}
+ 
+ #
+ #BitBang mode using FT232R
+ #
+ bitbang.name=FTDI BitBang
+ bitbang.communication=usb
+ bitbang.protocol=arduino-ft232r
+ bitbang.program.tool=avrdude
+ bitbang.program.protocol=arduino-ft232r
+ bitbang.program.extra_params=
+ 
+ #
+ #BitBang slow mode using FT232R
+ #
+ bitbang_slow.name=FTDI BitBang slow
+ bitbang_slow.communication=usb
+ bitbang_slow.protocol=arduino-ft232r
+ bitbang_slow.program.tool=avrdude
+ bitbang_slow.program.protocol=arduino-ft232r
+ bitbang_slow.program.extra_params= -B256
+ 

'+ 'マークは追加された行を意味しています。
次のArduinoIDEの起動後、MiniCoreボードで書き込み装置に"FTDI BitBang"と"FTDI BitBang slow"が選べるようになっているはずです。
"-B256"パラメーターの256という数字にはあまり意味がなくて、成功するまで倍々にしていったらこの値になったというだけです。
この環境で内部クロック1MHz動作、BODはdisableを選択してブートローダーを焼けばそのモードのチップが出来上がるというわけです。同様にして328Pもいろんなモードでブートローダーが書き込めるのし、デバッグは328Pで、実際にハードを作るときには88で、ということもできるので私はもっぱらこのMiniCoreボードで開発しています。

補足

修正したprogrammers.txtファイルはパッケージをアップデートすると消去されてオリジナルに書き換えられてしまいます。diffを取っておいて、別ディレクトリに保存しておくことをお勧めします。私は昨夜、それで枕を濡らしてふて寝してしまいました。
まぁ、タイムマシンのおかげで消えた差分は簡単に見つかりましたけどね(^^;。