PIC16F1503

  PIC16F1503の特徴の1つは、Configurable Logic Cell (CLC:構成可能な論理セル)というプログラム可能な論理セルを持っていることです。少々、制限がきついのですが、論理回路をプログラムで実現できます。昔、流行ったGAL(Generic Array Logic)を思い起こします。なお、このPICの難点は、ファームウェアをデバッグするには、そのためのヘッダー(AC24405)を新たに購入する必要があることです。

開発途中で作成したファームウェアをうっかりアップロードしてしまいました。6月7日以前にダウンロードされ方には、申し訳なく思います。再度ダウンロードしてくだい。


PIC16F1503を用いたテスト回路

  以下に回路図を示します。電源電圧は5Vとしていますが、マニュアルによれば、2.3V以上であれば問題ないとのことです。


回路動作確認

  PIC用のファームウェアをコンパイルするために MPLAB IDE v8.91MPLAB X IDEではありません。サイトページの下の方のDownloadsの中にあります)をインストールした後、MPLAB XC8をインストールしておきます。

まず、作成した回路がきちんと働いているかどうかを確かめます。ファームウェア1503_wait.zipをPICに書き込みます。

1.ピンヘッダJP1にはファームウェア書き込み器(たとえばICD3)を接続します。

2.1503_wait フォルダーの中にある general.mcpかgeneral.mcw をダブルクリックします。すると、MPLAB IDEが起動します。

3.ファームウェアをコンパイル、リンクするために、MPLAB IDEのメニューから "Project->Built ALL" を選択します。

4.メニューから "Programmer->Select Programmer" を選択して、お使いの書き込み器(プログラマー)を指定します。私はIDC3を使用しています。.

5.メニューから"Programmer->Program" を選択してPICにファームウェアを書き込みます。

6.ファームウェアを走らせるために "Programmer->Release From Reset "を選択します。

ファームウェアを走らせると、約1秒周期のパルス( 5V, 0V, 5V, ...) がPICの2番ピンから出力されますので、テスターで、このピンの電圧を測定してください。もし、パルスが出ていなければ回路に問題がありますので、回路を再チェックしてください。 main.cの中身をみれば、何をしているのかが簡単に分かると思います。


Interrupt-on-Change割り込み

  PICの3番ピンを入力ピンとし、ファームウェアで弱いプル・アップをしています。このピンをGND(0V)にするたびに、割り込みがかかり、理想的には2番ピンがH(5V)になったりL(0V)になったりを交互に繰り返します。ただし、チャタリング防止策はとっていないので、理想的になりません。PICに書き込むファームウェアは1503_ioc.zipです。



Configurable Logic Cell

Configurable Logic Cell(CLC)を構成するために、Microchip社が提供している、PIC16F1503のマニュアルがあるWebサイトにアクセスし、その下方の Documentation & Softwareの中のDevice Documentationの所にあるConfigurable Logic Cell (CLC) Configuration Tool GUIをダウンロードします。ダウンロードしたものの中に、CLCDesignerTool.exeなる実行ファイルがありますので、それを実行すると、以下のような画面が現れます。ここでCLCを構成して行くことになります。

  使用するPICを選択します。

  使用するCLC(セル)を選択します。PIC16F1503の場合、CLC1とCLC2の2つだけですので、いずれかを選択します。上図ではCLC1が選択されています。

  使用する入力を選択します。最大4つの入力を選択できますが、PICの入力ピンは最大2つまでしか選択できません。PICの入力ピンの他に、2つのセルの出力ピン、クロック出力(周波数はクロックの1/4)などを選択できますが、何が選択できるかについては、③のコンボボックス(▼をマウスでクリック)を開いて見れば分かります。結構、選択の幅が限られています。

  入力(最大4つ)とOR GATE(1から4)を配線します。各GATEは4つの入力を持っています。上図ではすべて×がついており、配線されていない状態にあります。配線がされていないところは、"L"となりますので、上図ではGATE1から4までの出力は"L"となっています。×のところをマウスで1回クリックすると、配線され、さらにクリックすると○が付き、負論理での配線となります。さらに、クリックすると、配線されていない状態に戻ります。

  GATEの出力で、上図では出力が正論理となっています。ここをマウスでクリックするたびに、正論理、負論理(○が付く)を繰り返します。

  上図で、⑥と書かれた赤枠で示した場所には、論理機能回路が入ります。⑥と書かれた場所の上方に、選択可能な8つの論理機能回路がタブ状に並んでいます。左から、"AND-OR(上図のではこの回路が選択されています)"、"OR-XOR"、"4入力AND"、"S-Rラッチ"、"セット・リセット付きDフリップ・フロップ"、"リセット付きDフリップ・フロップ"、"リセット付きJKフリップ・フロップ"、"セット・リセット付きトランスペアレント・Dラッチ"です。必要な回路をタブで選択します。

  出力の論理を決めます。上図では出力が正論理となっています。ここをマウスでクリックするたびに、正論理、負論理(○が付く)を繰り返します。

  PIC15F1503には、セルがCLC1とCLC2の2つがありますが、現在構成しているのは、CLC1に関する部分だけであると言うことを念頭におきます(CLC2を構成する場合は、②のところで選びます)。CLC1を使用する場合は、CLC Enableにチェックを入れます。出力をPICの出力ピン(PIC16F1503の11番ピン)に出す場合は、Output Enabelにチェックを入れます。出力で割り込みを掛ける必要がある場合で、立ち上がりで掛ける場合は、Raising Interruptに、また立ち下がりで掛ける場合は、Falling Interruptにチェックを入れます。

  右下方にあるCopy and Showボタンを押すと、構成した結果に対応するレジスタ設定値をここに表示します。ここで、例えばCLC2に、CLC1の構成結果をコピーしたい場合、②でCLC2を選択して、右下方にあるPasteボタンを押します。なお、得られたレジスタ設置値は、メニューのFile(左上)からSave C codeを選択して、適当な名前で保存します。保存ファイルのファイル修飾子はincとなります。PICのファームウェアでこのincファイルを#include文で取り込むことになります(以下の実例を参考にしてください)。また、incファイルをニューのFileメニューからLoad codeで読み込めば、そのincファイルの内容が、上図のようにGUI(Graphical User Interface)で図示されます。

注意:  PICのピンをCLCの入出力ピンとする場合、使用するピンをデジタル(ANSELAとANSELCレジスタ)に設定し、また入力ピンか出力ピンかを適切に設定する(TRISAとTRISCレジスタ)必要があります。さらに、入力ピン(RAピン)を弱プルアップするには、OPTION_REGbits.nWPUEN=0;で弱プルアップを許可し、WPUAレジスタで弱プルアップするピンを設定する必要があります。なお、RCピンは弱プルアップには対応していません。


AND回路(その1)

PICに書き込むファームウェアは1503_and1.zipです。PICの6番ピン(CLC2 IN1 (RC4))と7番ピン(CLC2 IN0 (RC3))を2入力とし、10番ピン(CLC2)に出力とするAND回路を形成します。


AND回路(その2)

PICに書き込むファームウェアは1503_and2.zipです。AND回路(その1)と同じく、PICの6番と7番ピンを2入力とし、10番ピンを出力とするAND回路を形成します。ただ、AND回路(その1)とは回路構成が、下図のように異なります。GATE2とGATE3の出力を"H"にしているところがポイントです。


分周回路

PICに書き込むファームウェアは1503_devider.zipです。2番ピンから周期1秒のパルスが出ますので、それを7番ピンに入力します。すると、10番ピンから2分周されたパルスがでます。テスターで確認ください。下図のように、回路的にはDフリップフロップの出力を反転してD入力に返すことにより、Tフリップフロップを形成しています。なお、入出力には約50nsecの遅れ(74HC393APの約2倍)がありますので、回路設計上注意が必要です。



XC8を使用するためのMPLAB IDE設定

1.MPLAB IDEを起動し、メニューから "Programmer->Select Language Toolsuite" を選択します。

2.以下のように、"Active Toolsuite" コンボボックスから"Microchip xc8 toolsuite"を選択します。

3.OKボタンを押下して、終了。

戻る