PIC (コントローラ)
PIC(ピック)とは、Peripheral Interface Controller(ペリフェラル インターフェイス コントローラ)の略称であり、マイクロチップ・テクノロジー社(Microchip Technology Inc.)が製造しているマイクロコントローラ(制御用IC)製品群の総称である。コンピュータの周辺機器接続の制御用として1975年にゼネラル・インスツルメント(General Instrument Corporation)社により開発された。1985年にPICの事業部門が独立してマイクロチップ社となり現在に至る。
PICにはCPU、メモリ(RAM、ROM)、I/Oなどが1チップに収められており、ROMに書き込まれたプログラムにより制御される。回路構成が容易かつ安価で、インターネット上で情報を得やすく、電子工作愛好家の間で人気がある。
目次
特徴
命令語長を揃え命令数を抑えたRISCライクな構造になっているほか、コードエリアとデータエリアが分離されたハーバード・アーキテクチャになっているのが特徴。「ビットコア」とはコードメモリの1命令のビット数をさす。
パッケージは主に長方形のDIPタイプで、小型の表面実装タイプのものもある。ピン数のバリエーションも豊富で、下は6ピンのものから存在する。汎用パラレルポートのほか、タイマやA/Dコンバータなどを内蔵するもの、動作用のクロック回路を内蔵するもの、プログラムコード用にフラッシュROMを備えたものもある。なお、バスは一切出力されていない。シリアルコントローラ (USART, IIC) やUSBコントローラを内蔵している製品もある。
汎用パラレルポートには1ピンあたり25mAまで流せる出力回路が採用されており、LED等を直接駆動することができる。ただし1ポート及び1素子当たりの合計の出力電流には制限がある。
開発環境は、MPLABというアセンブリ言語ベースの統合開発環境がメーカーから無償で配布されているほか、C言語コンパイラも何種類か発売されている。
日本では、電子工作雑誌で紹介されたり、秋葉原などにある電子パーツ店ではライタなどのキットが販売されている。PICチップやライタ、開発環境が入手しやすいため普及した。
PICは電子部品を扱う複数の会社がキットで提供しているため、電子工作でよく使われている。テンプレート:要出典範囲今まで専用のLSIやICなどで構成されていた回路をPICに置き換えている電子工作キットなどもある。
機能
すべてのPICに搭載されている機能(*の付いた副機能のみ非搭載機種もある)
- 発振回路
- リセット(プログラムの先頭に戻る)
- RESET端子によるもの
- ウォッチドッグタイマ(WDT)*によるもの
- 割り込み
- 外部割込み
- ピン変化*
- I NTピン
- 内部割込み
- AD変換完了*
- EEPROMにライト完了*
- タイマのオーバーフロー(桁あふれ)
- 外部割込み
- スリープ(動作を停止し低消費電力となる)
一部機種に搭載されている機能
- CCP機能(キャプチャ、コンペア、PWMの頭文字)
- キャプチャ
- コンペア
- PWM(オンとオフの割合でモーターの速度制御やLEDの明るさ制御ができる)
- タイマー(カウントアップ)
- AD変換(アナログ->デジタル変換)
- DA変換(デジタル->アナログ変換)
- コンパレータ(比較)
- シリアル通信
- パラレル通信
- ウォッチドッグタイマ(WDT) フリーズ・暴走を回避する為の監視タイマ
- JTAGプログラミング(24FとdsPIC33Fシリーズのみ)
- USB On-The-Go機能
PICの種類
データメモリ8ビット
12、14ビットコアのシリーズは下記のような独特な特徴を持つ。
- 一定サイズ以上のプログラムはページ切り替えを必要とする
- 定数テーブルは作れないので値を返すリターン命令で代用する
- 汎用レジスタが一つしかない代わりにデータメモリを「ファイルレジスタ」として使用できる
- 分岐には内部でスキップ命令を組み合わせる
- スタックが8(12ビットコアでは2)段階に抑えられている、など
16ビットコアのシリーズはアーキテクチャが高級言語向きになるなど、より汎用マイコンらしく拡張されている。
- ベースラインシリーズ(命令12ビット長コア)
- PIC10系 このシリーズは8PinのDIPか米粒サイズの表面実装
- 10F200
- 10F202
- 10F204
- 10F206
- 10F220
- 10F222
- PIC12系
- 12F509
- PIC10系 このシリーズは8PinのDIPか米粒サイズの表面実装
- ミッドレンジシリーズ(命令14ビット長コア)
- PIC12系
- 12F629 発振回路(4MHz)を内蔵し単独動作可能な8PinのPIC
- 12F675 12F629にA/Dコンバータを追加
- 12F683 CCPを搭載・内部クロックが8MHz
- PIC16系
- 16F84A 多数のPIC入門書で取り上げられた定番機種
- 16F648A 16F84Aに多彩な機能を追加搭載、発振回路(4MHz)内蔵したため単独動作で実験できるため扱いやすい、CCP・USARTを搭載
- 16F88 18PinのPICでは最も多機能な機種、A/Dコンバータ搭載、内蔵クロック8MHz搭載
- 16F877A 40pinとI/Oの数も多く機能も16F88以上、プログラムメモリも8Kワードで大容量
- 16F887 16F877Aの改良版。発振回路を内蔵し、A/Dコンバータのピン数が増えている。
- 16F876A 16F877Aの28pin版
- 16F886 16F887の28pin版
- PIC12系
- Enhancedミッドレンジシリーズ(命令14ビット長コア)
- PIC12系
- PIC16系
- PIC16F19xx
- ハイエンドシリーズ(命令16ビット長コア)
データメモリ16ビット
- PIC24 このシリーズにはプログラムメモリ256KB、RAM32KBといった大容量なものもある
- PIC24F系 最大16MIPS
- PIC24H系 最大40MIPS
- PIC24E系 最大70MIPS
- dsPIC 命令24ビット長・データ長16ビットのCPUコアと、DSPを内蔵
- dsPIC30F系 最大30MIPS
- dsPIC33F系 最大40MIPS
- dsPIC33E系 最大70MIPS
データメモリ32ビット
- PIC32 このシリーズにはMIPS 32-bit M4Kコアを内蔵。
PIC互換
- SCENIX SXシリーズ - SCENIX(現在はUbicom)のCPUで、ミップス・テクノロジーズをスピンオフしたチームが開発した。PICとバイナリ互換で命令を4倍速にし、さらに50MHzや75MHzと高クロック化されている。PIC12相当のものとPIC16相当のものがある。
使用可能なC言語コンパイラ
- MPLAB C Compiler
- PIC18、PIC24、PIC32、及びdsPICに対応(一般にC18、C24、C32と呼ばれる)。ベースラインシリーズ(PIC10)及びミッドレンジシリーズ(PIC12,PIC16)には対応していない。MPLABに統合して使用される。マイクロチップ・テクノロジー社が公開しているライブラリやサンプルコードをそのまま利用できる利点がある。全機能が利用できる有償版と、最適化機能が制限された評価版(最初の60日間は全機能が利用できる)、無償で全機能が利用できる学習用のアカデミック版がある。
- CCS PIC C Compiler
- 対象となるPICの種類(ビット数)および開発環境のオペレーティングシステムにより製品が分かれている。初期のバージョンは専用のIDEが付属していたが、最近のバージョンではMPLABに統合して使用するようになっている。
- HI-TECH PIC C Compiler
- mikroElektronika mikroC for PIC
- SDカードやキャラクタLCDを含む多くのライブラリが標準でついている。独自のIDEになっている。対応するシリーズは12,16,18シリーズのほぼ全て。PIC24やdsPICシリーズは別製品になっている。無償バージョンでは出力が2Kワードに制限されるが、その範囲内であれば有償版と同じライブラリがつかえる。また、Basic版とPascal版も販売されている。HI-TECHのコンパイラと違い、include文が不要だったり、大文字と小文字は区別しないなどの違いがある。
- SDCC (Small Device C Compiler)
- 小型デバイス向けのフリーのCコンパイラ。PICを含む複数のデバイスに対応しており、マルチプラットフォームで動作する。