PIC (コントローラ)
出典: フリー百科事典『ウィキペディア(Wikipedia)』
PIC(ピック)とは、Peripheral Interface Controllerの略称であり、マイクロチップ・テクノロジー社(Microchip Technology Inc.)が製造しているマイクロコントローラ(制御用IC)製品群の総称である。コンピュータの周辺機器接続の制御用として1980年代にゼネラル・インスツルメント(General Instruments Corporation)社により開発された。後にPICの事業部門が独立してマイクロチップ社となり現在に至る。
PICにはCPU、メモリ(RAM、ROM)、I/Oなどが1チップに収められており、ROMに書き込まれたプログラムにより制御される。回路構成が簡単であり、安価なので電子工作を行う人の間で人気がある。
目次 |
[編集] 特徴
RISCライクに命令数を抑えた構造になっているほか、コードエリアとデータエリアが分離されたハーバード・アーキテクチャになっているのが特徴。「ビットコア」とはコードメモリの1命令のビット数をさす。
パッケージは主に長方形のDIPタイプで、さらに小型の表面実装タイプのものもある。ピン数の少ない製品が多く、下は6ピンのものから存在する。汎用パラレルポートのほか、タイマやA/Dコンバータなどを内蔵するもの、動作用のクロック回路を内蔵するもの、プログラムコード用にフラッシュROMを備えたものもある。なお、バスは一切出力されていない。シリアルコントローラ (USART, IIC) を内蔵している品種もある。
LEDを直接光らせることができる。(1ピン25mA程度まで) ただし1ポート当たりの出力は制限されている。(1ポート100mA程度まで)
開発環境は、MPLABというアセンブリ言語ベースの統合開発環境がメーカーから無償で配布されているほか、C言語コンパイラも何種類か発売されている。
日本では、電子工作雑誌で紹介されたり、秋葉原などにある電子パーツ店ではライタなどのキットが販売されている。PICチップやライタ、開発環境が入手しやすいため普及した。
PICは電子部品を扱う複数の会社がキットで提供しているため、電子工作でよく使われている。秋葉原では最も基本的なモデルである16F84と、I/Oピンと機能が多くプログラムメモリもかなり広い16F877が大量に安価で出回っており、ほとんどの回路ではこれが利用される。今まで専用のLSIやICなどで構成されていた回路をPICに置き換えている電子工作キットなどもある。 また、プレイステーションなどをはじめとした各種ゲーム機を信号的に騙し、コピーガードやリージョンチェックを回避するチップ(通称MODチップ)に利用されたこともある(不正競争防止法の改正により現在の日本では違法)。
[編集] 機能
すべてのPICに入っている機能(*は無いものもある)
- 発振回路(入っていないコンピュータは絶対無い)
- リセット(プログラムの最初に戻ること)
- RESET端子によるもの
- WDT*によるもの
- 割り込み
- 外部割込み
- ピン変化*
- INTピン
- 内部割込み
- AD変換完了*
- EEPROMにライト完了*
- タイマのオーバーフロー(あふれること)
- 外部割込み
- スリープ(寝る)
すべてには入っていない機能
- CCP(キャプチャ、コンペア、PWM)
- PWM(出力電圧をデューティで制御する。モーターのスピードコントロールに使われる。)
- キャプチャ
- コンペア
- タイマー(カウントアップ)
- AD変換(アナログ->デジタル変換)
- コンパレータ(比較)
- シリアル通信
- USB(18Fシリーズの一部だけ)
- SPI(シリアル・ペリフェラル・インタフェース)
- I2C
- USART
- パラレル通信
- ウォッチドッグタイマ・WDT(番犬タイマ)
- JTAGプログラミング(24FとdsPIC33Fシリーズのみ)
[編集] PICの種類
[編集] データメモリ8ビット
12、14ビットコアのシリーズは下記のような独特な特徴を持つ。
- 一定サイズ以上のプログラムはページ切り替えを必要とする
- 定数テーブルは作れないので値を返すリターン命令で代用する
- 汎用レジスタが一つしかない代わりにデータメモリを「ファイルレジスタ」として使用できる
- 分岐にはスキップ命令を組み合わせる
- スタックが8(12ビットコアでは2)段階に抑えられている、など
16ビットコアのシリーズはアーキテクチャが高級言語向きになるなど、より汎用マイコンらしく拡張されている。
- ベースラインシリーズ(命令12ビット長コア)
- PIC10系
- 10F200
- 10F202
- 10F204
- 10F206
- 10F220
- 10F222
- PIC12系
- 12F509
- 12F629 クロック内蔵の8PinのPIC。
- 12F675 A/Dコンバータを搭載。
- 12F683 CCPを搭載・内部クロック8MHz
- PIC10系
- ミッドレンジシリーズ(命令14ビット長コア)
- PIC16系
- 16F84A PIC入門用として最適。本もたくさん出版されている。ただ、付加機能が少なく昔からあるチップのため少々高価
- 16F648A 16F84Aに付随機能を付けたタイプ、内蔵クロックを搭載したため外付けクロック不要で実験できるため扱いやすい、CCP・SPI・USARTを搭載。
- 16F88 18PinのPICでは最強と言われている、A/Dコンバータ搭載、内蔵クロック8MHz搭載
- 16F877A 機能が豊富。プログラムメモリも8Kで、大容量。使いやすい。
- PIC16系
- ハイエンドシリーズ(命令16ビット長コア)
- PIC18系
[編集] データメモリ16ビット
[編集] PIC互換
- SCENIX SXシリーズ - SCENIX(現在はUbicom)のCPUで、ミップス・テクノロジーズをスピンオフしたチームが開発した。PICとバイナリ互換で命令を4倍速にし、さらに50MHzや75MHzと高クロック化されている。PIC12相当のものとPIC16相当のものがある。
[編集] 使用可能なC言語コンパイラ
- CCS PIC C Compiler
- 対象となるPICの種類(ビット数)および開発環境のオペレーティングシステムにより製品が分かれている。初期のバージョンは専用のIDEが付属していたが、最近のバージョンではMPLABに統合して使用するようになっている。
- HI-TECH PIC C Compiler