PIC開発

last updata : 2000頃

saka pic001 Ver3

PIC16F84の開発

PIC16F84は、親指シフト変換器及びの新兵器に使われているワンチップマイコンです。 個人的に使うには、凄く良い点があります。

  1. 価格が手頃で入手し易い。
  2. 秋葉原のパーツショップで600~1,000円程度で入手可能

  3. 開発システムが安価である。
  4. アセンブラは、純正品がフリーであります。書き込み器 *1 さえ作ればPICを自由に使えます。また、純正の書き込み器でも..3万円程度です。

  5. 開発コストが安価である。
  6. なんと言ってもこれが.. PIC16F84は、OTP *2 ではなく何回もプログラムする事が出来ます。 しかも紫外線消去ではなく電気的に..

PIC16F84の特徴

PIC16F84-10は、マイクロチップ社製です。 このワンチップマイコンは、ハーバードアーキテクチャ*3 によりプログラム領域とデータ領域が明確に分かれています。 アドレス自体が別な物になっています。

ICSP*4が可能です。 要するに基板を組み立ててから書き込む事が出来ます。 内部にフラッシュROM(1KWord*5)を持っているためです。 これにより簡単に機能変更/追加が行なえます。

発信回路に付いて。水晶振動子やセラミック振動子..またはクロックの精度が要らないなら、CR(コンデンサと抵抗)でも発振させることが出来ます。 AT互換機のキーボードインターフェースだけならば.. CR発振で十分の性能が出ます。(RS-232Cはちと無理かな..)

パワーオンリセットは、内部に持っており 極端に電圧の立ち上がりが遅くない限りプルアップルだけでOKです。

外形

18PIN 300milの大きさです。通常のTTL-ICと代わりありません。

次にピンは位置を示します。

PIC16F84 PIN
ピン配列


用語解説

  • 書き込み器
  • PICにプログラムやデータを書き込み機械です。 通常は、ICを差すICソケットが付いていますが..

    私が持っている(作った)物は、ICSP に対応するためにICクリップで挟むタイプになっています。 回路は、トランジスタ技術( CQ出版社)の '95/12号「ワンチップマイコンで行こう」に載っていた物とほぼ同じです。

    書き込みプログラムは、NIFTY-ServeのFDEVICEから「PICEE」 を貰ってきました。この書き込み器の原型は、 マイクロチップ社 のwebサイトのアプリケーションノートにあります。

  • ハーバードアーキテクチャ
  • プログラム領域とデータ領域が完全に区別されている機構の事を指しています。 制御用等の少ないデータを扱う場合には、有効な方法だと思われます。

    PIC16F84-10には、データ領域(PICではファイルレジスタと呼ぶ)は、 256byte指定されており通常のメモリとして使えるのは68byteです。 これが多いか少ないかプログラムの作り方次第でしょ。

  • OTP
  • One Time Programming(たぶん)です。 ワンチップマイコンでは、お馴染みのもので.. 1回だけ書込みが行なえます。 少量多品種の装置を作るときに重宝します。

    ただ製品開発には、何度も書き換えを行なうのでエバリューションチップ (エバチップ)が使われます。 EPROMの様に紫外線で消せるものが主流です。

    PIC16F84以外のPICシリーズも殆どがOTPです。エバチップも秋葉原で手に入るので使い勝手は良いです。

  • ICSP TM
  • In-Circuit Serial Programming です。 PICシリーズには、FlashROMやEPROMを持っていますので 回路構成をIPSに対応していれば、回りの回路に影響を 与えず書き込む事が出来ます。 しかもFlashROMが載っているPIC16F84は、書き換えが出来るのです。

  • Word
  • PIC16F84-10は、1KWordのプログラム領域が有ります。 パソコンのプログラムに慣れてる方なら2048byteと思うかもしれませんが.. PIC16F8xシリーズは、1Word当り14bitなのでbyteには変換できません。

    1命令当り1Wordなので1024ステップ書けます。 少ない様に思われますがかなりの使いでが有ります。 使用用途では足りなくなるでしょうが。

PIC16F84の限界

PIC16F84を限界まで使う事が出来るか..色々考えてます。

PIC16F84-10で、シリアルの全2重は、何bpsまで行くのか?

現在PICでシリアル(RS232C)が何bpsで動くかをやっています。仕事の関係も有るので..

ちっと前までは、2400bpsの全2重までプログラミングで可能でしたが..方式の変更で何とか9600bpsの全2重まで可能と計算上で出ました。 あとは、その計算道理にプログラムが納まれば..okなのですが..

結果予想通り9600bpsで全2重化で動作しました。

しかし他の処理が追いつかないので実用化するには6.144MHzより速いクロックが必要ですね。 1.6倍の9.8304MHzがいいでしょう。時間計算も簡単だし。

この9.8304MHzでは半2重の19200bpsもかなり余裕がでます。 と言うのは、6.144MHzで9600bpsを受ける時は割り込み受信処理がメインの約3割り程必要とします。(切目なく受信した場合)

そのままのクロックで19200bpsに変更すると約6割を使用する事となり、かなりメイン処理に負担になります。 クロックを上げると1.6倍の速度向上により割り込み処理が5割切り、メインの処理の負担が減ります。 19200bpsは、PC-9801/21のキーボード通信に使われてたと思います。

最後に全2重処理の場合の問題を

PIC16F84は、プログラムタイマを1本しか持っていないと言う事です。 送信用の時間を正確を生成できない事を意味しているのです。 割り込まれたかを調べて送信時間を調整する始末です。 誤差範囲にどうやって入れるかプログラムの鍵ですね。

PIC16C84-10 1個でビデオゲーム?

CQ出版社 発行のトランジスタ技術の1997年の5月号(かな)に載っていた記事で.. PIC16C84を1個を使って ブロック崩しもどき のゲームが出ていました。 ビデオ信号まで生成してるのには驚きでした。 PIC16C84は、PIC16F84の前のタイプで内蔵のレジスタファイルが半分です。