ENYUKI 猿遊記(えんゆうき)

2024年9月4日

ATMEL純正ライター発見

1. AVR Studio 4.19 のインストール(※AVRISP MK2 & WinXP w/SP3 用の最終バージョン):マイクロチップのサイト https://www.microchip.com/en-us/tools-resources/archives/avr-sam-mcus より AVR Studio 4.19 をダウンロードし、インストールする。
なお、ダウンロードに先立ち、マイクロチップのサイトにアカウントの登録が必要

2. AVR Studio のインストールが完了すると、[すべてのプログラム] の中の [Atmel AVR Tools] に [AVR Studio 4] が登録される

3. AVRISP MK2 のドライバのインストール
① 仮想マシンのWindows XP に AVRISP MK2 を接続すると、デバイスマネージャには [Jungo]グループに!(ビックリマーク)付で[AVRISP mkⅡ]と表示される。
② AVR Studio 4.19 をインストールすると、C:\Program Files\Atmel\AVR Jungo USB\usb32 フォルダにドライバがあるので、ここのファイルをインストールする

4. ATMELライターで書込み・・・?
やっと、AVRマイコンにプログラムを書き込みできると思ったが、甘かった。ブレッドボードで簡単な回路を組み、ライターのAVRISP MK2を接続するが、AVRマイコンと接続エラーが出る。配線ミスかと思い何回も繰り返しチェックするが、間違い箇所がわからない。
自分の思い込みが原因だった。ATMEGA328Pのクロックの初期状態は、8MHzの内部クロックを8分周した1MHzと思い込んでいたが、これが誤りだった。外部クロックとして16MHzの水晶を追加して、やっとライターとの接続が正常にできるようになった。

5. ATMELライターとの接続
書込みターゲットのAVRの基盤に電源を入れ、AVR Studio 画面の上部にある 'Connect' Dialog ボタン または、[Tools] → [Program AVR] → [Connect ...] をクリック。
Select AVR Programmer ダイアログで、プラットフォームに [AVRISP mkⅡ] を選択し、ポートに [USB] を選択する。
すると、AVRISP mkⅡ in ISP mode with ATmega329P のダイアログが表示される。[Fuses]タブを見ると、SUT_CKSEL は外部水晶 8MHz~ となっている。oh my God!

6. アセンブラ・プログラムのビルド
書籍「AVRマイコン・プログラミング入門」にある最初のサンプル「タイマ0使用例1(ノーマル・モード)」をやってみる。サンプルとはAVRのチップが異なるので、includeファイルの部分をATmega328P用に変更しビルドする。

7. ビルドされたhexファイルをAVRマイコンに書き込む
備考:hexファイルの説明が小山智史氏のサイト「AVRマイコンで学ぶ コンピュータの仕組み」https://koyama.verse.jp/elecraft/avr/avrtext.html に記されている。

[Read]ボタンで書込内容をファイルに読込み、hexファイルと照合した。期待通りの内容が書き込めている。ATMELライター君 ありがとう!
ただ、LEDの点滅はしない。アセンブラ・ソースのチェックが必要だ。やっと、アセンブラ・プログラミングの入り口のドアが開いたことが嬉しい

(追記:2024/09/18)
LEDが点滅しなかった原因は、タイマ0の割込みベクタのアドレス間違いだった。サンプルプログラムのターゲットマイコンは ATmega88 なので、割込みベクターのアドレスは1ワード単位だが、自分が使用した ATmega328P は2ワード単位になる。それで、タイマ0の割込みアドレスを 0x0010 から 0x0020 に変更し、そこに使用する命令も rjmp から jmp に変更した。これで、LEDが点滅した。
また、ついでにヒューズ・ビットを書き換え、外部クロックから内部クロック(8MHz)の8分周にし、1MHzクロックで動くように変更した。

> TOP