PICを動かす最低限の回路とは? 
   PICを動かすのに必要な部品と配線とはどのようなものがいるのか?
    そんな質問にお答えしましょう。

1.まずは電源から・・・VDDとVSSという端子 

どんなICも、電源を供給しないと動作しません。電源端子の名称は、ICの種類によって表記がまちまちです。
TTL−ICなどは、VCCとGNDと表記されています。
ではPICではどうでしょうか?

例として、PIC16F84とPIC16F873の端子図を見てみましょう。

どちらのチップも、VDDとVSSという端子がありますよね。
この端子に電圧を加え、動作させることになります。
加える電圧は、およそ5[V]です。
VDDはプラス、VCCはマイナス線を配線します。すなわち次の図のような回路図になります。


でも、一般的なPICでは電源を加えるだけではPICは動きません。
(一部を除く。PIC12C675やPIC16F628などではこれだけで動作するモードがあります。)


2.クロックパルスはどう供給する?・・・OSC1とOSC2という端子 

PICは、内部の論理回路を動作させるタイミングとしてクロックパルスを供給しなければいけません。

体育の行進練習を思い出して下さい。
PICは笛を吹いて号令をかけてやらなければ仕事をこなせないのです。
その笛が4回鳴ると、1つの命令を動作完了させます。

では、その笛は誰が吹くのでしょうか?
チップによっては内部でクロックパルスを作ってくれるものがあります。この内部発振を利用する場合には
部品を外付けし、発振回路を作る事は省略することができます。(内部発振は4MHzがほとんどです)
しかし、一般的なのチップは内部発振回路を内蔵していませんし、たとえ内蔵しているとしても、高速な発振を
行いたい場合には回路が必要となります。

そこで、OSC1とOSC2の端子の使い方をこちらで決める必要があります。

(1)セラロックを使う場合、もしくは水晶振動子とコンデンサを外付けする場合。

  この図のように、水晶振動子1つと
 コンデンサ2つを外付けし、PIC内部の
 回路と合わせクロックパルスを発生させ
 る方法があります。
 
 正確な発振周波数が得られ、高精度の
 制御には欠かせません。

 なお、水晶振動子1つとコンデンサ2つが
 1つのパッケージに入り、3本足の部品と
 なったセラロックを使うと、簡単に組めます。


 また、この図の中のRSは抵抗です。周波数が低い場合には省略することができるようです。
詳細は、各チップのマニュアルを調べるようにして下さい。
(発振周波数に適するコンデンサの値などが表になって掲載されているはずですから。)
私個人としては、いつもセラロックを使用しているので、抵抗やコンデンサを発振回路で使用することはありません。

セラロックは、ボディ正面に振動周波数が記入されており、4,8,10,12,16,20MHzなど、
各種発売されています。

(2)外部発振回路を使って完成されたクロックパルスを供給する場合。


  TTL−ICによる発振回路や、方形波発振素子を
 外部に用意し、そこからパルスを受け取り、クロック
 パルスとして活用する方法があります。

 すでに発振回路がある場合には、その信号を利用できます。
 ですが、無い時にわざわざ用意するのはどうかな?
 と思います。

PICを複数使った回路を設計する場合、ひとつのPICは(1)のセラロックで発振する方法を使い、その中の
OSC2の端子から他のPICのOSC1の端子へ供給するという方法があります。
こうすることで、部品点数を減らし、なおかつ精度の高い発振パルスでPICを複数動作させることが可能になります。


 こんなこともできます!
 たとえば、3つのPICを使用する場合は
 こんな感じで配線すれば、3つのPICは
 同じ周波数のクロックパルスで動作して
 いきます。

 チップによっては、OSC2の端子をI/O端子として
 使用できるものもあるので、このように配線することで
 制御の自由度を高くすることが可能になります。
 (16F84はI/O端子としては使用できません。)

 

(3)CR発振回路を作る場合。


 とりあえず動かしたい!という時には、
 抵抗とコンデンサそれぞれ1個を図の
 ように配線すれば発振してくれます。

 ただし、発信周波数は電源の電圧変動や、
 チップの温度変化に応じて変わります。
 時間に対して正確さを求めない場合には、
 こんな方法も良いでしょう。

 この回路がどうして発振するか?それは
 別の機会に説明したいと思います。


 注意しなければいけないことは、CR発振を使うように設定した場合は、必ず上記の回路を接続する
 必要があるということです。
 もし、CR設定にしているのに外部発振回路から得られたパルスをOSC1端子に接続すると、
 チップが高い確率で壊れます。このことはPICのマニュアルにも記載されています。
 外部からHi信号が供給されている最中にPIC内部のFETがONとなり、Hi信号とOSC1端子を0Vに
 強制的にしようとする関係からショートしたのと同様の電流が流れるからです。
 注意しましょう!

(4)何も取り付けない場合。つまり内蔵発信器を使う場合。

 外付け回路をまったく必要とせず、電源さえ入れれば動作するモードがチップによって存在します。
 つまり内部発振回路を内蔵しているものです。

 内部発振回路は、常温でほぼ4MHzで発振するように作られています。
 しかし、この周波数もチップの製造過程によりばらつきがあり、どのチップでも同じ周波数に近づけ
 られる方が理想的です。
 そこで、マイクロチップは製品による発振周波数の差を押さえるために、周波数を微調整する回路も
 内蔵しています。(無いのもありますが・・・)
 基本温度で4MHzで発振できる補正値が、プログラムエリアの最後の部分に格納してあり、その値を
 読みとってファイルレジスタOSCCALという部分にセットすれば補正されるのです。

 ただし、最近登場してきているチップの中には内部発振を使用しても、補正する部分が省略されている
 ものが登場してきています。
 製造プロセスの精度が上がり、周波数のばらつきが押さえられるようになったからかな??と、考えています。


3.いわゆるリセット端子・・・MCLRという端子 

 どのようなパソコンにもリセットする機能がついています。
 PICにも同様にリセットする端子が用意されています。

 端子の名称は、MCLR端子です。
 この端子、一般的には
端子名称の上にバーが書かれています。
 つまり
負論理入力となっています。


 左の回路のように接続します。

 プルアップ抵抗は、MCLR端子に通常Hiの
 信号を供給しています。
 
 たまにプルアップ抵抗を省略し、直接電源に
 接続している人を見るのですが、リセット信号を
 入れることができません。(リセットをする時に
 0Vラインに接続するのだが、ショートしてしまう!)

 MCLR端子へと流れる電流は微量です。
 リセットスイッチをオンにした時しかプルアップ抵抗に
 電流が流れないと思っても差し支えありません。

 以上のことから考えると・・・・
 
プルアップ抵抗の値は数百Ωから数十KΩまでの範囲で、どのような値でも問題ありません。
 
 ただし、チップによってはMCLR端子もI/O端子として使用できるものがあります。
 PICの内部にプルアップ抵抗が内蔵され、そちらを使用し、外部からのリセット信号は受け付けないという
 そんな使い方が可能なチップも存在しています。

 また、
MCLR端子をI/Oとして使用できる場合でも、注意をしなければならない点があります。
 チップの中には、この端子は入力専用であり、
出力ポートとして使用できないという制約があるものがあります。

 


PICの型番によって、回路を省略できるもの、できないもの、どのような機能があるか異なるので、
事前にマイクロチップのサイトなどからデータシートをダウンロードし、ひととおりの機能を把握してから
回路製作に望みましょ〜

チップのマニュアルを見て、最低限の配線内容を確認しましょう。