今回はPICマイコンコンフィグレーション部分の概要を説明します。回路を完成させるために以下の順序で説明しています。このエントリの説明は(3)「プログラムを作る」の部分の、PICマイコンコンフィグレーション設定部分を作成するステップになります。LEDを電池と抵抗のみで光らせる回路を組み立てるPICマイコンの回路を組み立てる前に、まずはブレッドボードに慣れておくことにします。電池、抵抗、LEDのみを使って、ブレッドポード上に回路を組んでLEDを光らせてみます。ここでは電池、抵抗、LEDの回路記号と回路図の説明をして、回路図からブレッドボードに組む方法を説明します。ブレッドボードに慣れましょう!PICマイコンのベース回路を組むはじめの一歩の回路は、LEDを1秒に1回光らせるだけの回路です。この回路をブレッドボードに組み立てます。プログラムを作るLEDを1秒に1回光らせるプログラムを作成します。PICマイコンに書き込んで動作させる作成したプログラムをPICマイコンに書き込んで動作させてみます。ベース回路にスイッチを追加LEDの点滅をスイッチで開始させるために、ベース回路にスイッチを追加します。これまではLEDを光らせる、という出力制御をしましたが、今度はPICマイコンで外部から信号を入力する方法を確認します。ベース回路にブザーを追加スタートスイッチ付きの、1秒に1回光らせる回路を作りましたので、ブザーを追加してタイマーとして完成させます。概要これから3回の記事に分けて、PICマイコンコンフィグレーション設定の部分を説明します。長い説明で、込み入った内容になります。マイコンを使うのはこんなに大変なのか、と思われてしまうかもしれません。普通に使用する分には、設定パターンは同じで、毎回どのような設定にするか悩む必要はありません。他のPICマイコンでもほとんど同じ項目が出てきますので、基本的なPIC12F1822の設定がわかれば、他のPICマイコンの理解も早く進みます。今回はPICマイコンを使用していますが、他のマイコンでもだいたい同じような設定がありますので、まずはPIC12F1822の設定をしっかり理解して基礎を作りましょう!各設定項目の説明で、通常はこの設定にしておけばよいという説明もしますので、設定内容が完全に理解できなくても、そのまま読み進めていただいて大丈夫です。今回は、以下の「PICマイコンコンフィグレーション設定」部分の概要を理解します。このコンフィグレーション設定では具体的にどのようなことをするのか、イメージをつかんでみたいと思います。このコンフィグレーション設定部分では、PICマイコンの基本動作関連の設定を行います。「基本動作」って言われても何のことかわかりませんよね。この設定のすべての項目の説明は後ほど行いますが、ここで具体例を2例あげて、大体どのような設定なのか、軽くイメージをつかんでみたいと思います。クロック設定]例えばmacOSの場合、左上Appleメニューから「このMacについて」というメニューを選択するとこんなダイアログが表示されますよね。システム」→「バージョン情報」を選択すると以下のようなダイアログが表示されます。これらのダイアログの「プロセッサ」と書いてあるところに「2.5GHz」とありますが、これはコンピュータのCPUクロック周波数が2.5GHz、ということを意味しています。CPUはこのクロックのタイミングに合わせて処理を進めていきます。クロック周波数が高いほど処理速度が高くなります。PICマイコンもクロックをタイミングとして処理を進めていきます。「PICマイコンコンフィグレーション設定」では、このクロックに関する設定があります。どのような設定かというと、このクロックをどのように発生させるか、というものです。具体的には、PICマイコンの外部にクロック信号を発信する電子部品用意して、PICマイコンのピンにそれをつなげる方法(外部からクロックを供給する方法)と、PICマイコン内部のクロック発振器を使う方法(内部でクロックを供給する方法)です。このように「PICマイコンコンフィグレーション設定」の中の「クロック設定」では、クロックをどのように供給するかを設定します。内部クロックを使用する、などという設定を行います。ブラウンアウト設定]PICマイコンは3.3Vや5Vで動作しますが、何かの原因で電源電圧が低くなることがあります。それは電源の電池が消耗してきたときや、電源が故障してしまったときなどです。このように電源の電圧が低くなったりすると、PICマイコンの動作が不安定になってきます。マイコンの動作が不安定になった場合、LEDの点滅制御では点滅がおかしくなる程度で済みますが、モーター制御している場合などは危ない動作になる可能性もあります。このように電源の供給電圧が低くなることを「ブラウンアウト」と呼び、ブラウンアウトが発生した場合に対策を行いたいケースがあります。「PICマイコンコンフィグレーション設定」の「ブラウンアウト設定」では、ブラウンアウトが発生したときに、PICマイコンの動作をどうするかの設定を行います。ブラウンアウトを検知した場合、マイコンを一時停止させる、などです。以上が具体例で、非常におおざっぱですが、このような設定がマイコンの動作設定になります。このコンフィグレーション設定部分でどんな感じの設定をするかイメージつかめていただけたでしょうか。他にもいろいろ設定がありますので、この後すべてを詳しく説明していきます。説明するコンフィグレーション設定は、PIC12F1822のものですが、もちろん他のPICマイコンでも同様の設定があります。すべてのPICマイコンでこれらの設定項目が同じ、というわけではありません。高機能のPICマイコンになると、これ以外にも設定項目が追加されていたりします。PIC12F1822の設定項目はどのPICマイコンにも見られる基本的なものですので、是非一通り確認いただければと思います。それでは早速、それぞれのコンフィグレーション設定項目を説明します、といきたいところですが、その説明する前に#pragmaについて説明します。INTOSCIOという記述がありますよね。(FOSCやINTOSCIOは後ほど詳細に説明します)この基礎編の記事では、基本的なC言語の知識を前提としています。基礎的な知識として、記事の最初に以下の項目を前提知識とする旨、説明しました。返し構文(while文、for文)条件判断構文(if文、switch文)2進数、16進数そのためプログラムの説明では、これらの項目は知っているものとして説明をします。ついてはC言語入門の部分ではあまりでてこないのですが、PICマイコンのプログラムではコンフィグレーション設定に使用されています。XCコンパイラを使う限り、どんな簡単なプログラムでも避けて通れない構文となっています。ついてここで詳しく説明しておきます。この#pragmaは、難しく言うと「特定のコンパイラに特化した命令を記述するための指示子」ということになります。働きのイメージをつかんでいただければと思います。INTOSCIOという文をどのように解釈するか説明します。XC8コンパイラはコンパイル時に、”#pragma”という文字列を見つけると「自分向けに特化して書かれた何かが、このあとに書かれているかもしれない」と判断します。いう文字列を見つけると、「あ〜、configね。configってことは、PICマイコンのコンフィグレーション設定をしたいんだね。[設定値]とかかれているはずだから、その後もみてみよう」と判断していきます。INTOSCIOと書かれているので、FOSC(クロック設定)はINTOSCIO(内部クロック)に設定する、という処理を行います。いう文をXC8コンパイラが解釈するとクロック設定を行う処理になります。INTOSCIO”というXCコンパイラ向けの記述があるソースコードを、他のコンパイラでコンパイルしたらどうなるのでしょうか。macOSやiOSのアプリを開発するXcodeという開発環境上で、ソースコードにこの記述をしてビルドしてみると、、、何も起こりません。これはXcoceはどのように処理しているのでしょうか。Xcodeでビルドを実行すると、裏ではLLVMというコンパイラがプログラムをコンパイルします。見つけると、自分宛に特別な何かが書かれているかもしれない、と判断します。#pragmaの次を見ると、config、とありますが、LLVMコンパイラはこのconfigは何のことか知りません。そこで、この記述は他のコンパイラ向けに書かれたものなんだな、と判断してこの記述は無視する、という動作をします。後に書かれている文字列が、自分が理解できない場合、エラーにするコンパイラもあります。この#pragma構文ですが、XC8コンパイラに限らず、他の開発環境でも出てくることがありますので、覚えておくとよいと思います。