...

PIC18F452の機能を理解する

by user

on
Category: Documents
3

views

Report

Comments

Transcript

PIC18F452の機能を理解する
[第
3 章]
高性能 16 ビット・コア・マイコンの全容
PIC18F452 の機能を理解する
今回メインで使用する 16 ビット・コアの PIC,PIC18F452 の機能を簡単に説明します.いろいろなモジ
ュールがぎっしり内蔵されていて,使いこなすのは大変ですが,すべての機能を使うということはなかな
かありません.最初のうちはどういう機能があるかということを一通り見ておいて,実際に使うときにPIC
のデータ・シートなどと併せて読み返してみるのがよいでしょう.
MCLR/VPP
1
40
RB7/PGD
RA0/AN0
2
39
RB6/PGC
RA1/AN1
3
38
RB5/PGM
RA2/AN2/ VREF -
4
37
RB4
RA3/AN3/ VREF +
5
36
RB3/CCP2
RA4/T0/CKI
6
35
RB2/INT2
RA5/AN4/SS/LVDIN
7
34
RB1/INT1
RE0/RD/AN5
8
33
RB0/INT0
RE1/WR/AN6
9
32
VDD
RE2/CS/AN7
10
31
VSS
VDD
11
30
RD7/PSP7
VSS
12
29
RD6/PSP6
OSC1/CLKI
13
28
RD5/PSP5
OSC2/CLKO/RA6
14
27
RD4/PSP4
RC0/T1OSO/T1CKI
15
26
RC7/RX/DT
RC1/T1OSI/CCP2
16
25
RC6/TX/CK
RC2/CCP1
17
24
RC5/SDO
RC3/SCK/SCL
18
23
RC4/SDI/SDA
RD0/PSP0
19
22
RD3/PSP3
RD1/PSP1
20
21
RD2/PSP2
図 3-1(1) PIC18F452 のピン・レイアウト
18F452 は 14 ビット・コアの 16F877 とピン・コンパチブルなため,差し替えて使える場合が
ある.ただし,プログラムはバイナリ・コード(HEXA ファイル)レベルでの互換性はない.
3-1 動作させるための基本部分
33
このアイコンは,章末に用語解説があります
● 概要
PIC18FXX2 は 1 ワードが 16 ビットの RISC 型
マイコン・チップです.PIC18F452 は,1 ワードが 14 ビ
ットの PIC16F877 と同じピン配列で,置き換えも可能です.ただし,ワード長が違う,内蔵モジュールや
レジスタ構成が拡張されているなどの理由のため,プログラムのバイナリ・コード
には互換性がありま
せん.プログラム・メモリのサイズはワード長換算で 16F877 の 2 倍あり,8 ビットのハードウェア乗算器
も内蔵しています(図 3-1).
ここでは,PIC18F452 を中心に主な機能を一通り説明します.
3-1 動作させるための基本部分
● 電源
動作可能な電源電圧は 2.0V ∼ 5.5V と広範囲です.電池で駆動させるのにも好都合です.ただし,電源電
圧を低くすると最高クロック周波数も低くなります.
通常,安定化した電源が必要ですが,安定化電源は三端子レギュレータICなどを用いて簡単に作れます.
● リセット
パワー・オン・リセット
_
(POR)回路が内蔵されているため,通常,リセット端子(MCLR )は 1 本の抵
抗器を通して(または直接)電源へ接続するだけで済みます.ただし,立ち上がりの遅い電源を使う場合は,
規定電圧に達してからリセットが解除されるように,図 3-2 のような遅延回路を付ける必要があります(あ
る程度の時間の遅延回路はパワーアップ・タイマとして内蔵されている).
また,ブラウン・アウト・リセット(BOR)回路が内蔵されていて,動作中に何らかの理由で電圧が異常
に下がった場合,自動的にリセットがかかります.これは,動作保証外の電圧で PIC の動作に異常が起き,
暴走するのを防ぐために役立ちます.この機能は,コンフィギュレーション・ワードにより使用の有無を
設定できます.
● ウォッチ・ドッグ・タイマ(WDT)
プログラムが暴走して正常に動作していない場合,これを検出しリセットをかけるための機構です.プ
ログラム中で規定時間以内の間隔でウォッチ・ドッグ・タイマ(WDT)をリセットする処理を入れておき,
PIC
D
R
R1
MCLR
C
R :40kΩ未満
R1:100Ω∼1kΩ
34
第 3 章 PIC18F452 の機能を理解する
図 3-2
外部パワー・オン・リセット回路
電源の立ち上がりが遅い場合に必要な外部リセット回路.電源
_
投入時に R と C の充電回路で MCLR 端子が“H”レベルに立ち上
がるのを遅延させる.ダイオードは電源が切れたときに速やか
にコンデンサを放電させるためのもの.
正常に動作している場合は WDT がタイムアップする前にリセットされるようにしておきます.異常が発
生して WDT にリセットがかからないと,WDT がタイムアップして PIC は強制的にリセットされます.
WDT 用のクロックは独立した RC 発振器から供給されるため,システム・クロックが停止していても,
WDT は働きます.また,18FXX2 は一部を除く 16 シリーズと違って,WDT 専用のポストスケーラをもっ
ています.
WDT のタイムアップ時間は WDT 用ポストスケーラの設定値で指定できますが,これはコンフィギュレ
ーション・ワードで設定します.また,WDT の使用の有無は,コンフィギュレーション・ワードまたは
WDTCON レジスタで設定できます.
● クロック
発振回路が内蔵されていて,発振タイプが XT,HS などのときはクロック端子(OSC1,OSC2)にクリス
タル(水晶発振子)またはレゾネータ(セラミック発振子)とコンデンサを接続するだけで動作します.
接続できる発振子
の周波数は最高 40MHz です.また,内蔵の PLL(Phase Locked Loop)を有効にす
ると,PIC 内部で周波数が 4 倍になります.ただし,この場合に接続できる発振子は最大 10MHz となり,
このときのシステム・クロックは 40MHz になります.PIC の最高クロック周波数は電波の領域ですが,外
部発振子の周波数を低くできると周辺への EMI(Electromagnetic Interference :電磁波障害)の軽減が望
めます.
クロック・タイプが EC の場合,クロック・ピン(OSC1)にクロック信号を直接入力することができます.
高精度クロック・モジュールをここに接続すると正確な時計が作れます.また,OSC2/CLIO/RA6 ピンか
らは,OSC1 に入力されたクロックの 1/4 の周波数のクロックを取り出すことができます.なお,ECIO タ
イプに設定すると,OSC2/CLIO/RA6 ピンは汎用の入出力ポートRA6 として使用できます(表3-1,図3-3).
PIC を低速で動作させると消費電力が小さくなるため,作るものによってはあえてクロック周波数を低
くする場合もあります.
18FXX2 は本クロック(プライマリ・クロック)とは別にセカンダリ・クロックを用意して,切り替えて
使うこともできます.これは待機中にクロック周波数を低くして,消費電力を抑えるのに有効です.
● パワーダウン(スリープ)モード
PIC にはパワーダウン・モードといって,PIC を休止(スリープ)状態にする機能があります.このモー
ドのときはクロックが停止し,消費電力は極端に少なくなります.この状態は,次のイベントで解除され
ます.
_
◆ MCLR 端子が“L”に設定されて,PIC にリセットがかかったととき
◆
ウォッチ・ドッグ・タイマがタイムアップしたとき
◆
次のいずれかの割り込みが発生したとき
s
外部割り込み(INT0,INT1,INT2)
s
RB 状態変化割り込み
s
ペリフェラル割り込み(CCP 割り込み,A-D 変換完了割り込みなど)
※TMR0 オーバフロー割り込みなど,一部の割り込みはスリープ・モードを解除するイベント
にはなりません.また,設定状況によっては解除条件にならない割り込み要因もあります.
3-1 動作させるための基本部分
35
表 3-1
発振タイプ
18F452 の発振タイプと OSC2/CLKO/RA6 ピン(14)の用途の一覧表.RCIO または ECIO タイプのときは同ピンは汎用 I/O ポー
ト RA6 として使用できる.発振タイプはコンフィギュレーション・ビットで設定する.
発振タイプ
LP
OSC2/CLKO/RA6ピン
ローパワー・クリスタル(200kHz以下)
OSC2
XT
クリスタル/レゾネータ(4MHz以下)
OSC2
HS
ハイスピード・クリスタル/レゾネータ
OSC2
HS+PLL
ハイスピード・クリスタル/レゾネータ PLL使用(4倍)
OSC2
RC
RC発振
CLKO
(クロック周波数/4 出力)
RCIO
RC発振(I/O)
RA(汎用I/O)
6
EC
外部クロック
CLKO
(クロック周波数/4 出力)
ECIO
外部クロック(I/O)
RA(汎用I/O)
6
発振子による発振
PIC
クリスタル,レゾネータ
OSC1
OSC2 /CLKO/RA6
(a) LP,XT,HS,HS+PLL発振
RC による発振
PIC
PIC
OSC1
OSC1
OSC2 / CLKO /RA6
OSC2 /CLKO/ RA6
汎用I/Oポート
RA6
発振周波数の
1/4のクロック出力
(b) RC 発振
(c) RCIO発振
PIC
外部発振
外部発振器
(オシレータ)
OSC1
PIC
外部発振器
(オシレータ)
OSC1
OSC2 / CLKO /RA6
発振周波数の
1/4のクロック出力
(d) EC発振
図 3-3
OSC2 /CLKO/ RA6
汎用I/Oポート
RA6
(e) ECIO発振
クロック発振タイプ
18F452 で使えるクロック発振タイプ.このタイプはコンフィギュレーション・ビットで設定する.
36
第 3 章 PIC18F452 の機能を理解する
3-2 メモリ空間
● プログラム・メモリ(ROM)
プログラムを格納する EEPROM(フラッシュ ROM)です.18F452 には 32K バイト実装されていますが,
18F452 は 1 ワード(マシン・コードでの命令の最小ビット幅)が 16 ビットなので,16K ワードということに
なります.ワード数で単純に比べると,16F877 の 2 倍の容量となります.
この領域は通常は読み出し専用で書き換えることはありませんが,デバッガなどの特殊な用途ではプロ
グラムから書き換えられることもあります.
● データ RAM
変数などを格納する書き換え可能なメモリです.この領域のことを PIC では GENERAL PURPOSE
REGISTER FILE(汎用レジスタ・ファイル)と呼びます.RAM 領域は最大 256 バイトのバンクが複数集
まったものになっていて,変数をアクセスする場合は,バンクを切り替えながらアクセスしなければなり
ません.
しかし,C 言語を使う場合は連続で大きな領域を使う場合以外,とくに意識する必要はありません.
● スペシャル・ファンクション・レジスタ(SFR)
内蔵モジュールや PIC の動作などを設定するレジスタ類を,PIC では SPECIAL FUNCTION REGISTER(SFR)と呼びます.このレジスタはデータ RAM と同じメモリ空間にマッピングされていて,データ
RAM と同じように読み書きができます.アドレスが違うだけと考えてください.こちらも,データ RAM
と交互にアクセスする場合などはバンク切り替えが必要な場合がありますが,C 言語を使う場合は意識す
る必要はありません.
本書で単にレジスタという場合は,この SPECIAL FUNCTION REGISTER(SFR)のことを指します
(図 3-4).
● コンフィギュレーション・ワード(コンフィギュレーション・レジスタ)
個別にはコンフィギュレーション・ビットと呼ばれます.
PLL の使用可否や LVP(低電圧プログラム)モードの使用の有無,コピー・プロテクトの設定やクロック
の発振タイプなど,PIC が動作する前に決まっていなければならない設定が書き込まれます.コンフィギ
ュレーション・ワードは,PIC プログラマでプログラムを書き込む際にプログラムと同時に書き込まれ,
PIC が動作しているときには通常の方法では書き換えはできません.主なビットの説明は Appendix E を
参照してください.
● データ EEPROM
書き換えができる不揮発性(電源を切ってもデータが保持される)メモリが内蔵されています.ある手順
で書き込みできる状態に設定して,対象アドレスを指定し,そこに 1 バイトのデータを書き込むというよ
うな操作が必要です.これはプログラムが暴走したときに,誤って EEPROM のデータが書き換えられな
いようにするためです.C コンパイラにはライブラリ関数として,読み書きのための関数が用意されてい
3-2 メモリ空間
37
ることが多いため,それを使えばこの手順は意識する必要はありません.
読み書きは普通のメモリ・アクセスとは違い,アドレスを指定し,そこから 1 バイトずつデータを取り
出す,またはデータを書き込むというようなアクセス方法をとります.
● ハードウェア乗算器
18FXX2シリーズには,16シリーズにはないハードウェア乗算器が内蔵されています.これは8ビット×
8 ビットの乗算器で,符号なしの場合の乗算は 1 命令サイクルで実行できます.ソフトウェアで実行する場
合は 69 命令サイクル必要ということなので,いかに高速で演算できるかがわかります.
FED WIZ-C で展開されたアセンブリ・コードをちょっと調べてみたところ,ちゃんと掛け算命令に展
開されていて,ハードウェア乗算器が使われていました.8 ビットより大きいビット数の演算は,ソフト
ウェアとの組み合わせになりますが,すべてソフトウェアで実行するよりも高速で演算できます.
アドレス
FFFh
FFEh
FFDh
FFCh
FFBh
FFAh
FF9h
FF8h
FF7h
FF6h
FF5h
FF4h
FF3h
FF2h
FF1h
FF0h
FEFh
FEEh
FEDh
FECh
FEBh
FEAh
FE9h
FE8h
FE7h
FE6h
FE5h
FE4h
FE3h
FE2h
FE1h
FE0h
レジスタ名
TOSU
TOSH
TOSL
STKPTR
PCLATU
PCLATH
PCL
TBLPTRU
TBLPTRH
TBLPTRL
TABLAT
PRODH
PRODL
INTCON
INTCON2
INTCON3
INDF0
POSTINC0
POSTDEC0
PREINC0
PLUSW0
FSR0H
FSR0L
WREG
INDF1
POSTINC1
POSTDEC1
PREINC1
PLUSW1
FSR1H
FSR1L
BSR
アドレス レジスタ名
FDFh
INDF2
FDEh POSTINC2
FDDh POSTDEC2
FDCh
PREINC2
FDBh
PLUSW2
FDAh
FSR2H
FD9h
FSR2L
FD8h
STATUS
FD7h
TMR0H
FD6h
TMR0L
FD5h
T0CON
FD4h
―
FD3h
OSCCON
FD2h
LVDCON
FD1h
WDTCON
FD0h
RCON
FCFh
TMR1H
FCEh
TMR1L
FCDh
T1CON
FCCh
TMR2
FCBh
PR2
FCAh
T2CON
FC9h
SSPBUF
FC8h
SSPADD
FC7h
SSPSTAT
FC6h
SSPCON1
FC5h
SSPCON2
FC4h
ADRESH
FC3h
ADRESL
FC2h
ADCON0
FC1h
ADCON1
FC0h
−
アドレス レジスタ名
FBFh
CCPR1H
FBEh
CCPR1L
FBDh
CCP1CON
FBCh
CCPR2H
FBBh
CCPR2L
FBAh
CCP2CON
FB9h
−
FB8h
−
FB7h
−
FB6h
−
FB5h
−
FB4h
−
FB3h
TMR3H
FB2h
TMR3L
FB1h
T3CON
FB0h
−
FAFh
SPBRG
FAEh
RCREG
FADh
TXREG
FACh
TXSTA
FABh
RCSTA
FAAh
−
FA9h
EEADR
FA8h
EEDATA
FA7h
EECON2
FA6h
EECON1
FA5h
−
FA4h
−
FA3h
−
FA2h
IPR2
FA1h
PIR2
FA0h
PIE2
アドレス レジスタ名
F9Fh
IPR1
F9Eh
PIR1
F9Dh
PIE1
F9Ch
−
F9Bh
−
F9Ah
−
F99h
−
F98h
−
F97h
−
F96h
TRISE
F95h
TRISD
F94h
TRISC
F93h
TRISB
F92h
TRISA
F91h
−
F90h
−
F8Fh
−
F8Eh
−
F8Dh
LATE
F8Ch
LATD
F8Bh
LATC
F8Ah
LATB
F89h
LATA
F88h
−
F87h
−
F86h
−
F85h
−
F84h
PORTE
F83h
PORTD
F82h
PORTC
F81h
PORTB
F80h
PORTA
図 3-4(1) スペシャル・ファンクション・レジスタ一覧
PIC18F452の全レジスタの一覧.CPUやペリフェラルの機能などを設定するためのもの.
16 シリーズと違い,上位アドレス(F80h ∼ FFFh)へマッピングされているが,設定によ
っては下位アドレス(080h ∼ 0FFh)へマッピングすることもできる.アドレスについて
は,C 言語を使う場合は意識する必要はない.
38
第 3 章 PIC18F452 の機能を理解する
Fly UP