コンフィグレーション設定の残りの項目を説明します。
今回の説明
PICマイコン電子工作入門の基礎編は、次のステップで説明しています。
この記事の説明は「❸ プログラムを作る」のうち、「PICマイコンのコンフィグレーション設定」を説明します。
- LEDを電池と抵抗のみで光らせる回路を組み立てる
PICマイコンの回路を組み立てる前に、ブレッドボードの取り扱いに慣れておくことにします。電池、抵抗、LEDのみを使って、ブレッドボード上に回路を組み立ててLEDを光らせてみます。ここでは電池、抵抗、発光ダイオードの回路記号と回路図の説明をして、回路図からブレッドボードに組む方法を説明します。まずはブレッドボードに慣れましょう! - PICマイコンのベース回路を組む
PICマイコンのはじめの一歩の回路は、LEDを1秒に1回光らせるだけの回路です。
この回路をブレッドボードに組み立てます。 - プログラムを作る ⬅︎ 今回
LEDを1秒に1回光らせるプログラムを作成します。 - PICマイコンに書き込んで動作させる
作成したプログラムをPICマイコンに書き込んで動作させてみます。 - ベース回路にスイッチを追加
LEDの点滅をスイッチで開始させるために、ベース回路にスイッチを追加します。
これまではLEDを光らせる、という出力制御をしましたが、今度はPICマイコンで外部からスイッチの信号を入力する方法を習得します。 - ベース回路にブザーを追加
スタートスイッチ付きの、1秒に1回光らせる回路を作りましたので、ブザーを追加してタイマーとして完成させます。
今回説明するコンフィグレーション設定項目
前回の記事では、PICマイコンのクロック信号の設定FOSCについて詳しく説明しました。
今回の記事では、残りの設定項目について説明します。
- WDTE
- PWRTE
- MLCRE
- CP・CPD
- BOREN
- IESO
- FCMEN
- CLKOUTEN
- WRT
- PLLEN
- STVREN
- BORV
- LVP
WDTE(ウォッチドッグタイマー)
「Watch Dog Timer Enable」の略です。
WDTEの機能
ウォッチドッグタイマーとはPICマイコン特有の機能ではなく、他のマイコンでも一般的に用いられている機能です。
ウォッチドッグタイマーの「ウォッチドッグ」とは日本語に訳すと「番犬」という意味になります。
実際にこの機能は番犬のような役割を果たしているのでこのように呼ばれるようになったようです。でも「なんで番犬?」という感じだと思いますので、そもそもウォッチドッグタイマーとは何かを説明します。
PICマイコンを使って何か作る、ということは、PICマイコンに直接スイッチやセンサ、モーターや液晶ディスプレイなど様々な部品をつなげることになります。
いろいろな入力、出力を制御する場合、入出力信号の状況によってはかなり複雑な処理となり、タイミングなどの問題で予期していなかった状態になって、結果、プログラムがフリーズしてしまうことがあるかもしれません。
そのような時は、手っ取り早い解決策としては、PICマイコンをリセットしてしまうことです。
まぁ、手っ取り早い、というのはちょっと乱暴ですが、作ったものによっては、フリーズしたら清くリセットしてしまった方がよいケースもあるかもしれません。
ウォッチドッグタイマーはこのような時に用いられます。
動作としては、PICマイコンのプログラムのバグったら、自分自身を自動的にリセットする、というものです。
このウォッチドッグタイマーの設定をONにすると、この機能が発動します。
でもPICマイコンはプログラムがバグったことをどうやって検知するのでしょうか?
PICマイコンはプログラムに従って動くわけですので、プログラムがバグったら自分自身が動作不良に陥っているわけですから、そもそもプログラム自身が「バグった」という正しい判断はできないですよね。
例えば、酔った人が「俺は酔ってない!」なんて言うのをたまに聞きますが、酔った本人は正常な判断ができなくなっているので「俺は酔ってない!」というのは正しい判断ではないという現象に似ているわけです。(ちょっと例えになってないですかね…)
もう少し具体的な例で、プログラムがバグったことを検知する方法を考えてみたいと思います。
例えば、LEDを永遠と点滅させるプログラムを書いた場合、ず〜っと同じ動作をします。これは正しい動作です。ということは、ず〜っと同じ動作を繰り返していて怪しいからリセットする、というのはよくないですよね。
でも、もしかしたら他のケースでは、LEDが永遠点滅を繰り返す、というのは実はプログラムがバグってしてしまっている結果かもしれません。
つまり、LEDが点滅を続けているからといって一概にバグっているとは判断できません。
他にもいろいろなケースを考えてみると、どのような動作が正常で、どのような動作が異常なのかを判定するのは不可能です。
そこで、マイコンでは、次のようにこの問題を解決しています。
PICマイコンの内部には、プログラムとは別に、独立して動作する「ウォッチドッグタイマー」というハードウエアモジュールが組み込まれています。
この「ウォッチドッグタイマー」というハードウェアモジュールは、プログラムの動作を監視します。
この監視役であるウォッチドックタイマーが、プログラムの動作がバグったとき、PICマイコンを強制的にリセットします。
次に、「ウォッチドッグタイマー」は何を持ってプログラムの動作がバグったと判断しているのか、その仕組みを見ていきましょう。
まずはイメージで説明します。
最初に、ウォッチドッグ(番犬)に餌を与える時間間隔を決めておきます。例えば12時間に1回餌を与える、というように決めておきます。
次にマイコンのプログラム動作を開始します。
プログラムは自分のプログラム実行中に、必ず12時間以内の間隔で番犬に餌を与えるように、プログラム中に餌を与える命令を書いておきます。(上限が12時間なので、餌を与える間隔はそれより短ければOKです)。
このようにしておくと、もしプログラムがバグって番犬に餌を与える命令が実行されない場合、その時間が12時間を超えると、番犬はPICマイコンを強制リセットします。
このように、何かゲームのような感じでプログラムのフリーズ検知、リセットを行います。
それでは実際にマイコンではどのように実現しているか確認していきましょう!
ウォッチドッグタイマーを有効にするには、このコンフィグレーション設定ONにします。
この状態でPICマイコンが動作を開始すると、プログラムを動作させるハードウエアとは独立したハードウエアでウォッチドッグタイマーが動作を始めます。
電源投入直後はウォッチドッグタイマーのカウント値はゼロです。ウォッチドッグタイマーの処理内容ですが、一定の時間毎にカウント値を+1していきます。このカウンタが125になるとPICマイコンにリセット信号が出てリセットされるようになっています。
このように、プログラムがウォッチドッグタイマーのカウントをゼロに戻さないと(番犬に餌を与えないと)、ウォッチドックタイマーがカウンタを+1し続け、遅かれ早かれPICマイコンがリセットされてしまいます。
これを避けるには、プログラムは定期的に設定時間内にウォッチドッグタイマーのカウントをゼロにすればよいわけです。
マイコンにはウォッチドッグタイマーのカウントをゼロにする命令が用意されています。つまりプログラムは、ウォッチドッグタイマーが125を数える前に、カウンターをゼロにする必要があるわけです。
なお、ウォッチドッグタイマーが125を数える時間、つまりカウンタを+1する時間は指定することができて、設定はプログラムの始めに行います。時間の設定はこのWDTEで設定するわけではない点に注意してください。
デフォルトの状態では、+1する時間は約32.258マイクロ秒です。(31kHzの信号を使用しています)
これを125カウントすると、つまり約4.03ミリ秒でカウントアップしてしまいます。ただし、このカウンタを+1する時間は最大32,768倍まで設定できるので、125カウントする最大の時間は約132秒となります。最大に設定した場合、動作プログラムは最大で132秒に1回ウォッチドッグタイマーにカウンタリセット命令を出せばよい、ということになります。
プログラムのどこかでフリーズしてしまったとき、だいたいのケースで何かの命令を永遠に繰り返すことになります。このとき、その永遠繰り返す命令の中にウォッチドッグタイマーのカウンタリセット命令がないと、ウォッチドッグタイマーは125までカウントしてしまい、PICマイコンにリセットがかかる、という仕組みになります。
ところで、そもそもウォッチドッグタイマー自身がフリーズしてしまうことはないのか気になっちゃいますよね。ウォッチドッグタイマーはプログラムではなくハードウエアで構成されていて、プログラム的にフリーズをすることはありません。
プログラムはプログラム自身にバグがあるとフリーズすることがありますが、ウォッチドッグタイマーはプログラム的なフリーズはしないようになっています。
WDTEの設定値
WDTEは次の設定ができます。
設定値 | 設定内容 |
---|---|
OFF | ウォッチドッグタイマーを無効にします。 |
NSLEEP | プログラム実行中はウォッチドッグタイマーを有効にして、マイコンがスリープ中は無効にします。 |
SWDTEN | ウォッチドッグタイマーの有効/無効をソフトウエアで制御します。 |
ウォッチドッグタイマーをOFFにする場合は、次のように記述します。
#pragme config WDTE = OFF
この基礎編ではウォッチドッグタイマーは必要性は低いためOFFにしています。もしご興味があれば、この入門のプログラムでWTDEをONにして、ウォッチドッグタイマーがリセットを出さないようにプログラムを変更してみる、というのもいいかもしれませんね。
補足ですが、ウォッチドッグタイマーにはもうひとつ使い方があります。
PICマイコンは電池で動作する電子機器に使われることが多いので、電池を長持ちさせる工夫が必要です。そのために、例えば動作が必要ないときはスリープモードに移行する、ということができます(プログラムで制御します)。
PICマイコンがスリープモードの時にウォッチドッグタイマーがカウントアップすると、PICマイコンのリセットではなく、ウエイクアップ動作(通常動作状態に戻す動作)となります。スリープモードを使用しながら何か定期的な処理をするときに、ウォッチドッグタイマーを利用する、ということもできます。
PWRTE(パワーアップタイマー)
「Power-up Timer Enable」の略です。
PWRTEの機能
PICマイコンを含む電子回路に電源をつなぎ、スイッチをONすると、当然動き出しますよね。
実は、スイッチを入れた瞬間を詳しく観察すると、非常に短い時間ですが、電源は不安定な状態になっています。
この状態でPICマイコンが動き出してしまうと、電子回路によっては誤動作する可能性もあります。
パワーアップタイマーはそのような状況に対する設定です。
パワーアップタイマーの指定はONとOFFで、ONにすると一定時間PICマイコンを停止状態にしておきます。一定時間が過ぎて、電源やクロック信号など、回路が安定してからPICマイコンの動作を開始する、ということになります。
なお、どの程度の時間停止させるかは、実は他の設定とも絡んできますので、ここでは、電源投入直後、PICマイコンが安定するまで動作停止させる設定、と理解しておけばよいと思います。
PWRTEの設定値
PWRTEでは次の設定ができます。
設定値 | 設定内容 |
---|---|
OFF | パワーアップタイマーを無効にします。 |
ON | パワーアップタイマーを有効にします。 |
通常は、パワーアップタイマーはONの設定で問題ありません。ONの場合は次のように記述します。
#pragme config PWRTE = ON
MCLRE(ハードウエアリセット)
「Master Clear Enable」の略です。
MCLREの機能
PICマイコンを使って常時動作させるような回路の場合、電源スイッチは付けずに電源アダプタを直接作った回路に接続して動作させることがあります。
例えば気象データを24時間365日収集したり、時計ですね。
その場合、例えば気象データ収集装置を一度リセットして、データをクリアしたい、などということがあるかもしれません。その場合、電源アダプタを抜き差しするよりは、リセットスイッチがあった方が便利ですよね。
このリセット信号は外部からPICマイコンに伝える必要があります。そのためリセットスイッチ用にPICマイコンの1ピンを使用することになります。実際、どのPICマイコンもリセットピンとして1ピン用意されています。
とは言っても、リセットスイッチが必要ないことも多いですよね。今回の入門で作るLED点滅制御回路も、リセットスイッチをつける意味はあまりなさそうです。
このようにリセットスイッチが必要ないにもかかわらず、PICマイコンに常にリセットスイッチ専用のピンがあると、その1ピンはちょっともったいないです。
特に今回使っているPIC12F1822は8ピンしかなく、そのうち、2ピンは電源ですので、残りは6ピン。さらに1ピンリセットスイッチ専用に取られてしまったら、残り5ピンとなってしまいます。
このMCLRE設定で、PICマイコンのリセットスイッチ用として用意してある1ピンを、リセットスイッチに使うのか、普通の入力ピンとして使うのかの設定ができます。
PIC12F1822の場合、4番ピンがリセットスイッチ用のピンで、MCLRE設定をONにすると、4番ピンはリセットスイッチ機能のピンとなります。
例えば次のように電子部品を接続すると、リセットできるようになります。
この回路はあくまでも一例で、Microchip社推奨の回路です。これ以外の回路でもリセットできますが、この入門ではあまり深入りしないようにします。
MCLRE設定をOFFにすると、4番ピンは入力ピンとして使用できることになります。(出力ピンには使用できない点に注意してください)
MCLREの設定値
MCLREでは次の設定ができます。
設定値 | 設定内容 |
---|---|
OFF | MCLRピンを入力ピンにします。 (PIC12F1822では4番ピンがMCLRピンです) |
ON | MCLRピンをリセットスイッチ用のピンにします。 |
この入門では4番ピンを入力ピンとして使用しますので、MCLREは次のようにOFFに設定します。
#pragme config MCLRE = OFF
CP(プログラムプロテクト)
「Code Protection」の略です。
CPの機能
PICマイコンに書き込んだプログラムは、MPLAB X IDEとPICKitを使うと読み出すことができます。
例えば、自分でかなりすごいPICマイコンを使用した作品を作ったら、もしかしたらフリマサイトなどで売れるかもしれませんよね。
でもプログラムが読み出しできてしまうと、その読み出したプログラムを他のPICマイコンに書き込めばコピーできてしまいます。
このCP設定は、書き込んだプログラムの読み出しを許可するかを設定します。
CPの設定値
CPでは次の設定ができます。
設定値 | 設定内容 |
---|---|
OFF | プログラムの読み出しを許可します。 (プログラム読み出しプロテクト=読み出し保護をOFFにします) |
ON | プログラムの読み出しを禁止します。 |
このシリーズで作成する回路は、特に読み出しプロテクトする理由もないので、OFFに設定しています。
#pragme config CP = OFF
CPD(データプロテクト)
「Data Code Protection」の略です。
CPDの機能
先ほどはプログラム保護の設定ですが、こちらはデータ保護の設定です。
CPDの設定値
CPでは次の設定ができます。
設定値 | 設定内容 |
---|---|
OFF | データの読み出しを許可します。 (データ読み出しプロテクト=読み出し保護をOFFにします) |
ON | データの読み出しを禁止します。 |
この入門で作成する回路は、特に読み出しプロテクトする理由もないので、CPと同様にOFFに設定しています。
#pragme config CPD = OFF
BOREN(ブラウンアウトリセット)
「Brown-Out Reset Enable」の略です。
BORENの機能
PICマイコンの回路が、何らかの理由で電源が低下するなど不安定な状態になったらどうするか、という設定です。
具体的には、電池切れが間近で、電源がある電圧以下になった場合、PICマイコンをリセット状態で一時停止させます。もしその状態からまた復活した場合、PICマイコンの動作を開始します。(電源が消失することをブラウンアウトと呼んでいます)
BORENの設定値
BORENでは次の設定ができます。
設定値 | 設定内容 |
---|---|
ON | 電圧低下時、PICマイコンをリセット状態で停止します。 |
OFF | この機能をOFFにします。ブラウンアウトが発生しても成り行きに任せます。 |
NSLEEP | PICマイコンが通常動作しているときはON、スリープ中はOFFにします。 |
SBODEN | この機能のON/OFFをプログラムで設定します。 (プログラムでONとOFFを随時切り替えることができます) |
この入門で作成する回路は、LEDがピカピカ光るだけなので、電源不安定になってもあまり問題ありません。逆に、電源不安定になったら、この回路がどうなるのか見てみたい気もします。とは言っても、一般的にはONにしておいた方がよいと思います。
#pragme config BOREN = ON
BORV
「Brown-out Reset Voltage」の略です。
BORVの機能
この設定は、電圧低下が発生した、と判断する電圧を設定します。何ボルト、という設定ではなく、高い、低いの設定になります。
電源電圧が設定電圧より低くなるとリセットするので、このBORVを高い電圧に設定するとちょっと電圧が下がるとリセットします。(=電源の電圧低下に敏感になる)
BORVを低い電圧にするとかなり電圧が下がってからリセットします。(電源の電圧低下に鈍感になる)
BORVの設定値
設定値 | 設定内容 |
---|---|
HI | 高い電圧に設定します。 |
LO | 低い電圧にします。 |
通常はLOで問題ないので、LOに設定しておきます。
#pragme config BORV = LO
IESO(2段階クロック)
「Internal External Switchover Enable」の略です。
IESOの機能
クロック信号は、内部クロックと外部クロックの2通りの方法で供給することができます。
この内部クロックと外部クロックはそれぞれ特徴があります。そのひとつに、クロック発振が安定するまでの時間があります。
外部クロックはクロック発振が安定するまで時間がかかることがあります。一方、内部クロックはすぐに(といってもちょっとは時間がかかりますが)クロック信号が安定します。
タイミングが非常にシビアな回路など、立ち上がりをスムーズにするために、電源投入直後は内部クロックで動作させ、ある程度時間がたったら外部クロックに切り替える、ということができます。これを2段階クロック、と呼んでいます。
IESOは2段階クロックを使用するかどうかの設定です。
IESOの設定値
IESOでは次の設定ができます。
設定値 | 設定内容 |
---|---|
OFF | 2段階クロックをOFFにします。 |
ON | 2段階クロックをONにします。 |
このシリーズでは内部クロックで動作させますので、OFFにしておきます。
#pragme config IESO = OFF
FCMEN(バックアップクロック)
「Fale-safe Clock Monitor Enable」の略です。
こちらもクロックの設定です。
外部クロックをつけて動作させている場合に、もし外部クロックがぶっ壊れたらPICマイコンが止まってしまいますよね。これはこれで当たり前なんですが、それでも何とか動作を続ける方法があります。
内部クロックがありますので、それを代替として使う方法です。つまり、外部クロックが壊れてクロック信号がなくなってしまったら、それを検知して内部クロックに切り替えて動作を続ければなんとか動作しつづけられることになります。
FCMENでは、この動作を行うかどうか設定できます。
FCMENの設定値
FCMENでは次の設定ができます。
設定値 | 設定内容 |
---|---|
OFF | 外部クロック信号がなくなっても何もしません。悲しいですがそのまま動作しなくなります。 |
ON | 外部クロック信号がなくなったら、内部クロックに切り替えて頑張って動作を続けます。 |
この入門の回路では、内部クロックで動作させるので、この機能は関係ないためOFFにします。
#pragme config FCMEN = OFF
でもちょっと考えると、外部クロックが壊れたら多分その作品は寿命なのだと思います。
外部クロックが壊れても頑張って動作する、というのはなんだかある意味作品がかわいそうな気もします。OFFとON、人生に置き換えるとどちらが幸せなのでしょうかね。また、このとき「外部クロック」とは何なんでしょうかね。
CLKOUTEN(クロック信号出力)
「Clock Out Enable」の略です。
CLKOUTENの機能
外部クロックを接続する方法として、2番ピンのみ使用する形態がありました。
外部クロックを使用する場合、2番ピンと3番ピンを使用することが前提となっていますので、2番ピンのみ使用する場合、3番ピンが余ってしまいます。
CLKOUTENは、3番ピンの役割をどうするか、という設定です。
設定は2通りあり、1つは次のようにクロック信号を外部に出力する設定です。
もう1つは入出力ピンとして使用する設定です。
CLKOUTENの設定値
CLKOUTENでは次の設定ができます。
設定値 | 設定内容 |
---|---|
ON | 3番ピンをクロック信号出力ピンにします。 (ピン番号はPICマイコンに依存します) |
OFF | 3番ピンを入出力ピンにします。 |
上記のように外部クロックを2番ピンのみに接続する場合のみ、設定が有効です。内部クロックを使用する場合などはOFFにしておきます。
#pragme config CKLOUTEN = OFF
WRT(プログラム領域書き込み制御)
「Write Protection」の略になります。
WRTの機能
設定名は「Write Protection」ということで、「書き込み禁止」設定なのですが、これは何に対して禁止するか、主語がないですよね。
WRTは「プログラム領域」に対する書き込み禁止設定になります。
この設定は、通常はあまり気にしなくてもいいと思いますが、例えば次のような場合にこの設定は有効です。(ちょっとややこしいです)
PICマイコンに書き込むプログラムを以下のようにします。
「PICマイコンが動作を開始したら、外部からのデータが受信されるのを待って、データを受信したらプログラム記憶領域に書き込む。データ受信が終了したら、そのデータの先頭から実行する」
という内容です。上の内容で、赤文字の「データ」がプログラムだったら、、、外部から読み込んだデータ(=プログラム)を実行できますよね。
基礎編としてはちょっと難しい内容ですが、このように後からプログラムを読み込んでそのプログラムを実行するプログラム、つまり元のプログラムをブートローダーと呼ぶこともあります。
PICマイコンに興味があれば、Arduinoをご存知かもしれません。Arduinoに搭載しているマイコンにはブートローダーが書き込んであり、そのプログラム(=ブートローダー)の動作は、「USB経由で受信したデータをプログラム領域に書き込み、データ受信が終わったら書き込んだデータの先頭から実行する」という内容です。
この時、ブートローダーは後から読み込んだプログラムに書き換えられては困るので、ブートローダーのプログラム領域は書き込み禁止にしたい、ということがあります。このような時にブートローダーの領域は書き込み禁止の設定にします。
WRTの設定値
WRTでは次の設定ができます。
設定値 | 設定内容 |
---|---|
OFF | すべての領域を書き込み可能にします。 |
BOOT | アドレス000h〜1FFhの領域を書き込み禁止にします。 |
HALF | アドレス000h〜3FFhの領域を書き込み禁止にします。 |
ALL | すべての領域(000h〜7FFh)を書き込み禁止にします。 |
なんだかちょっと難しいですよね。
通常のプログラムではOFFで問題ありません。
#pragme config WRT = OFF
PLLEN(PLL設定)
「PLL Enable」の略です。
PLLENの機能
PLLを制御する設定なのですが、そもそもPLLって謎ですよね。
PLLは「Phase Locked Loop」の略なんですが、こんなことを説明してもさらにわからなくなってしまいます。
この「PLL」はハードウェア回路の機能名で、マイコンに限らずFMラジオなどのアナログ回路にも出てくる、かなり応用範囲の広い技術です。
一言で説明すると、周波数を逓倍(ていばい)する機能です。周波数などを2倍とか3倍とか整数倍にすることです。
PIC12F1822のPLLEN設定はONとOFFです。ONの時は4倍、OFFは何もしません。
PLLENの設定値
PLLENでは次の設定ができます。
設定値 | 設定内容 |
---|---|
ON | クロック信号を4倍の周波数にして使用します。 |
OFF | クロック信号をそのまま使用します。 |
今回は内部クロックを1MHzに設定してそのまま使用しますので、このシリーズではOFFに設定します。
#pragme config PLLEN = OFF
STVREN
「Stack Overflow/Underflow Reset Enable」の略です。
STVRENの機能
C言語の応用的な内容を勉強された方であれば、スタックオーバーフローやスタックアンダーフローという言葉は聞かれたことがあるかもしれません。
C言語のスタックは、関数の引数や戻りアドレスを保存するメモリ領域を意味しています。
PICマイコンの場合は、単にリターンアドレスを保存するメモリ領域で、16個分用意されています。
このスタックがオーバーフローした場合、あるいはアンダーフローした場合にどうするか、という設定です。
スタックという言葉を聞かれたことがない場合、何が何だか、という感じですよね。
でもこの設定はどちらにしたところで、問題が発生した時にプログラムをリセットするか、何もしないかで、どちらも動きはおかしくなります。
STVRENの設定値
STVRENでは次の設定ができます。
設定値 | 設定内容 |
---|---|
OFF | 何もしない |
ON | スタックオーバー/アンダーフローの場合、リセットする。 |
通常はOFFで問題ないので、OFFに設定しておきます。
#pragme config STVREN = OFF
LVP(低電圧プログラミング)
「Low Voltage Programming」の略です。
LVPの機能
PICkitを使用してプログラムをPICマイコンに書き込むとき、高い電圧を使用して書き込みされています。
PICkitを使用してプログラムを書き込む場合は意識する必要はありませんが、書き込み機器を自作する場合など、この高い電圧を用意するには追加の回路が必要になってしまいます。
このような場合はこのLVPをONにすると、マイコンの電源と同じ電圧で書き込みできるようになります。
「MPLAB PICkit Basic」と「MPLAB Snap」は、高電圧で書き込むことができませんので、この設定をONにして書き込む必要があります。
また、この設定をONにするとPICマイコンの1ピンがプログラム制御できなくなりますので注意が必要です。
LVPの設定値
LVPでは次の設定ができます。
設定値 | 設定内容 |
---|---|
OFF | 低電圧書き込みを無効にします。 |
ON | 低電圧書き込みを有効にします。 |
このシリーズでは、高電圧で書き込みを行うためOFFに設定します。
#pragme config LVP = OFF
PICマイコンコンフィグレーション設定コードの自動生成
これでコンフィグレーション設定の説明は終わりました。
でもこの設定をプログラムに書くのは大変ですよね。
そこで、MPLAB X IDEではコードを自動生成してくれる機能がありますので、この機能を使ってコードを生成してみてください。
手順は次のとおりです。
最初に、次のようにMPLAB X IDEの 「Window」メニュー → 「Target Memory Views」メニューから、「Configuration Bits」メニューを選択します。

すると、ウインドウの右下の領域にPIC12F1822のコンフィグレーション設定がプルダウンメニュー選択方式で設定できる領域が表示されます。

ここで、設定したい項目の「Option」列か「Setting」列をクリックすると設定値がプルダウンメニューで表示されますので、この中から選択します。
デフォルトから変更した項目は上のようにマークがついてハイライトされます。
設定が終わったら、下の方にある「Generate Source Code to Output」ボタンをクリックします。
すると、以下のようにコンフィグレーション設定のコードが生成されます。

このコードで必要なところを選択し、クリップポードにコピーして、自分のソースコードにペーストします。
以上でコンフィグレーション設定の説明は終わりですが、基礎編にしてはかなり難しかったと思います。
わからないところがあっても、まずは開発の流れを意識して確認するようにしていただければと思います。
次回からメイン関数を作成していきます!
更新履歴
日付 | 内容 |
---|---|
2016.9.25 | 新規投稿 |
2018.11.24 | Configuration BitsメニューパスをMPLABX IDE v5.10に準拠 |