ATmegaXX4P (XX=ROM容量)シリーズは秋月電子でも取り扱いがあるAVRマイコンで、
IO数は32ピンある。 UARTは2chあり、XX8Pシリーズには無いJTAGとOCD機能が存在したりする。このMCUを使ったArduino互換機はSanguinoと呼ばれている。
http://akizukidenshi.com/catalog/g/gI-04416/ TQFP
DIPとTQFPをそれぞれ入手して、Wiring(Arduinoの本家)環境として使うためのブートローダを書き込んでみた。
新しくWiring Sというボードが登場して、ATmega644Pを採用したために、644Pと1284Pがターゲットボードに追加された、ということらしい。(注:現時点ではまだβ版)
個人的には、現行のローバーに使っているATmega1280(Arduino MEGA)を代替するのが目的となる。ArduPilotは小さいので便利なのだが、高い上にローバーには不要な機能が多く、入手性が悪い。 UARTが4chあるのが救いなのだけれど、値段的にはARMに移行したくなってくる。
ブートローダーの書き込み
今回はじめて秋月のブレッドボード基板に組んで配線してみた。これがなかなか便利で、番号が書いてあるので配線を間違えにくい。ただ16MHzの水晶の取り付けに夢中でResetピンの生出力をピンヘッダに引き出すのを忘れていた。ICSP書き込みの際はリセットピンへの接続が要るので注意。
ICSP書き込みはブートローダーのHexファイルを焼くだけなので、各種ライタが使えそう。
今回はArduinoUNOをArduinoISP化して使用した。
この環境だと、幾つかのAVRについて、ICSP書き込み前提なら、ArduinoIDE上でも開発ができるようだ。(XX4PはSanguinoとコンパチ?)
Wiring内にあったBoards.txtに従って、ヒューズを設定する。
JTAGやOCDを有効化する際のヒューズ設定は下記のサイトのフォームで調べることができる。
ヒューズビット計算機 http://www.engbedded.com/fusecalc/
下記は適当に作ったピン配置図。 DIPパッケージ版。
ボードをSanguino互換で制作した場合、Wiring上でLEDは16番に接続されていることになるので注意。
1284PはRAMが16kBあり、ATmega1280/2560の倍という謎の規模を誇るので、それを生かした何かができるといいなあ。(個人的には、644Pが丁度よい規模に感じる)
追記
644P/1284PでNewSoftSerialライブラリを使う場合の設定について調べました。ライブラリの記述をいくつか書き換える必要があります。 記事