PIC16F1503の特徴の1つは、Configurable Logic Cell (CLC:構成可能な論理セル)というプログラム可能な論理セルを持っていることです。少々、制限がきついのですが、論理回路をプログラムで実現できます。昔、流行ったGAL(Generic Array Logic)を思い起こします。なお、このPICの難点は、ファームウェアをデバッグするには、そのためのヘッダー(AC24405)を新たに購入する必要があることです。
開発途中で作成したファームウェアをうっかりアップロードしてしまいました。6月7日以前にダウンロードされ方には、申し訳なく思います。再度ダウンロードしてくだい。
以下に回路図を示します。電源電圧は5Vとしていますが、マニュアルによれば、2.3V以上であれば問題ないとのことです。
PIC用のファームウェアをコンパイルするために MPLAB IDE v8.91(MPLAB 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の中身をみれば、何をしているのかが簡単に分かると思います。
PICの3番ピンを入力ピンとし、ファームウェアで弱いプル・アップをしています。このピンをGND(0V)にするたびに、割り込みがかかり、理想的には2番ピンがH(5V)になったりL(0V)になったりを交互に繰り返します。ただし、チャタリング防止策はとっていないので、理想的になりません。PICに書き込むファームウェアは1503_ioc.zipです。
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ピンは弱プルアップには対応していません。
PICに書き込むファームウェアは1503_and1.zipです。PICの6番ピン(CLC2 IN1 (RC4))と7番ピン(CLC2 IN0 (RC3))を2入力とし、10番ピン(CLC2)に出力とするAND回路を形成します。
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倍)がありますので、回路設計上注意が必要です。
1.MPLAB IDEを起動し、メニューから "Programmer->Select Language Toolsuite" を選択します。
2.以下のように、"Active Toolsuite" コンボボックスから"Microchip xc8 toolsuite"を選択します。
3.OKボタンを押下して、終了。
戻る