2024年12月22日日曜日

PIC16F84Aの書き込みについて(備忘録)

 PIC16F84Aをヤフオクで入手できたので、書き込みテストをしてみた。しかし、なかなかうまくいかない。Kit3.5が合わないのかと思い、調べると対応表ではNGとなっていたので、だめかといったん諦めた。が、多少回路を追加してやると書き込みできるという情報もネットにあったので、その情報を参考に試行錯誤してみた。


 ブレッドボードで簡単なコードで動作確認してから、ユニバーサル基板に回路を作りました。
<注意点>
PICkit3.5 の電力プロパティを調整 5V供給にチェック入れる。(ただし、なぜか、外部電源を追加したときはチェックを外したほうがいい場合もあった?このへんの動作で若干不明なところもある。)
・PICも古いのでコンパイラは念のため古いバージョン 1.45を使用した。
・電源落としてから、コネクタをつないだり、離したりする。電源入っている途中ではずすのはデバイスやKitの破損の原因になるらしい。
・外部電源として安定化電源から5V供給。
・今回、Programmer-To-Goという機能を知りました。リセットのつもりで、Kitにあるボタンを押すことで、変な動作になってしまい、困りました。このモードに入るかどうか聞いてくるので、Yesにしてしまったためでした。このボタンは使うことは、たくさん書き込むとき(PCなしで)とか以外は通常は使うことはないようです。
・Set Configuration Bits から生成したコードを追加し、以下のようなコードにしました。(和文モールスです。)

※1回でうまくいかなかった原因は、電源が不足していたこと、配線ミスだったことと、コードにstdio.hやXTALの周波数指定が不足していたことなど だったようです。
※今回は試しにモールス表示にしてみたが、スイッチ制御とかいろいろ活用できるかもしれません。(残念ながらUARTは使えないPICなので、制限はありますが。)
おおまかな部品配置を決めてから、極力コンパクトな形に基板にまとめました。
※上記、書き込み装置なしの基盤も作ったが、最初うまく動作しなかった。パスコンやMCLRのプルアップ抵抗を入れたら動作するようになった。
※Produciotn>Set configration bitsというところで、configをgenerateしたものをコードの最初に張り付けないとうまくコンパイルできなかった。これはPICの種類により微妙に違うようなので、PICが違うとそれに合わせて必要になるようだ。
PIC16F628Aも試したが、残念ながらUARTは発振子を外付けしないと実用にはならない感じがした。ネットでこのPICのUARTをあまり見かけないのもそのためかもしれない。かえって、ピン数の少ないPIC12Fあたりに、UART向けに周波数が安定しているタイプがあるようなので、そちらを使うといいようだ。
※その後、PIC16F84AもPickKIT3.5で使えることが判明。単純に接続の説明の読み取りミスだった。自分でこのブログで備忘録をとっていたので、それを確認して判明。DIP8/14 DIP18/20と裏面に表示してあったが、その意味をすっかり忘れていた。(DIP 8~14 18~20ならOkという意味らしい。となりに16F57と表示されていて、てっきり16Fはそちらだと勘違いしていた。)2025/1/16

0 件のコメント:

コメントを投稿