No.18 SPIブリッジ型デュアルでんし研   


SPIブリッジ型デュアルのプログラム
ボーレート可変SPIブリッジ(シングル)

メーカー基板を使用
ws☆NAKさんが発売しているSPIブリッジライター(#173)のプログラムを変更してAVRデュアルライターにしてみました。
最初の通信でSPIブリッジになるかAVR-ISPなるかが決まります。

プログラムの変更だけでデュアルライターになります。
尚、書き込みコネクタの並びが私標準のピンレイアウトと違ったためパターンカットして合わせています。
写真はS2313のままですが、ReV.4対応でTiny2313専用になりました。




注意点
共通:
1.ws173基板コネクタの1番ピンと4番ピンをテレコにする必要があります。
  (ライターとしてのMOSIとMISOが入れ替わりました)
2.ソフトはTiny2313専用です。USIを内蔵していないAT90S2313は使えません。
3.私(でんし研のTAD)が勝手にソフト改造したり、ws173基板を使っています。
  ChaNさんやwsNAKさんに問い合わせしない様お願いします。

SPIブリッジ:
  Rev.4に対応しました。
1.ボーレートを倍速動作の230400bpsに対応。(115200bpsと自動切換え)
  avrsp.exeは -pb<n>:230400 のようにして起動してください。
  リセットしなくてもボーレートを変更できます。
2.デュアルの方はフラッシュ不足のため機能を削除しています。
  PIC24/33には未対応です。
  クック(書き込み)モードのみ動作。スルーモードは省略しています。

AVR-ISP:
1.EE-PROMの書き込みはできません。フラッシュに入りきらなかったので削除しました。
  EE-PROMの読み出しはできます。
  EE-PROMに書き込むときはSPIブリッジを使ってください。
2.対応AVR
  このライターは(RAMが128バイトしかないので)TinyとMegaについてはフラッシュ8Kバイトまでのものしか書けません。Mega64やMega168などに書き込むときは、SPIブリッジで書き込むかMega48版などのデュアルライターを使ってください。

第一世代のAT90Sに書き込むにはXMLファイルを編集することで対応できます。
対応方法  S2313の例
 標準だと C:\Program Files\Atmel\AVR Tools\Partdescriptionfiles にある、
 AT90S2313.XMLファイルを編集します。
 文字検索で<blockSize>を捜してください。最初に見つかった<blockSize>の
 128を64に変更します。以上です。


SPIブリッジで解決してない項目
-d1より-d0の方が読み込みが遅い場合がある
-d0のときのSPIクロックを高速化して誤魔化しています(ターゲットAVR 8MHz以上に対応)。
遅くなる原因は不明です。
-d0のSCKパルス幅は正常だったので全体的な何かが原因でしょうか。

-d値の目安(Rev.4)
秋月のUSB/シリアル変換器とws173基板(9.22MHz)の組み合わせでTiny13に書き込むときの-dの値を実験しました。
115200bps 書けない  @9.6MHz (読み出しはできる)
 57600bps -d0〜d5  @9.6MHz
 38400bps -d0〜d12 @9.6MHz
 38400bps -d7〜d12 @0.6MHz(4.8MHz/8分周)

PL−2303に対応
秋月のUSB/シリアル変換器(PL-2303)でも230k-bpsが使えるようにしました。
その方法は・・・

いつバッファーが溜まるか
それはフラッシュの書き込み待ちの時です。
バイト方式でもページ式でも大体6m秒待ちます。その6m秒の間に230k-bpsでは138バイト送られてきます。つまり書き込み待ちのたびにフロー制御されてしまいます。
で、どうするか
だったらフロー制御される前に送信を止めてしまいましょう。
答えは簡単、遅延ルーチンでRTSを立てるだけ。
これが今回の対策方法です。

利点
速いボーレートを使えるので書き込みが速くなります。
COMポートで230kが使えないパソコンでもUSB/シリアル変換器なら230kが使えるようになります。

問題点
1.PL-2303で230k-bpsを使うにはパソコン側に古いドライバー
  (ser2pl.sys Ver2.0.0.2*)が必要です。
  新しいドライバーでは無理でした。
2.今回(’08年2月17日)の変更で数%遅くなりました。
  PL-2303を使わない方は特にファームを更新する必要はありません。
  書き込み待ちの時に次のデータを転送しておくのは早く書くための技です。
  これをワザと止めているのが今回の方法なのでボーレートが遅いと不利になります。

更新履歴
2008年 2月19日:デッドロックになるバグを修正しました。
2008年 2月18日:秋月シリアル変換器でも230k-bpsで書けるようにしました。
2008年 1月15日:SPIブリッジ(シングル)もオーバーフロー異常は無限ループに変更。
2008年 1月14日:SPIデュアルでリングバッファのオーバーフローは無限ループに変更。
  これはAVRに不正なヒューズ値が書き込まれない為の予防策です。
  AVRSPは通信異常になるので待たされますが、ctrl-Cキーで終了できます。
2008年 1月 8日:1回めの通信が失敗しないように改善。
  SPIブリッジRev.4のときの-d値の目安を追加しました。
2007年12月25日:SPIブリッジ(Rev.4)に合わせて更新。
  秋月シリアル変換器でも57600bpsで書けるようになったので19200bpsは廃止しました。
2007年 9月 3日 :ボーレート19200bpsに対応。
2007年 8月11日 : (ISP mode errorになる時がある)バグを修正。
2007年 8月 8日 : SPIブリッジ型デュアルライターを公開。

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