最終更新時間:2008年03月15日 22時29分49秒
[公開:any]
[放電器,AVR,ATmega644P]
まだまだ続くバッテリー放電器。先月からノロノロとやっている放電器の実験ですが、AVRのATmega644Pをつかって複数バッテリー放電のソフトウェア作成とテストもやっておきます。
40ピンDIPのATmega644Pを使ってみます。I/Oポートは、PORTA、PORTB、PORTC、PORTDと8ポートずつ4系統もあるので豪勢です。PWM出力やAD変換と共用していないPORTCをLCDに割り付けることにしてブレットボードに組み込みます。
プログラムは、ATmega168で作ったものがそのままコンパイルできたので、AVRISPmk2で書き込みました。
・・・・が動作しません。やっぱりATmega168のソースそのままはまずいのかと、あちこち見直したりしたのですが、さっぱりわかりません。
今回からブレットボード用小物のテスト用LCDユニットを新しくしたので、こいつが原因かとあれこれチェックしましたが、わかりません。
ふと気になってPORTCをテスターであたってみると、いくつかのポートがリセット直後からhighになりっぱなしです。どうやらプルアップされているようだ・・・
ここで、データシートを見てみるとPORTCは、JTAGと共用されていてデフォルトでは、有効になっているようです。←もっと、早くデータシート見るべきだった・・
AVRStudioでライター設定を開いてヒューズビットを見てみると JTAGEN がセットされてました。このビットをクリアしてJTAGを無効化しました。
正常に動作するようです。
しかし、JTAGってプロが使用するものだというのが個人的なイメージです。
ATmega644クラスになるとJTAG使ったICEが必要なくらい高度な用途に使われるマイクロチップということでしょうか。