{{publish any}} {{tag 放電器,AVR,ATmega644P}} !header まだまだ続くバッテリー放電器。先月からノロノロとやっている放電器の実験ですが、AVRのATmega644Pをつかって複数バッテリー放電のソフトウェア作成とテストもやっておきます。 !body 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を無効化しました。 {{image JTAGEN.PNG,,alt:AVRStuido4のヒューズの設定画面,size:50%}} 正常に動作するようです。 {{image DSC01565.jpg,,alt:ATmega644Pのテスト,size:50%}} しかし、JTAGってプロが使用するものだというのが個人的なイメージです。 ATmega644クラスになるとJTAG使ったICEが必要なくらい高度な用途に使われるマイクロチップということでしょうか。