PICシリーズの構成

  1. PICシリーズ

    1. 概要

      PICには12、16、18シリーズがあります。12シリーズは8ピンのパッケージで、PICのどれかひとつの機能を専用に利用するとき便利です。16シリーズは18ピンから40ピンまで、ピン数が選択できます。大型のPICはすべての機能を含んでいます。必要とする、機能、入出力の端子数で、メモリのサイズで必要な型番を選択してください。
       18シリーズは命令が16ビットになり、異なる命令セットになります。

    2. マニュアル

      マニュアルは、MicroChip社のwebからPDFをダウンロードできます。英文です。
       http://www.microchip.com

    3. 16Fシリーズ

       16Fシリーズにも多くの型番があります。以下は、メモリサイズや内蔵する周辺機能を表にまとめたものです。クロックの(int)はクロック内臓を意味します。ccp は、Capture、Comparator、PWM の先頭文字で、計数値の取得やPWM信号の発生を行います。
       UARTは非同期通信機能で、PCのCOM端子を利用してデータの送受信を行うことができえう機能です。naはNotAvailableでりようできないこと、avはAvailable:利用可能です。比較器はアナログ信号としての比較、ADはアナログディジタル変換です。
       最後のJDMはUARTを利用してPICへのプログラム書き込むを行う回路方式で、書き込み回路とソフトが公開されています。
       ここでは、先の章で紹介した 628,648 以外のPICを簡単に紹介します。

      ピン プログラ
      ムメモリ
      データ
      メモリ
      EEROM 入出力 クロック ccp UART タイマ
      8/16
      比較器 AD JDM
      648A 18 4k 256 256 16 4Mhz(int)
      20MHz
      1 USART 2/1 2 na av
      630   1k 64 128 12 4Mhz(int)
      20MHz
        1/1 10bit/8ch av
      84A 18 1k 36 64 13 10Nhz na na 1/0 a na av
      873/874 28 4k 192 368 14 20MHz 2 USART/
      SSP
      3/2 2 10bit/5ch
      /8ch
      av
      876/877 40 8k 368 256 14 20MHz 2 USART/
      SSP
      3/2 2 10bit/5ch
      /8ch
      av
      87 18 4k/7k 368 256 16 8Mhz(int)
      20MHz
      1 USART/
      SSP
      2/1 2 na av
      88 18 4k/7k 368 256 16 8Mhz(int)
      20MHz
      1 USART/
      SSP
      2/1 2 10bit/5ch av

    4. 12Fシリーズ

      12Fシリーズは8ピンの小形パッケージです。6本以内の入出力端子の場合には便利です。10ビットのADコンバータ、タイマー、内臓発振子を持ち、割り込みも可能です。シリアル通信機能はありません。
      種類 プログラ
      ムメモリ
      データ
      メモリ
      EE
      ROM
      汎用
      IO
      AD
      変換
      コンパ
      レータ
      CCP
      PWM
      タイマ クロック クロック
      内臓
      635 1k 64 128 6   1   2 20 8
      675 1k 64 128 6 4 1   2 20 4
      683 2k 128 256 6 6 1 1 3 20 8

  2. 16F87/88

    1. 特徴

       現在のところ、16Fシリーズのすべての機能を搭載しています。内部クロックは4Mhz以外に8種から選択可能で、微調整も可能です。Timer1の消費電力が、従来の20μAから、1.8μAに減少しました。また、WDTの周期も設定可能になりました。これらは待機時の消費電力の現象に効果があります。

       IOポート、タイマー・PWM、シリアル、以外に10bitアナログ変換、アナログ比較が可能です。
      プログラムROMをプログラムで読み書き可能です。
      内部クロックの場合、周波数の微調整が可能です。
      多分、(現在の)ミドルレンジのすべての機能が詰まっています。

    2. 構成

      87と88の違いは AD変換機能の有無です。



    3. メモリ

       プログラムメモリは4K,データメモリは368、EEROMは256バイトです。

    4. SFRとプログラム

      1. コンフィグレーション

         2007Hと2008H番地にあり、プログラムでは設定できない構成を指定します。プログラムと同時に書き込みます。

        CP CCPMX DEBUG WRT1 WRT0 CPD LVP BOREN MCLRE FOSC2 PWRTEN WDTEN FOSC1 FOSC2

        CP、CPD:コードとデータを保護
        CCPMX:クロックの出力指定(CCP1)
        WRT1,0:プログラムによるROM書き込むからの保護
        MCLRE:4ピンはMCLRとして利用

                              IESO ECMEN

        IESO:
        ECMEN:クロックの監視をする

      2. アナログ変換

        ANSEL:9BH
          ANS6           ANS0

        外部端子を、アナログ入力とするか、ポートAとして利用するかを設定します。1でアナログ入力となります。

        ADCON0:1FH
        ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/^DONE    ADON

        ADCS2,0 は、ADCON1のADCS1ビットと共に、AD変換のクロックを指定します。
        CHS2,1,0 はアナログの入力を選択します。
         選択後、サンプルが終了するまで20μSは必要です
        GOを1にすると、変換を開始します。変換が終了するとこのビットが0になります。
        ADON: 変換機能を有効にします。0にすると変換機能をオフにするため、消費電力が抑制されます。

        ADCON0:9FH
        ADFM ADCS2 VCFG1 VCFG0        

        ADFM: 読みとりの形式を指定します。0の場合、左詰になりADRESHに先頭8ビット、ADRESLに残りの2ビットが入ります。
         1の場合右詰になり、ADRESLに下位8ビット、ADRESHに残りの2ビットが入ります。

        ADRESH:1EH
        AD9 AD8           AD2
        ADRESL:FEH
        AD1 AD0              

        AD変換の結果が入ります。ADFMが0のとき、ADRESHの先頭8ビットが入り、ADRESLに残りの2ビットが入ります。

      3. 変換の手順

        ANSELでアナログ入力として使用する端子を定めます。
        ADCS2,ADCS1,ADCS0で、アナログのクロックを定めます。クロックは1.6Mhz以下にします。クロック4MHzの場合、0,0,1 を設定します。

        倍率 ADCS2 ADCS1,0 最大クロック
        00 1.25
        00 2.5
        01 5
        16 01 10
        32 10 20
        64 10 20

        ADFMで読みとりフォーマットを定めます。8ビットで十分の場合、左詰を選択します。
        VCFG1,0で、アナログ参照電圧を定めます。0,0 にすると、最大VCC,最低がGNDになります。VREFでこの参照電圧を設定可能です。

        CSH2,0で入力チャンネルを定めます。
        設定後、入力電圧が確定するまで、20μ秒待ちます。
        GOビットを1にします。
        GOビットが0になるのを待ちます。
        ADRESH,L で結果を読みます。

        変換時間は、1ビット当たり1アナログクロックです。4Mhzクロックで利用する場合、0.5Mのクロックですから、20μ秒かかります。したがって、チャンネルを切り替えながら変換をすると、40μ秒が必要です。これに、プログラムでデータを読み出す時間が必要です。したがって、最大200K程度のサンプルが可能です。ただし、SRAMが256バイト程度しかありません。

  3. 16F87*:

    1. 877/874 :40ピンの大型PIC

       最大の特徴は入出力ピンの数で、ポートもAからEまで5ポートあります。ただし、A,Eポートは8ビット構成ではありません。16シリーズの機能はほとんど含まれていますが、あとから追加された、内臓クロック、EEROM書き込み機能、などは含まれていません。16F877Aでは含まれています。PWMやシリアル通信は2系統備えています。

       電源用端子VDDとグランド端子VSSは左右両側にあります。11/32ピンを共に電源+に、12/31ピンを電源ーに接続してください。片側でも動作しますが、双方を接続するほうが安定した電源を供給できます。

       (MicroChip社webページより)

    2. 16F876/873

      876/873は28ピン構成で、幅は18ピンのPICと同じです。ピン数が少ないので、ポートのD,E が省略され、ピンに3種の機能が割り当てられていますが、機能はほぼ同じです。ただし、AD入力のチャンネル数が少なく、パラレルスレーブ機能は省略されています。

      (MicroChip社webページより)

    3. メモリ

      877と874の違いはメモリのサイズです。877のプログラムメモリは8Kですが、874は4kです。データメモリも368と192も違いがあります。

  4. 12F629・675

    1. 特徴

       8ピンの中に、ポート、タイマ、アナログ変換機能が組み込まれています。シリアル通信機能や、CCP機能は組み込まれていません。プログラムもメモリ1Kですからコンパイラを利用すると、少し、きついかも知れません。また、データメモリのアドレスが少し変則的で、SFRはすべてバンク1に割り振られています。

    2. 12F629

       629はプログラムメモリが1k、データメモリ64、EEROM128バイトを内蔵しています。6ビットのポートと8,16ビットタイマー、アナログ比較機能があります。
       クロックは4MHzの発振回路を内臓し、最大20MHzのクロックで動作します。動作電圧は2Vかた5.5Vまでで、sleep 命令による低電力待機が可能です。

    3. 12F675

       675は629の機能に4ch、10bitのAD変換機能が内蔵されています。このため、ひとつのピンに最大5種の機能が割り当てられています。電源ピンが通常と逆なので要注意。

      端子 役割
      VDD 電源 2〜5V
      GP5/T1CK1/OSC1/CLKIN 汎用IO、Timer1クロック、発振子、外部クロック入力
      GP4/T1G/OSC2/CLKOUT 汎用IO、Timer1ゲート、発振子、クロック出力
      GP3/MCLR/VPP 汎用IO、マスタクリア(リセット)、プログラム時電源
      GP2/AN2/T0CKI/INT/COUT 汎用IO,アナログ入力、タイマー0クロック入力、
      外部割込み、
      GP1/AN1/CIN-/VREF/ICSPCLK 汎用IO,アナログ入力、コンパレータ入力、
      参照電圧、プログラム時電源クロック
      GP0/AN0/CIN+/ICSPDAT/ULPWU 汎用IO,アナログ入力、コンパレータ入力、
      プログラム時電源クロック、ローパワー覚醒入力
      VSS 電源 GND

    4. ポート処理

       ポートは GPIO レジスタの下位6ビットを利用しますが、アナログ関連機能のリセットが必要です。アナログ比較機能の初期設定のために CMCON を、アナログチャンネルの設定のためANSEL の設定が必要です。

        bcf   STATUS,RP0
        clrf   GPIO
        movlw  07h
        movwf  CMCON
        bsf    STATUS ,RP0
        clrf   ANSEL  ;12F675のみ
        movlw  0ch
        movwf  TRISIO

    5. 割り込

       GPIOを入力として使用する場合、状態変化で割り込むことができます。GP2 を単独の割り込み信号として利用することもできます。他に、タイマー、AD変換、EE書き込み、での割り込みも利用できます。

      INTCOM:
      GIE PEIE T0IE INTE GPIE T0IF INTF GPIF

    6. レジスタファイル

      SFRはすべて バンク1に割り振られtいます。

    7. 特徴的なレジスタ

       OSCCAL で内部発振(4MHz)を微調整することができます。100000 が中央値で、000000が最小、111111が最大になります。

      OSCCAL:90h
      CAL5 CLA4 CAL3 CLA2 CLA1 CLA0    

       コンフィグレーションで設定する PowerOnReset と BrownOutDetect を設定することができます。どちらも、0にすると設定します。

      PCON:8Eh
                  ^POR ^BOD

    8. C言語プログラム

       汎用IOはCCSCのC言語ではポートAとして利用します。

      #include <12F675.h>
      #fuses INTRC_IO,NOWDT,PUT,NOPROTECT,NOMCLR
      #use delay(clock = 8000000)
      //GP0,GP1 にLED接続
      //順に点灯、消灯
      
      void main()
      {
        while(1){
          output_low(PIN_A0);
          delay_ms(500);
          output_high(PIN_A0);
      
          output_low(PIN_A1);
          delay_ms(500);
          output_high(PIN_A1);
         }
      }

  5. 12F683

    1. 特徴

      12F675と同じ8ピン構成ですが、プログラムメモリが2Kに拡張され、CCP 機能が追加されています。データメモリでのSFRの番地も16Fシリーズと同様ですから、16Fシリーズでなれている場合、12F675より利用しやすいでしょう。

    2. ピン構成

      GP2端子は6重の機能が割り振られています。


      端子 役割
      VDD 電源 2〜5V
      GP5/T1CK1/OSC1/CLKIN 汎用IO、Timer1クロック、発振子、外部クロック入力
      GP4/T1G/OSC2/CLKOUT 汎用IO、Timer1ゲート、発振子、クロック出力
      GP3/MCLR/VPP 汎用IO、マスタクリア(リセット)、プログラム時電源
      GP2/AN2/T0CKI/INT/COUT/CCP1 汎用IO,アナログ入力、タイマー0クロック入力、
      外部割込み、コンパレータ1出力、キャプチャPWM
      GP1/AN1/CIN-/VREF/ICSPCLK 汎用IO,アナログ入力、コンパレータ入力、
      参照電圧、プログラム時電源クロック
      GP0/AN0/CIN+/ICSPDAT/ULPWU 汎用IO,アナログ入力、コンパレータ入力、
      プログラム時電源クロック、ローパワー覚醒入力
      VSS 電源 GND

    3. アドレス構成

       16Fシリーズと同様、バンク0の0-20h にSFRが割り当てられています。バンク0のRAMは96バイトで、残り32バイトはバンク1に振られています。12F629/675 とは異なりますから注意が必要です。

    4. プログラム書き込み

       IPIのPDE_XPライタ(V5.0)は12F683には対応していません。