ラジオ少年の楽しい電子工作、その他

AVRを使った簡単な回路の実験、そして日々のちょっとした出来事を書きます。

AVRのパラレルプログラミング

2010年10月28日 | 日記
AVRパラレルプログラミングを色々実験?してきましたが、私なりの結論(オーバーかな)を書きます。

パラレルプログラミングモードに入る条件は

① VCCを0V、RESETピンを0V、Prog_enableピンを全てLow(0)に設定。
② VCCとGND間に4.5~5.5Vを印加。
③ 20μs以内にVCCが最低1.8Vに達することを保証。
④ 20~60μs待ち、RESETに11.5~12.5Vを印加。
⑤ Prog_enable識別がラッチされてしまうのを確実にするため、高電圧が印加されてしまった後、最低10μs、Prog_enableピンを無変化に保つ。並列プログラミング指令を与えるのにも先立って少なくとも300μs間待つ。
となっています。

上記は条件のみでAVRの中でどのような状況になるのかは解説がなく詳細は分かりません。
並列プログラムモードに入ったかどうかは、シグネチャーバイト読み出しで正しくデータが出てくれば並列プログラムモードに入っていることが分かります。

ここで、ターゲットのAVRの状態を考えてみます。私の実験したAVRはATtiny2313です。

1,RSTDISB=1(非プログラム)、FROMにプログラムが書きこまれている。
2, RSTDISB=1(非プログラム)、FROMは消去されている。
3,RSTDISB=0(プログラム)、FROMにプログラムが書きこまれている。
4, RSTDISB=0(プログラム)、FROMは消去されている。

1,2については問題なく並列プログラムモードに入ることが出来Fuse bitの書き換えが出来ます。

3,ですがこれが以外とうまく行かずシグネチャーバイトが読み出せたりなかったり、AVRによって出来たり出来なかったりの状態です。
4,についてはどうやらうまく読み出せているようです。

さて、3ですが、RESETがプログラムでディセーブルされていることが関係するのかどうも並列モードに入ることにばらつき出ている様な感じです。つまり、このモードに入れないとVccが供給されているときは、AVRの中に書き込まれたプログラムが動作状態になり、これがシグネチャーバイト読みだしを邪魔して読み出し不能となるようです。
ロジアナで読み出しのタイミングを見てみますと、OEはちゃんとLOWに落ちますがWRがLOWになりっぱなしです。
うまく読み出せる時はWRはずっとHighになっています。

このWRのHighはターゲットのAVRのプログラムでHighになってしまう様です。
書き込まれたプログラムに依ってはうまく読み出せる場合も有ります。

私の作ったハード(HVRescue_Shield12)及び、プログラムが原因している可能性は大きいと思います。
ATtiny2313のエラッタに並列プログラムで不具合があることも記載されています。

SPIENのみの書き換えは問題なく出来ます。問題は”RSTDISB”の書き換えです。
1~4の条件に関係なく、この書き換えが出来てこその並列プログラマですから。


並列書き込み器は以外と難しいのかな?と言うのが今の感触です。例えば+5Vの立ち上がり、この電圧は普通5Vレギュレータで作り、TRでON/OFFをします。
この立ち上がりがあまりシビアですと、簡単な電源では駄目と言うことになります。
並列プログラム状態のAVRの中の説明があればもっと作りやすいかも知れません。

ATMELの純正書き込み器では実際はどうなのか知りたいものです。きっとうまく行くのでしょうね。

MR.Chanの並列プログラマでの書き込みは全く問題なく出来てます。

どういう所を注意して作ったらいいのか、ググッても私の知りたい事は無さそうですね。







































コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 秋桜ー2 | トップ | T-SH7706LAN CPU ボード »
最新の画像もっと見る

コメントを投稿

日記」カテゴリの最新記事