HVprog2 は、HVSP/PP や ISP、TPI、PDI でのプログラムができる Atmel STK500 のクローンです。 本記事では HVprog2 の使い方を説明します。
注意: 本記事は GoPro とかジェンロックと無関係です。 AVR マイクロコントローラに関する記事です。
前記事では、Atmel 純正 STK500 のソフト、ハード両面にわたる改造に関して述べました。改造前と改造後の Atmel STK500 に触発されて、それらのクローンとして設計したのが本記事のプログラマ HVprog2 です。
Atmel STK500 にはすでにハードウェアのクローンとして HVprog という名のプログラマがあり、HVSP/PP や ISP でのプログラムができると称しています。HVprog2 は HVprog の改良版にあたるので似たような名前にしましたが、HVprog2 は実際に AVR チップを HVSP/PP や ISP でプログラムできますし、それだけではなく TPI や PDI でもプログラムできます。
純正STK500と改造STK500、HVprog、HVProg2の比較
下の表は4つの AVR プログラマを比較した表です:
純正STK500 | 改造STK500 | HVprog | HVprog2 | |
---|---|---|---|---|
回路図 | 公開 | 不要 (*1) | 公開 | 公開 |
Atmel純正ファームウェア | 搭載可 | 不可 | 搭載可 | 搭載可 (*2) | ScratchMonkeyファームウェア | 不可 | 搭載可 | 不可 | 搭載可 (*2) |
RSTDISBL ヒューズの復元 | 可 | 可 | 不可 (*3) | 可 |
HVSP/PP、ISP でのプログラム | 可 | 可 | 信頼できない (*3) | 可 |
TPI/PDI でのプログラム | 不可 | 可 | 不可 | 可 (*2) |
注1: 改造STK500は単に純正STK500からいくつかの部品を除去したり換装したりして作られています。
注2: Atmel純正のファームウェアは、プログラマのマイクロコントローラが ATmega8535 の場合に使えますが、この場合にはTPI/PDIでプログラムすることはできません。マイクロコントローラが ATmega16/32/64/128 か ATmega164/324/644/1284 の場合には ScratchMonkeyファームウェアを用いて、HVSP/PP や ISP だけでなく、TPI/PDI でもプログラムすることができます。
注 3: RSTDISBL (リセット無効化) ヒューズを復元するためには、ターゲットの電源電圧を制御する必要があります。HVprog にはそのための回路がありませんので、リセットを無効化した場合には元に戻せません。それだけではなく、STK500とHVprogの回路図を精査するとわかるように、同じソフトを使うにも関わらず前者は XTAL1 の信号を反転させていますが後者はそのままです。反転されていない信号をトリガとする HVprog はこの結果ありとあらゆる局面でタイミングに問題が生じ、信頼できないプログラマになってしまっています。
HVprog2 の概要
もしもあなたが ScratchMonkey のファームウェアだけしか使わないつもりなら、IC2 74HC165 とそのバイパスコンデンサ C3 は実装する必要はありません。これらの部品は Atmel 純正のファームウェアがハードウェアのバージョンを認識するためにだけ存在しています。
IC1 には DIP IC ソケットを使うことを推奨します。そうすれば、将来、マイクロコントローラを高性能なものに換装したりすることが容易になるからです。
次の写真は、HVprog2の製作例です。
プリント基板は当ショップで売っているものを使いました。
このプリント基板はスルーホール用の部品を可能な限り使うように設計しましたので半田付けは比較的容易なはずです。
JP1と印刷された6ピン(上側右)は PC に接続するためのコネクタで、非常に普及している Sparkfun FTDI ブレークアウトボードのピンの順に配列されています: 5V 版のFTDIブレークアウトをここに接続した場合、HVprog2のすべてのロジックは 5V で動作します(HVSP/PP と TPI は 5V ロジックであることが必要です)。一方、3.3V 版のFTDIブレークアウトを接続した場合、HVprog2 は 3.3V ロジックで動作し、これはPDIでプログラムするための電圧になっています。
HV_PROG と印刷された20ピン(下側右)はターゲットに接続するためのコネクタです。これらのピンはAVR Dragonの同名のピンと同じ順に並べてあります。つまり、AVR Dragon の網羅的なドキュメントをHVSP/PPでプログラムする際に参照して、ブレッドボードなどで配線できるということになります。
ソフトウェア
HVprog2にファームウェアを書き込むには、ジャンパ JP2 を 1-2 (SELF) 側にセットします。いま書き込もうとしているHVprog2とは別の ISP プログラマを、 ISP と印刷された 6 ピン(中央近くの左)に接続し書き込んでください。
上述したように、いまのところ、HVprog2に実装したマイクロコントローラに応じて2種類のファームウェアが利用可能です:
- ATmega8535 の場合は Atmel 純正の STK500 用のファームウェア
- ATmegaATmega16/32/64/128 または ATmega164/324/644/1284 の場合は ScratchMonkey
場合 1. Atmel 純正のファームウェアは Atmel Studio 4/5/6/7 のどの版をダウンロードしてもその中に含まれています: ファームウェアのバイナリファイルは STK500.ebn
という名前ですが、このファイルのフォーマットは avrdude などの普通の書き込みソフトでそのままでは使えません。EBN2HEX.exe
を使って “.ebn” を “.hex” に変換すれば書き込めるようになります (EBN2HEX.exe
は公式と思われるサイトを見つけることができませんでした。ご自分でGoogleなどで検索してダウンロードしてください)。ちなみに、ATmega8535のヒューズは、S8535C と CKOPT は unprogrammed に、SPIEN は programmed にして、 SUT_CKSEL=”Ext. Crystal/Resonator High Freq; Start-up time: 16K CK + 64ms” とした場合に動作することを確認しています。
場合 2. ScratchMonkeyを使います。必要なものの準備やコンパイル、アップロードの仕方は前記事に書いてあります。
ターゲットとの接続
HVSP/PP. HVSPの場合でもPPの場合でも、Device Connection Sheets, AVR Dragon’s manualに書いてあるとおりに結線してください: HV_PROGという同名のコネクタを参照のこと。
注意: VCC と JTAG を結線する必要はありません。HVprog2 にはそのコネクタがありませんので。
ISP. ISP でプログラムするには ISP コネクタを使います (JP2 は 2-3 にセットしてください)。
注意: HVprog2 の ISP6 ピンヘッダに出ている VCC にはつねに FTDI の VCC から電源が供給されています。
TPI/PDI. HVprog2 は 純正のSTK500 や改造STK500 のクローンなので、avrdude に前記事でやったのと同じ変更が必要です。
TPIのマイクロコントローラをプログラムするには、510オームの抵抗が2つ外付けで必要になります。HVprog2 自体は 5V版の FTDI ブレークアウトボードで PC と接続する必要があります。TPI ターゲットとの接続は次の回路図を参照してください:
5VとMOSIとMISOとSCKとGNDは “ISP” コネクタにあります (JP2 は 2-3 にセットしてください)。VTARGET は “HV_PROG” の 19ピン、RESET5V は “HV_PROG” の 5ピン、RESET12V は “ISP” の 5ピンまたは “HV_PROG” の18ピンにあります。回路図上の TPI コネクタはリセット無効化ヒューズがプログラムされていない(リセットが有効)の場合に接続してください。リセット無効化ヒューズがプログラムされている(リセットが無効)の場合には、ターゲットの電源を制御する必要がありますので、回路図上の TPI HV コネクタに接続してください。
PDIのマイクロコントローラをプログラムするには、510オームの抵抗が2つ外付けで必要になります。HVprog2 自体は3.3V 版の FTDI ブレークアウトボードで PC と接続する必要があります。PDIターゲットとの接続は次の回路図を参照してください:
(破線内の部品は必要ありません。)
3V3とMOSIとMISOとSCKとGNDはすべて “ISP” にあります (JP2 は 2-3 にセットしてください)。