No.11 トリプルライターMega48版 でんし研   


トリプルライターMega48版のプログラムと回路図

シリアルSPIブリッジの追加
個人的にはChaNさん開発のライターがバッチファイルが使えて便利だと思います。
それでSPIブリッジ、AVR-ISP、AVR910を一緒にしてみました。

トリプルライターの仕様
1.パソコン側に使うソフトで自動的にSPIブリッジ、AVR-ISP、AVR910を切り換えています。
  (電源ON時の最初の通信でどのライターになるかが確定されます)
  違うソフトを使うときはトリプルライターをリセットするか電源を入れ直してください。

  尚、avrsp.exeは -pb<n>がSPIブリッジ指定です。<n>はCOMポートNo.の意味です。

2.ジャンパーピン
  [COOK固定]
   SPIブリッジを書き込みモードに固定するジャンパーです。
   開放:RS232-CのDTRでスルーモード/書き込みモードを切り換え
   短絡:AVR書き込みモード固定

  [高速カット用ジャンパー]
   AVR910のとき使います。
   開放:高速書込。 SPI-921kHz ポーリング式(書き込み完了待ちの方式)
   短絡:通常速度。 SPI-115kHz タイマー待ち式

 [SWジャンパー]
   写真の基板には取り付けてありません(回路図にはあります)。
   割り込みを使っていますのでON,OFFさせるとリセット釦の代わりになります。

  写真にあるリセット釦とファーム変更ジャンパーは開発用です。特に必要ありません。

3.LED
  電源のパイロットランプになるようにしました。通常:点灯、書込時:消灯 です。


速度測定
下の表のようになりました。オシロで時間を測っています。
SPIブリッジで-d0スイッチの効果が無いのは書込に対してボーレートが遅いからでしょうか。

2006年8月26日:追記
表にUSBaspを追加しました。
avrspx -d1で書き込んだらページ式最速でした。
最初S2313に書けなかったのですがkkkさんに修正してもらい書けるようになりました。
尚、-d0は12MHz用なので比較基板では書けませんでした。

2006年11月8日:追記
AVR-ISPの書き込み速度を改善しました。その結果、USBaspと同じ書き込み時間になりました。ページ書込式ではフラッシュの書き込み完了待ち中に通信をしている為、RS232-Cでも高速に書き込むことができます。
バイト書込式が遅くなったのは計測ミスだったのか、ちょっと分かりません。
尚、SCK=921kHzのときはハード内蔵SPIを使用しているため、実際はSCK=1.152MHzになっています。

2006年11月8日
SPIブリッジはRev.1
 S2313(2Kバイト) 
8MHz 5V
バイト書込式
 Mega8(8Kバイト) 
8MHz 5V
ページ書込式
  アトメル純正 
  AVR-ISP(比較用) 
    4.9秒     3.9秒
    AVR-ISP
   SCK=921KHz
    5.0秒 4.8秒     2.9秒 4.2秒
    USBasp
   avrspx −d1
    5.2秒     2.9秒
   SPIブリッジ
    -d 0
    7.2秒     6.7秒
   SPIブリッジ
    -d 3(標準)
    7.2秒     6.7秒
   AVR910
     高速
    7.0秒     −−−
   AVR910
    通常速度
   15.4秒     −−−
COMポートISPアダプタ
+GIVEIO -d1(比較用)
    5.4秒     5.2秒

2008年 1月13日:追記
SPIブリッジのRev.4更新に合わせて測り直しました。
前回と同じデータでないためかAVR-ISPやAVR910の時間が変わっています。

秋月のUSB/シリアル変換器を使って230K-BPSのテストをしていたらMega128とMega88を書き込み不能にしてしまいました。リングバッファの拡大でPL-2103のときに-d0 (230K)でも書けるときがありますが115k-BPSで使うのが安全だと思います。

2008年 1月14日:追記
AVRに不正なヒューズ値が書き込まれる対策としてオーバーフロー異常のときは無限ループするようにしました。
オリジナルではメイン処理が進むことでバッファ書き込みを再開していますが、途中の数十バイトが抜けた状態で再開するので不正な書き込みの可能性があります。
パソコン側のフロー制御が俊敏ならオーバーフローはありえないのでファームでこういった異常処理が実行されないのが本来の姿だと思います。

2008年1月13日
SPIブリッジはRev.4
 S2313(2Kバイト) 
8MHz 5V
バイト書込式
 Mega8(8Kバイト) 
8MHz 5V
ページ書込式
    AVR-ISP
   SCK=921KHz
    5.2秒     3.3秒
   SPIブリッジ
  -d 0 (230k-BPS)
    7.0秒     1.2秒
   SPIブリッジ
  -d 0 (115k-BPS)
    7.1秒     1.9秒
   SPIブリッジ
  -d 3 (115k-BPS)
    7.4秒     3.4秒
   AVR910
     高速
    7.4秒    12.0秒
   AVR910
    通常速度
   16.0秒    14.5秒
COMポートISPアダプタ
+GIVEIO -d1(比較用)
    6.7秒     5.8秒

下の写真はUSBaspです。



2006年11月8日:追記
AVR-ISPの書き込み速度を改善しましたが(No.4の)デュアルライターMega48も技術的には同じなので割と速いです。Mega8(8Kバイト)にSCK=921kHzのとき3.4秒で書き込めます。

更新履歴
2008年 2月19日:SPIブリッジが-d0でしか書けないバグとデッドロック問題を修正しました。
2008年 2月18日:PIC24Fコマンドに対応しました。
  秋月シリアル変換器でも230k-bpsで書けるようにしました。
2008年 1月14日:SPIブリッジでリングバッファのオーバーフロー時はLED点滅の無限ループに変更。
  これはAVRに不正なヒューズ値が書き込まれない為の予防策です。
  AVRSPは通信異常になるので待たされますが、ctrl-Cキーで終了できます。
2008年 1月13日:SPIブリッジのリングバッファを100から255に拡大。
  秋月シリアル変換器でも-d0なら115k-bpsで書けるようになりました。
2008年 1月 8日:SPIブリッジ(Rev.4)に合わせて更新。
  秋月シリアル変換器でも57600bpsで書けるようになったので19200bpsは廃止しました。
  230400bpsと38400bpsにも対応しています。
2007年 9月8日:
  SPIブリッジをボーレート19200bpsに対応。
2007年 1月8日:
  Mega8版のプログラムを追加しました。
  Mega8は16MHzなのでクロック18.432MHzはオーバークロックになっています。
2006年11月8日:
  速度改善をしました。又、AVR910をTiny/Megaにも書き込めるようにしました。
2006年8月26日:
  USBaspを製作しましたので写真と速度測定表を追加しました。
2006年5月6日:
  AVR-ISPでSCK周波の4kHzと603Hzが間違っていましたので修正しました。
2006年5月5日:
  DSR問題は基板にCOOKモード固定ジャンパーを追加することに変更しました。
  USB/シリアル変換器でAVR-ISPを使う場合はCOOKジャンパーを短絡してください。
  SPIブリッジのスルーモードを使わないなら常に短絡で構いません。
2006年5月4日:
  COM1ポートでは問題ありませんがUSB/シリアル変換器を使うとAVR-ISPが起動しません。
  ラトック製REX-USB60でも秋月製でもダメです。
  その原因はDSRが操作されてスルーモードになっていたからでした。
  対策として(手間ですが)高速カット用ジャンパーでソフトを切り換えるようにしました。 
  ↑5月5日分を参照願います。


  トップ アイコン  
直線上に配置