« AVRのためのPIC再入門 | トップページ | USB入門 »

2006年8月30日 (水)

AVRのためのPIC再入門

PICでAVRライタを作る10

先日作ったPIC16F648A-AVRライタで、RS232Cコネクタを外して
いた場合、Rxdピン(PICから見た)が浮くと senshu さんより指摘を
頂いた。確かにコネクタを外した状態の事まで気が及ばなかった。
なるほど、言われて見れば至極ごもっとも。

いやー、勉強になります。師匠と呼ばせて貰ってもいいですか?

AVRISPの場合、決まった形式のチェックサム付のパケットを
送受信するので、不定のデータを受信しても、デコードの前に
チェックサムエラーではじかれるし、そもそもパケットの形式が
正しくなければバッファリングを開始しないと思うので、SPI周りの
誤動作は防げるとは思うが、指摘をうけてから回路図を見直して
みると、なにやら気持ち悪い回路に見えるから不思議。

そんな訳で、回路図を修正してみた。
これでいいでしょうか?> senshu さん

あと、16F648Aのデータシートの電源電圧と動作周波数の
グラフを読むと、20MHz動作させる場合、電源に4.5V以上が
必要な様なので、このライタではブラウンアウトリセットをオンに
している。そのため、3.3V系の電源では動作しない。
試しにこのコンフィグレーションビットをオフにして、3.3V電源で
動作させて見たところ、なんか動いちゃったのでそのまま、
HEXファイルを差し替えて見た。

やっぱりBORオンにしました。ソースは公開してありますので、
(いらっしゃらないと思いますが)試して見たい奇特な方は、
ソースコードを弄って下さい。

|

« AVRのためのPIC再入門 | トップページ | USB入門 »

コメント

早速修正していただき、ありがとうございます。

おそらくこの追加抵抗が無くとも悪影響は起きな
いでしょうけれど、用心したに越したことはあり
ませんね、部品代もわずかですし (^_^;)

師匠?めっそうもない、支障ならありえますが、、。

また、ISPコネクタを6Pに変更した2号機を作成しようと
考えていますが(6Pコネクタを付加すればよいの
ですが、場所がない)、ISPコネクタとPICマイコン
のピンの間に100Ω程度の抵抗を入れようと考えています。

ラフに扱った時の保護用でしょうか、類似のライタ
でも良く見かけるので真似しようというわけです。

新しいHEXファイルでは、3.3Vでの動作も確認できた
とは朗報です。これくらいの使い方なら、通常の環境では
問題なく動作するような気がします。

投稿: senshu | 2006年8月31日 (木) 23時14分

ISPコネクタ(6P)を工夫して10Pコネクタの脇に
増設しました。

6Pが必要になった理由は、STK500では6Pでないと
書込みができないからです。

その結果、手元にあったmega168では正常に使えましたが、
S8515, MEGA8L では、残念ながら、以下の警告が
出て使えませんでした。

何か他に報告すべき事項があるでしょうか。

--------

---------------------------
ISP Mode Error
---------------------------
A problem occured when executing the command. See the command output for more
info.

Tip: Check that the ISP programming frequency specified on the 'Board' page
is well below 1/4 of the clock frequency of the device. Extra precaution
should be made when using the CKDIV fuse and/or Clock Prescaler Register
(CLKPR) on parts supporting this. If this does not help, check your
connections.

See the troubleshooting section in the help system for more information on
what may have caused the problems.
-----

ログウインドウには、以下のように、programming modeに切り替えられなかったことが表示されていました。

Setting mode and device parameters.. OK!
Entering programming mode.. FAILED!
Leaving programming mode.. OK!

投稿: senshu | 2006年9月 1日 (金) 11時47分

私もwikiサイトを運用しております。

タッパーに作ったAVRISP互換ライタを入れてみました。

http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?memo%2F2006

これでうっかりショートさせることがなくなります。

投稿: senshu | 2006年9月 1日 (金) 18時03分

度々の動作確認報告ありがとうございます。

AVRではISPプログラムモードに移行する場合、
SCKをLに引き込んでからRESETに2CPU-Clock
分の正パルスを与えろとデータシートに記述が
在ります。

12F683でSPIモジュールを書いていたとき、
ターゲットの8MHz-tiny26に対し12F683は
8/4MHzと十分に遅い動作スピードだったので、
RESET立ち上げ/立ち下げ命令間に
ディレイルーチンを挟みませんでした。

20/4MHzの16F648Aに移植する際、この部分の
修正を見落としていました。私の手持ちの
AVRだとRESETに2Clock分の正パルスを与えな
くても、(たまたま)ISPモードに移行する事が
出来たので、問題が起きなかったと思います。

プログラムモードに移行出来ない原因がこの部分
なのかどうかは分かりませんが、なんにしても
間違った実装を放置しておくのは気持ち悪いので、
ダウンロードファイルを差し替えました。

ちなみに、S8515とmega8Lの動作クロックは
いくつでしょうか。

サイト見させて頂きました。
楽しそうな事をやられてますね。

投稿: Morosan | 2006年9月 2日 (土) 14時48分

早速対応していただき、感謝します。

修正版で試したところ、

mega16L, S8515 共にOKでした。

これで、私の手元にあるAVRでは問題なく
書き込めることが確認できました。

3.3V対応ですが、動作するかしないかは運も
あるので、morosanの考え方で良いと思います。
(私は、3.3Vで開発したいものがあるので、
オフでHEXファイルを作成しました)

また、気づいた点があれば書き込みます。

投稿: senshu | 2006年9月 4日 (月) 08時54分

動作報告ありがとうございました。
報告のおかげで気付かなかったバグを修正する事が出来ました。

だだ、前回の修正で応答のないAVRに対しISP移行命令を
発行した際、エラー応答が遅れAVRStudioからフェイル
したと判断されてしまい、それ以降の操作が出来なく
なってしまうという不具合を新たに作ってしまったので、
再びこの不具合を修正しダウンロードファイルを差し替え
ました。

再び問題があるようなら、遠慮なく書き込んでください。
ご面倒をお掛けしました。

投稿: Morosan | 2006年9月 5日 (火) 23時06分

再度の修正に感謝します。
早速、改定版に更新しました。

ところで、HEXファイルを書き込む際に、秋月の
PICライタはブラウンアウトの有効/無効を手動で
変更できます。

したがって、アセンブルしなおすことなく、
3.3Vでの動作用の書込みも可能でした。

報告まで。

投稿: senshu | 2006年9月 6日 (水) 10時19分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/180469/11687035

この記事へのトラックバック一覧です: AVRのためのPIC再入門:

« AVRのためのPIC再入門 | トップページ | USB入門 »