ikkei blog

電子工作やパズルのブログです。主にLEDを使った電子工作をやっています。

「磁気浮遊装置キット」のATmega88P をArduino化してみた

2012年03月06日 10時03分12秒 | Arduino
「磁気浮遊装置キット」には、ATmega88Pが使用されていますので、Arduino化してみようと思いました。

ISPが有るので、ブートローダを書き込むのは出来そうです。
ATmega8用が有るので、やってみましたがうまくいきません。
どうやら、ATmega8とATmega88Pは世代が違うので、ダメの様です。
でも、ATmega168PとかATmega328Pと同じ品種なので、なんとかなりそうです。

ググってみると、既にやった人が何人か居るようです。
ここの情報によるとブートローダの設定を変えてコンパイルすれば良いそうですが、
バイナリも用意されているので、さっそくやってみました。

まず最初に、USBシリアル変換モジュールが使えるように、
基板の切れ端を使って、J1とJ2を6Pに変換するアダプタを作っておきます。


手順をまとめてみると以下のようになりました。

1.atmega88_2009_05_25.zipをダウンロードします。

2.内蔵RC 8MHzなので、ATmegaBOOT_88_8MHz.hexをISPで書き込みます。
  ATmegaBOOT_88P_8MHz.hexではダメでした。

3.Extended fuse のBOOTRSTを0に変えます。つまり、e-fuseを0x00にします。
  (デジットのAVRWRT では0xF8)

4.サイトの情報に従って、boards.txtにATmega88の定義を追加します。その際、
  atmega88.build.f_cpu=16000000L を
  atmega88.build.f_cpu=8000000L に書き換えます。
  ついでに、
  atmega88.name=Arduino Diecimila w/ ATmega88 を
  atmega88.name=Arduino Diecimila w/ ATmega88_8MHz としておきましょう。

5.設定が古いマイコンのせいか、Arduino 1.0 ではコンパイルエラーが出るので、
  Arduino-0022のResources/Java/hardware/arduino/cores/arduinoの中の
  pins_arduino.c
  pins_arduino.h
  をArduino 1.0 の中にコピーします。(もちろんArduino-0022 では不要)
  注:これには副作用があります。(3/14追記)

他にも何か有るかも知れませんが、とりあえずLチカは出来ました。