14
ISP ISP (rev 1.0) P1 AVR ROM ROM AVR AVR ISP ISP AVRISP-mk AVR Dragon S TK500 JTAGICE-mk AVR EEPROM ISP ISP ISP ISP 1 IS P 6 2.54mm AVR ATMEL ISP ATtiny/mega MOSI(PDI**) MISO(PDO**) SCK RESET/ XTAL1 Vcc AVCC GND Vcc Analog Vcc* VTG GND RST/ ADC AVR AVcc ATmega 64/128 AVR SPI MISO/MOSI PDI/PDO * ** AVR ISP

ISPプログラマーの使い方 - mcm.co.jp · PDF fileのときRepair、Modify、Uninstallなどの選択が行えます。何のことかよく分からなかったら、Uninstall

Embed Size (px)

Citation preview

Page 1: ISPプログラマーの使い方 - mcm.co.jp · PDF fileのときRepair、Modify、Uninstallなどの選択が行えます。何のことかよく分からなかったら、Uninstall

ISPプログラマーの使い方

ISPプログラマーの使い方 (rev1.0)P1

◆Ⅰ はじめに

AVRマイコンを使用する場合、フラッシュROMにプログラムを書き込まなければなりません。フラッシュROMプログラマーを使用してプログラムを書き込むこともできますが、どんなプログラマーでもAVRの書込みがサポートされているわけではなく、ごく一部のプログラマーがサポートしているに過ぎません。すべてのAVRに、開発途上で簡単にプログラムを書き込むためのイン・システム・プログラム(ISP)と呼ばれる簡易プログラム法がサポートされています。ISPはアトメルから提供されているAVRISP-mkⅡ、AVR Dragon、STK500、JTAGICE-mkⅡなどのツールを用いて行うことができます。これらツールを用いればユーザの作成した基板上のAVRマイコンチップにプログラムの書込み、EEPROMにデータの書込み、ヒューズビットと呼ばれるシステム設定用のビットの変更などを行うことができます。ISPプログラマーを用いてのプログラミングは正しく操作すれば問題はほとんど起きませんが、誤った操作により、ヒューズビットなどを間違えて設定すると、ISPプログラマーでは回復不能になることがあります。

ここではISPプログラマーの正しい使い方を説明して行きますが、特によく間違える項目に関して詳しく説明していきたいと考えています。

◆Ⅱ ISPプログラマーとターゲットボードの接続

図1に示したように、ユーザの開発中のボードにISPコネクター(6ピンヘッダーコネクター(2.54mmピッチ))を用意します。

AVR、ATMELロゴ、その他開発ツール名称等は、アトメル社および各社の登録商標です。

ISP

ATtiny/mega

MOSI(PDI**)

MISO(PDO**)

SCK

RESET/

XTAL1

Vcc

AVCC

GND

Vcc

Analog Vcc*

VTG

GNDRST/

コネクター

ADCを持つAVRでは必ずAVccを加えてください。ATmega64/128などメモリサイズの大きなAVRではSPIのMISO/MOSIの代わりにPDI/PDOを使用するものがある

注意:***

図1 AVRとISPインターフェース

Page 2: ISPプログラマーの使い方 - mcm.co.jp · PDF fileのときRepair、Modify、Uninstallなどの選択が行えます。何のことかよく分からなかったら、Uninstall

ISPプログラマーの使い方

ISPプログラマーの使い方 (rev1.0)P2

図の注意に示したように、ほとんどのAVRはI/OポートのSPIインターフェースの信号ピンを使用しますが、メモリ容量の大きい多ピンのAVRでは、特別なPDI/PDOと呼ばれる信号ピンを使用します。データシートではMemory ProgrammingのSerial Downloadingの項目に記述がありますので、基板を起こす前に必ず参照してください。

ADコンバータを搭載したAVRではAVccをオープンにして使用しないようにします。ADCを使用しないときなどは、特に安定度の高い電源である必要はありませんのでVccへ接続してください。

AVRのプログラム用ピンが他のインターフェースチップとつながっている場合、ISPプログラマーとボード上のユーザーインターフェースがぶつかって支障をきたすことがあります。この場合、図2に示したようにAVR-ユーザーインターフェース間に大きめ(6Kオーム程度の)抵抗を入れるか、書き込み中はユーザーインターフェースを分離するようなジャンパーポストを置いておくようにします。

写真1、2、3、4にそれぞれAVRISP-mkⅡ、STK500、AVR DragonそしてJTAGICE-mkⅡとターゲットボードの接続例を示します。JTAGICE-mkⅡでは(新しいRevisionの製品に)付属する10ピン(オス)-6ピン(メス)変換アダプターを介して接続しますが、ピン番号を誤らないように注意して、接続してください。(1ピン側にはコネクターに▽マークがあります。)

AVR、ATMELロゴ、その他開発ツール名称等は、アトメル社および各社の登録商標です。

IO

ISP

RESET/

MISO

MOSI

SCK

AVR

コネクター

バッファなど

6Kオーム程度の抵抗を入れるか、書込み時ジャンパーをはずす

図2 ISP信号とユーザー信号の衝突の回避

Page 3: ISPプログラマーの使い方 - mcm.co.jp · PDF fileのときRepair、Modify、Uninstallなどの選択が行えます。何のことかよく分からなかったら、Uninstall

ISPプログラマーの使い方

ISPプログラマーの使い方 (rev1.0)P3

AVR、ATMELロゴ、その他開発ツール名称等は、アトメル社および各社の登録商標です。

写真1 AVRISPの接続例 写真2 STK500ターゲットボードの接続例

写真3 AVR DRAGON接続例 写真4 JTAGICE-mkIIとターゲットボードの接続例

◆Ⅰ プログラムの起動

プログラムの書き込みはAVR Studio(AVR開発用統合化開発環境)上で行います。

A AVR Studioのインストール

前もってAVR Studioを下記のアトメル社サイトからダウンロードしてインストールしておきます。

http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725

AVR Studio4.1x(buildyyy)と表示された中からyyy番号の一番大きなものをダウンロードします。この際登録が必要になりますが、支払いを要求されたりすることはありませんので安心して登録してください。さらにSPパックがいくつか表示されていますが、同じレビジョンのAVR StudioのSPパックでbuild番号がダウンロードした本体より大きいものがあればこちらもダウンロードしておきます。

各書込みツールにはCDROM(またはDVDROM)が付属し、AVRStudioもここからインストールできるようになっていますが、最新版ではないことが多いので、最新版をダウンロードするようにしてください。

ダウンロード先はデスクトップではなく、ローカルディスク上に適当な名前をつけてダウンロードしてください。

Page 4: ISPプログラマーの使い方 - mcm.co.jp · PDF fileのときRepair、Modify、Uninstallなどの選択が行えます。何のことかよく分からなかったら、Uninstall

ISPプログラマーの使い方

ISPプログラマーの使い方 (rev1.0)P4

AVR、ATMELロゴ、その他開発ツール名称等は、アトメル社および各社の登録商標です。

ダウンロードしたプログラムをダブルクリックすれば自動的にプログラムのインストールが始まります。途中ライセンスの承認可否のメッセージが出ますが、分解工学を禁止する、バグによる損害は感知しない程度の内容です。

USBのドライバーのインストールの確認メッセージも出ますが、同時にインストールしておかなければなりません。AVR Studio 4.1xのインストールが終了し、さらに新しいSPパックがあればこちらもインストールします。

B ハードウェアの接続

AVR Studioのインストールが完了したら、書込みツールを接続します。AVRISP-mkII、AVR Dragon、JTAGICE-mkⅡの場合はUSBケーブルを用いてPCと接続します。

USB接続でないSTK500以外は接続するとすぐに、“新しいハードウェアが検出されました”表示されドライバーのインストールが始まりますので、自動で実行させるようにしてください。この作業には数分かかることがあります。(STK500に関しましては、STK500の使い方を参照願います)

ドライバーがインストールされますと、各ツールのUSBケーブル近くのLEDランプが緑色に点灯します。もし緑色に点灯しないときはインストールがうまくいっていない可能性がありますので、AVR Studioを再インストールしてください。このときRepair、Modify、Uninstallなどの選択が行えます。何のことかよく分からなかったら、Uninstallしてもう一度最初からやり直してください。

C 書込みプログラムの起動

スタート→すべてのプログラム→Atmel AVR Tools→AVR Studio4 (OS、プログラムのインストール先によって変わります)をクリックしてAVR Studioを起動すると、Welcome to AVR Studio 4 サブウインドウが起動されます。プログラムを作成するか修正してオブジェクトを作成する場合、このウインドウからファイルを定義(または選択)します。すでに作成済みのオブジェクトを書き込むときはCancelをクリックします。

書込みプログラムを起動するには、Toolsメニューをクリックし、ICマークのついたProgram AVRにカーソルをあて、プルダウンメニューよりConnect…をクリックします。

図3に示されるようなサブウインドウが表示されます。

図3 プログラムツールの選択

Page 5: ISPプログラマーの使い方 - mcm.co.jp · PDF fileのときRepair、Modify、Uninstallなどの選択が行えます。何のことかよく分からなかったら、Uninstall

ISPプログラマーの使い方

ISPプログラマーの使い方 (rev1.0)P5

AVR、ATMELロゴ、その他開発ツール名称等は、アトメル社および各社の登録商標です。

ここで実際に使用するプログラミングツールを選択します。

PlatformにJTAGICE-mkⅡ、AVRISP-mkⅡ、AVR Dragonを選択した場合はUSB Portを選択します。STK500を選択した場合は通常、COM1を選択しますが、USB-RS232変換アダプターを用いる場合はCOM5あたりが割り当てられるケースが多いようです。(使っているパソコンの構成によりかわってきます。)

書込み用のウインドウが開きますので、ここでMainタブをクリックします。

図4にMainタブをクリックした状態を示します

ここをクリックして表示されるプルダウンメニューからデバイスを選択

ISP Frequncyが125KHz(またはこれに最も近い周波数にに設定する)

図4 プログラミングウインドウ-Mainタブ

Page 6: ISPプログラマーの使い方 - mcm.co.jp · PDF fileのときRepair、Modify、Uninstallなどの選択が行えます。何のことかよく分からなかったら、Uninstall

ISPプログラマーの使い方

ISPプログラマーの使い方 (rev1.0)P6

AVR、ATMELロゴ、その他開発ツール名称等は、アトメル社および各社の登録商標です。

ここでデバイスがターゲットに装着されているものであるか否かを確認し、異なっていれば▼マークをクリックしてプルダウンメニューより、適切なデバイスを選択します。この確認(設定)は必ず行ってください。

次にその下のボックスがISP modeになっているかも確認しておきます。その右側に表示されているISP Frequencyを確認します。ターゲットの設定に応じて変更されるべきものですが、通常125KHzに設定しておきます。Settingボックスをクリックするとサブウインドウが表示されますここで▼をクリックし、プルダウンメニューより125KHzを選択して、右側のWriteをクリックしてください。

重要 なぜ125KHzに設定するか?

ISPインターフェースはAVRに搭載されたSPIインターフェースを使用しています。SPIインターフェースはAVRのシステムクロックを利用しており、スレーブとして機能するにはSCK(SPI通信クロック周波数)はSPIのクロック周波数の1/4よりも低い周波数でなくてはなりません。

AVRは工場出荷時(デフォルト状態)のシステムクロックは通常、内部RCオシレータ8MHzに設定されており、さらにこれを内部で1/8に設定するCLKDIV8というヒューズビット(後述)がオンに設定されています。したがってAVRはヒューズビットを何もプログラムしない状態では、システムクロックは1MHzとなっています。(世代の古いAVRでは8MHz/4MHz/2MHz/1MHzの各周波数を個別に発振するRCオシレータを搭載するタイプがあります。ヒューズビットでこれらの周波数のいずれかをプログラムすることができるようになっていますが、デフォルトでは1MHzが選択されています。)

SPIが通信を行うためには、システムクロックの1/4以下の通信速度でなければいけなかったので、250KHz以下が選択されなければなりません。しかしRCオシレータのばらつきを考慮して、125KHzにするようにします。(ばらつきは実際のところあまり無いと考えられますが、もしあったときに再設定などしなくてすみますので125KHzにします。)

重要 Firmware Upgradeでミスしてしまった場合

FirmwareのUpgrade中にツールの電源が落ちてしまったときや、ノイズが加わったとき。また通常の操作中でもツールやターゲットの電源を入れたままコネクターの抜き差しなどをして、ノイズが入るとツールのFirmwareが壊れることがあるかも知れません。もし万が一ツールの動作がおかしくなってしまったときは、FirmwareのManual Upgradeを実施すると回復することがあります。Manual Firmware Upgradeに関しては、AVR StudioのHelpメニューからAVR Tools User Guideをクリックし表示されるツールをクリックするとユーザーガイドが表示されますので、この中に記述されているManual Firmware Upgradeを参照して実施してください。Manual Firmware Upgradeは頻繁に行う必要のある操作ではありません。最後の手段です。もし不具合に遭遇した場合も操作手順を確認しながら再操作する事を十分に実施したうえでそれでも解決しない場合に実施するようにしてください。

D ファームウェアのアップグレード

書込みツールのファームウェアとAVR Studioのバージョンが異なる場合、書き込みプログラムのタブをクリックしたときやProgramを実施したときにFirmwareのUpgradeが必要だというメッセージが出ることがあります。この場合画面の指示に従ってUpgradeを実施します。ツールごとに方法が異なります。JTAGICE-mkⅡであれば、OKをクリックするだけで完了するまで待てば、Upgradeは終了します。AVRISP-mkⅡではOKをクリックし、完了後、一度USBケーブルをPCからはずし、再度接続しなおします。STK500は画面の指示通りSTK500の電源を一度落とし、STK500上のPROGRAMと書かれたプッシュスイッチを押下しながら電源スイッチをいれ、(PROGRAMスイッチは電源投入後放します。)Firm-ware Upgradeをスタートさせます。

FirmwareのUpgradeが必要であるにもかかわらず行いませんと正常な操作が実施されませんので必ず行ってください。

Page 7: ISPプログラマーの使い方 - mcm.co.jp · PDF fileのときRepair、Modify、Uninstallなどの選択が行えます。何のことかよく分からなかったら、Uninstall

ISPプログラマーの使い方

ISPプログラマーの使い方 (rev1.0)P7

AVR、ATMELロゴ、その他開発ツール名称等は、アトメル社および各社の登録商標です。

E Programの書込み

ProgramタブをクリックするとProgram画面が表示されます。(図5)

Eraseはデバイスの消去コマンドでフラッシュROMとEEPROMの消去を行います。同時にLockBit(後述)の消去も実行されます。フラッシュROM、EEPROMともに消去状態は、0xFFです。

Erase device before flash programmingの前のチェックボックスにチェックを入れておくとフラッシュのプログラムを実施したときに自動的にデバイスを消去してからプログラムが実施されます。

Verify device after programmingは同様にチェックを入れておくと、プログラムを実施した後、正しくプログラムが書き込まれたかを検証します。

これらの利用法は、プログラムが分割されていて、分割したプログラムを異なるメモリロケーションに分けて書き込むときに利用されます。Erase deviceにチェックを入れておくと、分割プログラムのうち、先に書いたプログラムが後からプログラムするプログラムの前に消去が行われ消去されてしまいます。Verify deviceも同様で、エラーが出力されてしまいます。

EEPROMも同様に書き込むことができます。AVR Studioのアセンブラーでコード生成した場合、プログラムコードはインテルHexコードで、EEPROMも同じフォーマットですが拡張子は、.EEPで生成されます。

図5 プログラミングウインドウーProgramタブ

ここをクリックして書き込むためのファイルを選択

Program実行

Page 8: ISPプログラマーの使い方 - mcm.co.jp · PDF fileのときRepair、Modify、Uninstallなどの選択が行えます。何のことかよく分からなかったら、Uninstall

ISPプログラマーの使い方

ISPプログラマーの使い方 (rev1.0)P8

AVR、ATMELロゴ、その他開発ツール名称等は、アトメル社および各社の登録商標です。

F Fusesの設定

FuseBitはAVRのRESET時にロードされるシステム設定を記述しておく重要なビットで、プログラミングツールで書き換え可能な不揮発性メモリです。プログラムコードからは書き換えはできません。 Fuseビットの設定を誤り、ハードウェアの構成と異なる設定にされた場合、プログラムができなくなり全く操作不能になることがあります。

AVRはデフォルトのFuse設定でシリアル通信などの機能は別として、その他の機能は問題なく動作させることができます。最初にFuseの設定をする前に簡単なProgramの書き込みを行いISPが正常に行えるかなどの確認を行ってから次の開発ステップへ進めることをお奨めします。

Fuseタブをクリックすると図6-1、2のようなウインドウが現れますが、これはデバイスごとに項目が異なります。

図6-1 プログラミングウインドウ-ATmega48のFuseタブウインドウ

ここにカーソルをあて左マウスボタンを押して右へずらすと表示範囲を拡大できる

Page 9: ISPプログラマーの使い方 - mcm.co.jp · PDF fileのときRepair、Modify、Uninstallなどの選択が行えます。何のことかよく分からなかったら、Uninstall

ISPプログラマーの使い方

ISPプログラマーの使い方 (rev1.0)P9

AVR、ATMELロゴ、その他開発ツール名称等は、アトメル社および各社の登録商標です。

ここではメモリサイズの少ない例としてATmega48。メモリサイズがこれよりも大きめで新しいAVRの例として、ATme-ga644PのFuseタブ画面を用いて各項目の意味を説明していきます。これ以外のAVRでここに出てこない項目もありますが、それに関してはデータシートを参照ください。

 まず、図6-1はデバイスをATmega48で選択したときのものです。ATmega48はmegaファミリーで最もメモリ容量の少ないデバイスです。4KBのフラッシュサイズですので、大きめのAVRとの違いはブートブロックを持たないことと、デバッグインターフェースがdebugWIREであること。割り込みベクターテーブルにはrjmpコマンドが置かれること。などです。

SELFPRGEN: ブートブロックを持たないので、セルフプログラム(フラッシュROMに置かれたプログラムでフラッシュROMを書き換える)をするときは誤って必要なプログラムを書き換えないよう注意をする必要があります。またいつでもこの機能が働くようになっていると暴走したときにシステムが再度立ち上がらなくなる可能性も起こりえます。通常セルプログラムが必要ないシステムではこの機能が禁止されています。SELFPRGENビットをオン(0)にプログラムすることでセルフプログラムが可能となります。

RSTDISBL: ピン数の少ないデバイスでは1ピンでも多くのピンを利用したいものです。AVRの場合、信頼のおけるパワーオンリセット回路が搭載されていますからパワーオンリセットだけ利用するということであればこのピンはI/Oピンとして使えれば便利です。実際にI/Oピンとして使うことが可能で、RSTDISBLビットをオン(0)に設定しておけばRE-SETピンをI/Oピンとして使用することが可能です。ただしプログラミングツールとしてここにあげたISPプログラマーしかもっていない場合は絶対にこのビットをプログラムしないでください。2度とプログラムができなくなります。(汎用のプログラマーなど、AVRのパラレルプログラムがサポートされている機器でのプログラムは可能です。RSTDISBLをアンプログラムすることも可能です。)

DWEN: debugWIREイネーブルビットです。このビットが0にプログラムされているとJTAGICE-mkⅡを用いてハードウェアのデバッグができます。ただしDWENがプログラムされている状態ではISPインターフェースは機能していません

図6-2 プログラミングウインドウ-ATmega644PのFuseタブウインドウ

(チェック内容は正しくありません。この通りの入力はしないで下さい)

Page 10: ISPプログラマーの使い方 - mcm.co.jp · PDF fileのときRepair、Modify、Uninstallなどの選択が行えます。何のことかよく分からなかったら、Uninstall

ISPプログラマーの使い方

ISPプログラマーの使い方 (rev1.0)P10

AVR、ATMELロゴ、その他開発ツール名称等は、アトメル社および各社の登録商標です。

ので、このビットはISPプログラマーからは見ることができませんし、ISPプログラマーからプログラムすることもできません。(JTAGICE-mkⅡからプログラム/アンプログラムするか、パラレルプログラムで操作します。)SPIEN: シリアルダウンローディングによるシリアルプログラムを可能とするビットです。ISPプログラマーからは変更することはできません。

WDTON: AVRにはシステムの暴走を防ぐためのウオッチドッグタイマーが装備されています。ウオッチドッグタイマーはユーザプログラムで

EESAVE: プログラムを書き換えるときデバイスをEraseするとEEPROMのデータも消去されてしまいます。このビットはデバイスを消去した場合でもEEPROMに書かれたデータは消えないようにするビットです。この機能の使用例として次のようなケースが考えられます。テストプログラムをフラッシュに書き込んで、RCオシレータのキャリブレーションビットの最適値を求めEEPROMにストアしたとします。次にテストプログラムを消去し、実際のアプリケーションプログラムをフラッシュに書き込むにはデバイスを消去する必要がありますが、EEPROMも消えてしまいます。EESAVEをプログラム(0)しておけばEEPROMにあるデータは消えませんので、アプリケーションプログラムではEEPROMの値をロードし、OSCCALレジスタに書き込むことで最適化されたクロック周波数でシステムクロックを設定することができます。

BODLEVEL: ブラウンアウト・ディテクター・レベルの選択ビットです。▼マークをクリックするとメニューからBODレベルを選択することができます。ブラウンアウト・ディテクターというのは低電圧監視機能のことで、Vcc電源レベルを常に監視し、設定された値より下回ったときに、RESET信号をアクティブにする機能です。この機能はコンピュータの動作電圧が不十分で正常な動作を行えなくなる前にRESETをかけて暴走を防ぐ機能です。組み込み型のアプリケーションではコンピュータの暴走で、周辺機能が予期せぬ暴走をすると生命に関わる危険を引き起こすこともあります。事前にコンピュータを止めることでこのような事態を回避させることができる非常に重要な機能です。また電源の立ち上がり時に電源が一度立ち上がりコアがスタートしかけたところで、不十分な電圧レベルになるようなときにも有効で、このような状況ではフラッシュROMを書き換えるなどの悪影響を与える危険性もあります。 BODをレベル設定することで、このような状況を回避することを強くお奨めいたします。

CLKDIV8: システムクロックに加えられているクロックソース(RCオシレータでは8MHz)を1/8にします。このビットはAVR工場出荷時アクティブにプログラムされています。したがってAVRは工場出荷時には1MHzのシステムクロックで動作します。(この限りでないデバイスもあります)

CKOUT: システムクロックを外部に出力する機能です。このビットが(0に)プログラムされていると、CLKOUTピンにシステムクロックを取り出すことができます。(世代の古いAVRではこの機能を持たないものがあります。)

SUT_CKSEL: AVRはシステムクロックとして非常に多くのクロックソースを選択できます。このFuseビットはクロックソースとして何を用いるか? そしてクロック立ち上がってから、リセットを解除し、実際にプログラムがスタートするスタートアップタイムも設定可能になっています。SUT_CKSELビットは、クロックソースとスタートアップタイムを選択するビットです。このビットを誤って設定するとプログラムができなくなったり、システムが立ち上がらなくなることがあり、注意してプログラムしなければならないビットです。

クロックソースとしては内部RCオシレータ、外部クリスタルオシレータ/セラミックレゾネーター、外部クロックなどから選択できます。外部クリスタルの場合、発振周波数によっても選択が変わりますので注意します。さらにこれらのクロックソースの選択に加えて、スタートアップタイムも選択しなければなりません。スタートアップタイムの目的ですが、第一にAVRに接続される周辺デバイスと同期を取ることが考えられます。電源が加わり、システムクロックが安定にスタートしてすぐに実行が開始され、周辺デバイスへ初期化コマンドを送っても周辺デバイス自体の初期化がすんでいなければコマンドを受け取れません。そこでAVRではクロックが安定してからAVRがスタートする時間を遅らせることができるスタートアップタイムをプログラムできるようになっています。これとは逆に、システムクロックをとめて消費電力を抑えるスリープモードから割り込みなどで立ち上がる際、クロックが安定したらすぐにプログラムをスタートさせる必要があります。このときはスタートアップタイムを最小に設定します。また電源の立ち上がり早いもの遅いものによってもこれらの設定を選択する必要があります。遅い立ち上がり電源を使用するときはクロックがスタートしてから電源が十分な電位に達するまでの時間を確保すべきです。

Page 11: ISPプログラマーの使い方 - mcm.co.jp · PDF fileのときRepair、Modify、Uninstallなどの選択が行えます。何のことかよく分からなかったら、Uninstall

ISPプログラマーの使い方

ISPプログラマーの使い方 (rev1.0)P11

AVR、ATMELロゴ、その他開発ツール名称等は、アトメル社および各社の登録商標です。

図6-1に表示されている例は内部RCオシレータ8MHzを選択し、スタートアップタイムはパワーダウンおよびパワーセーブモードからの立ち上がり時間は6クロック+65ms、RESETからの立ち上がりでは14クロック+65msに設定するFuseの設定を示しています。

▼をクリックするとメニューが表示されますのでこの中から使用する設定を選択します。 次にATmega644Pに加わっているヒューズビットに関して説明していきます。

OCDEN: OCDENは(JTAGインターフェースを用いて)オンチップデバッグをイネーブルにするビットです。JTAGICE等を使用する場合、JTAGEN Fuseビットがイネーブルであれば、JTAGでデバッグを開始すると自動的にEnableにされ、JTAGでのデバッグを終了すれば自動的にディセーブルされます。ヒューズビットのプログラムでも変更できますが、もしこのビットをイネーブルのままにしておくと、SLEEPモード時でもクロックシステムがアクティブになるため、消費電力が増加しますので製品として出荷する場合はディセーブルにします。

JTAGEN: JTAGインターフェースをイネーブルにするビットで、デフォルトでプログラムされています。JTAGICE等を用いてデバッグする場合は必ずイネーブルにされていなければなりません。逆にJTAGインターフェースが接続されていないと、TDOピンに電流が流れるため、消費電力が増加しますので、このビットも製品として出荷する場合はアンプログラムするべきです。

BOOTSZ: ブートブロックサイズを定めるビットです。▼マークをクリックし、使用するブートサイズのブロックを選択します。ブートブロックはメモリの最後部に置かれます。

BOOTRST: RESET時に0番地からスタートするか、ブートブロックの先頭からスタートするかを決めるビットで、このビットをプログラムしておくと、BOOTSZビットで設定したブロックの先頭番地からスタートします。

Fuseビットをチェックすると画面の中段にFuseビットの値がExtended、Low、Highバイトとして16進数で表示されます。スタンドアローンのROMプログラマーなどではこの16進数でプログラムを指定するものもあります。また書き込んだときにこの数値で確認をすれば誤りを減らすのに役立つでしょう。

Fuseビットの設定を完了したら、Programボタンをクリックします。

注意

Fuseビットタブをクリックしたときに、ボード上のデバイスのFuseビットをロードします。他のタブ画面からFuseタブに移動したときに、以前設定した値は残っていませんので再設定する必要があります。続けて複数個のプログラムをする場合は、H Autoプログラミングの項を参照のこと。

G LockBitsの設定

図7にLockBitsタブをクリックしたときのウインドウを示します。

Page 12: ISPプログラマーの使い方 - mcm.co.jp · PDF fileのときRepair、Modify、Uninstallなどの選択が行えます。何のことかよく分からなかったら、Uninstall

ISPプログラマーの使い方

ISPプログラマーの使い方 (rev1.0)P12

AVR、ATMELロゴ、その他開発ツール名称等は、アトメル社および各社の登録商標です。

LB: LBはISPプログラマーなどを用いてフラッシュROM、EEPROMのプログラムの可否を設定するビットです。書込み/読み出しが自由にできるモード1(デフォルト)。書き込みは禁止/読み出しは可能なモード2。書込み/読み出しともに禁止のモード3に設定することができます。製品として出荷する場合、万が一ノイズなどの影響でプログラムモードに入ってフラッシュ書き換えが起こることはありえないことではありません。これを防止する意味でモード2にプログラムすることをお奨めします。悪意のある人が製品のデッドコピーを作ることがあるかも知れません。これを防止するために、外部からプログラム読めないようにする機能がモード3です。デッドコピーを防止したいときはモード3の設定をしてください。これらの設定はデバイスをEraseするとモード1に戻ります。(ただしモード3に設定した場合はメモリのベリファイが一切できなくなります。もし不良が発生した場合、不良解析の範囲が制限されることをご了承ください。)

BLB: 内部のプログラムからフラッシュメモリをアクセスするときの制限を設定するビットです。BLB0はアプリケーションブロックをプログラムコードでアクセスするときの制限を設定することができます。BLB1はブートブロックのアクセスの制限を設定します

H Autoプログラミング

図8にAutoタブの画面を示します。Autoで指定できるのはこれまで見てきた個別のプログラム、デバイスのErase、フラッシュROMプログラム/ベリファイ、EEPROMのプログラム/ベリファイ、Fuseのプログラム、ロックビットのプログラムなどの一連の操作を自動で実行できる機能です。前もって各タブ画面でプログラムファイル、Fuseプログラムビットなどを設定しておき、Auto画面で上からチェックを入れた機能を実行させていくことができます。ログもとることができます。多数のデバイスをまとめてプログラムするときに、Fuseビットの設定なども一度するだけですみますので、活用したい機能です。

図7 プログラミングウインドウ-ATmega644PのLockBitsタブウインドウ

Page 13: ISPプログラマーの使い方 - mcm.co.jp · PDF fileのときRepair、Modify、Uninstallなどの選択が行えます。何のことかよく分からなかったら、Uninstall

ISPプログラマーの使い方

ISPプログラマーの使い方 (rev1.0)P13

AVR、ATMELロゴ、その他開発ツール名称等は、アトメル社および各社の登録商標です。

Ⅳ 問題が起きたときの対処法

A SUT_CKSELビットの設定を誤って設定してしまった。ISP接続ができなくなり先へ進めなくなってしまった。

 → クロックソースが何に設定されているか不明なケースが多いので、X1、X2端子にクリスタルやセラロックを接続しても起動できるかどうか分かりません。手持ちのFunction Generatorがあれば、8MHz程度の矩形波を発生させ、X1端子に加えてみます。このとき矩形波のピークはAVRに加えている電源電圧を超えないようにします。クリスタル発振モジュールなどでクロックを生成しX1端子に加えるのも良い方法です。

B RSTDISBLを誤って設定してしまったみたいだ。

 → このケースでAVRISP-mkⅡ、JTAGICE-mkⅡでは対応ができません。STK500やAVR Dragonに用意されているパラレルプログラミングモードでRSTDISBLビットをアンプログラムすることができます。もし汎用プログラマーがAVRをサポートしていればこれらを使ってRSTDISBLビットをアンプログラムすることができます。

C JTAGICE-mkⅡで、ATmega168をデバッグしていたが、スタンドアローンに戻したらISPプログラムモードでプログラムすることができなくなった。

 → debugWIREモードをアクティブにするDWENビットがセットされたままになっていると思われます。DWENビットはJTAGICE-mkⅡ、AVR Dragonでdebuggingモードのdebugメニューからの各ツールのOption設定でアンプログラムすることができます。ISPモードではプログラムすることはできません。他にはパラレルプログラミングモードでもDWEN ビットのプログラム/アンプログラムは可能です。

図8 プログラミングウインドウ-Autoタブウインドウ

Page 14: ISPプログラマーの使い方 - mcm.co.jp · PDF fileのときRepair、Modify、Uninstallなどの選択が行えます。何のことかよく分からなかったら、Uninstall

ISPプログラマーの使い方

ISPプログラマーの使い方 (rev1.0)P14

AVR、ATMELロゴ、その他開発ツール名称等は、アトメル社および各社の登録商標です。

Ⅴ 終わりに

AVRはシンプルなアーキテクチャでありながら高性能で扱い易い優れた組み込みシステム用マイクロコントローラです。ワンチップの中に組み込みシステムに必要な機能を十分に搭載し、もしAVRだけでは不十分な機能があっても外付け部品を最小限拡張することで対応することができます。

ところが従来からの同規模マイクロコントローラとはかなり異なった構造や周辺機能の起動法を用いているため、古くからコンピュータに慣れた方には考え方の切り替えがいまひとつできないといったかたをお見受けすることがあります。ヒューズビットなど豊富な機能設定が可能で、これをフルに活用すれば優れた機能を引き出すことが可能ですが、闇雲に設定を変えると全く泥沼に身を投じることになりかねません。まずFuse設定などはデフォルトで試し、必要な機能をひとつひとつ追加し、一歩一歩先へ進めていくことをお奨めします。