2011/07/28

ATmega1284Pの検討

ATmegaXX4P (XX=ROM容量)シリーズは秋月電子でも取り扱いがあるAVRマイコンで、
IO数は32ピンある。 UARTは2chあり、XX8Pシリーズには無いJTAGとOCD機能が存在したりする。このMCUを使ったArduino互換機はSanguinoと呼ばれている。
http://akizukidenshi.com/catalog/g/gI-04416/ TQFP

Sanguino公式http://sanguino.cc/

DIPとTQFPをそれぞれ入手して、Wiring(Arduinoの本家)環境として使うためのブートローダを書き込んでみた。

新しくWiring Sというボードが登場して、ATmega644Pを採用したために、644Pと1284Pがターゲットボードに追加された、ということらしい。(注:現時点ではまだβ版)
 
2011/11月 追記:今は1.0が出てます。

個人的には、現行のローバーに使っている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ライブラリを使う場合の設定について調べました。ライブラリの記述をいくつか書き換える必要があります。 記事