ArduinoIDEからBitBangでブートローダーを焼く
昨日の記事温湿度計の自作 - ま"’s blogでマイコンの設定を書くのを忘れてました。それだけではアレなので、ついでにArduinoIDE環境からBitBang方式でブートローダーを焼くための設定も紹介します。
ATmega88V-10Uの設定
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を取っておいて、別ディレクトリに保存しておくことをお勧めします。私は昨夜、それで枕を濡らしてふて寝してしまいました。
まぁ、タイムマシンのおかげで消えた差分は簡単に見つかりましたけどね(^^;。