「磁気浮遊装置キット」には、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チカは出来ました。
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チカは出来ました。