PIC12C509の取り扱い




1,PIC12C509とは、

PIC12C509(以下12C509)は、PICマイコンのロー・レンジに位置する、 極めて限定された機能のみを持つ8ピンの小さいPICマイコンである。基本的な、 命令は、PIC16F84とだいたい同じである。また、12C509は、非常に安価で、 一個150円で売っている。12C509は、4MHzの内部RC発振モードを 持っており、外部の発振回路から、クロックを送らなくても使用する事が出来る。



2,12C509での初期設定

2.1 校正値の設定

12C509で、プログラミング(特に、内部RC発振を利用)するとき、 まず、OSCCAL(校正値レジスタ)に、校正値を入れなければならない。校正値 は、プログラムが開始するとき、プログラムメモリの最後部に出荷時に書き込ま れた校正値がWレジスタに格納されるので、プログラム上では、プログラムの 始めに、Wレジスタの値をOSCCALレジスタに格納すればよい。


--------------------------------------------------------------------

例      ORG     00H

        MOVWF   OSCCA               ; 校正値を設定

--------------------------------------------------------------------



2.2 ポートのI/O設定

12C509で、ポートの入出力を設定するときは、TRIS命令を使用する。 これは、入出力を設定するレジスタが、物理メモリに存在しないからである。 さらに、GR2ピンであれば、その入力を、タイマー0に送ると言うような設定 をしたいときには、OPTION命令を使用する。これも、先ほどと同じ様に、 OPTIONレジスタは、物理メモリには、存在しないからである。


--------------------------------------------------------------------

例      ORG     00H

        .....

        MOVLW   B'00000001'         ; GP0ピンを入力に設定

        TRIS



        MOVLW   B'00100000'         ; GP2ピンの入力をタイマー0に入力

--------------------------------------------------------------------



2.3 GP3、GP5ピンの特性

GP3ピンだけは入力専用で、設定次第で、汎用入力ピン、 MCLR(マスター・クリア・リセット入力)ピン、プログラム書き込み電圧入力 ピン(設定とは関係なく、プログラム書き込み時に電圧を加える)の3つの機能を 持つ事が出来る。そのため、汎用I/Oポートとして利用する際には、入力にしか 設定出来ない。また、GP5ピンは、内部RC発振モードの時以外は、汎用I/Oポート としては、使えない。よって、GP3ピンは、常に、入力に設定する。



3,プログラミング時の注意点

3.1 命令

12C509では、PIC16F84では存在した、ADDLW, SUBLW, RETURN 命令が 存在しない。つまり、定数との加算、減算が出来ないことになる。しかし、 RETURN 命令だけは、RETLW命令で代用できる。ただし、この命令は、Wレジスタ に、値をセットしてリターンする命令なので、Wレジスタの値を持って帰るには ファイルレジスタに一旦入れておいて、後から取り出す必要がある。


-------------------------------------------------------------------

例      CALL    SUB

        MOVFW   TEMP               ; 待避させたデータをWレジスタに戻す

        ..........

SUB

        MOVWF   TEMP               ; Wレジスタの値を待避

        RETLW   0                  ; Wレジスタに入れる定数は何でもよい

-------------------------------------------------------------------



3.2 割り込み

12C509には、(WDTやMCLRを除いた)割り込みは存在しない。 例えば、タイマー0がオーバーフローしたときに、割り込みをかける、といった事 が出来ない。当然の事ながら、割り込み処理ベクタも、コントロールレジスタも 存在しない。よって、割り込み処理をしようとした時、タイマー0など割り込み 要因となる物の値を読むなどして、自分でやる必要がある。



4,まとめ

以上が、12C509を使う上での注意点である。これらのことさえ知って いれば、後はPIC16F84と同じ様にプログラムが開発出来る。12C509は、 それほど、複雑な物ではなく、むしろシンプルである。ただし、唯一プログラム 開発で、問題になるのは、このデバイスの書き込みが一回限りであることで ある。つまり、一度書き込んでしまうと、二度と修正出来なくなってしまう。 しかし、かなり高価であるが、一個1600円の、紫外線消去型12C509J/Wがある。 これは、プログラムメモリの内容を紫外線を利用して消去するもので、 開発、テスト用に用いられる。このデバイスの注意点は、プログラムメモリ の最後部にある校正値も一緒に消してしまうので、必ず校正値をセーブする 必要があるところである。



5,感想

12C509を使ってみて、まず最初に困った事が、資料がほとんどなかった 事である。PIC16F84の資料は、増えつつあるにも関わらず、12C509の資料は マイクロチップ社の提供するデータシートぐらいしか無く、そのほかは、 サンプルプログラムをみて、自分で解析しなければならなかったのである。 そのことが、このレポートを書くきっかけとなった。このデバイスは、低機能 ではあるが、特定処理をモジュール化出来ると言う点で、非常に優れている。 (今回のロボフェス出場機に、このデバイスを使ってCPUから制御出来るPWM をのせた)今後も、このデバイスは、こういった特定処理のモジュール化に 役立つと思う。



参考文献


1)PIC12C5xx Data Sheet ,Microchip Technology Inc (1999)

2) 永浦 清/上野 幸一 小規模CPLDの設計、トランジスタ技術2001年

	8月号、p281〜286、CQ出版社




Back