arduino自作(2) ATmega168Pを使う

Arduino Unoに使われているマイコンはATmega328Pだが、これをATmega168Pに入れ替えて使ってみる。

フラッシュメモリの容量以外にも、ブートローダーやフューズビットの設定が必要になった。

 

必要なもの
  • AVRライタ 今回はAVRISP mkⅡを使用
  • AtmelStudio
  • Arduino化したいmega168P
  • Arduino周辺パーツ 水晶発振子、抵抗、コンデンサ、USB-シリアル変換器など前回参照

 

参考にしたページ

Arduino/Arduino の自作/ブートローダを仕込む

http://robo.mydns.jp/Lecture/index.php?Arduino%2FArduino%20%A4%CE%BC%AB%BA%EE%2F%A5%D6%A1%BC%A5%C8%A5%ED%A1%BC%A5%C0%A4%F2%BB%C5%B9%FE%A4%E0

Arduino

http://robo.mydns.jp/Lecture/index.php?Arduino

 

フューズビットの設定

ATmega168PとAVRISP mkⅡを接続しておく。外部電源の供給が必要なので、USB-シリアル変換器から5Vを拝借しておいた。

AtmelStudioを起動し、Device Programmingを開く(下記画像赤丸)

f:id:takanami24:20200614173721p:plain

 Fusesメニューより拡張・上位・下位フューズを以下のように設定する。

  • EXTENDED = 0xF8
  • HIGH = 0xD7
  • LOW = 0xFF

 

ブートローダーの書き込み

MenoriesメニューよりFlashに C:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\atmega内のATmegaBOOT_168_diecimila.hexを書き込む。

 

スケッチの書き込み

Arduino IDEよりツール>ボード>Arduino Duemillanove or Diecimilaを選択する。

ツール>プロセッサ>ATmega168を選択

あとは確認のためにBlinkスケッチを書き込んで動作を確認した。

 

動作確認はできて不満はないのだが、フラッシュメモリ16KB中2KBをブートローダーで使うことになってしまうので、使える容量が16KB-2KB=14KBになる。

optibootを使えば512Bに収まるらしいので、使ってみてから容量が足りないようであればoptibootを導入してみるか。