前の2つのチュートリアルでは、MPLABXとXC8コンパイラを使用してPICを使い始める方法について説明しました。また、PICを使用して最初のLED点滅プログラムを作成し、シミュレーションで検証しました。それでは、ハードウェアを手に入れましょう。このチュートリアルでは、PICを使用してLEDを点滅させるための小さな回路をパフォーマンスボード上に構築します。プログラムをPICマイクロコントローラーにダンプし、LEDの点滅を確認します。PIC MCUをプログラムするために、MPLABIPEを使用します。
必要な材料:
前のチュートリアルで説明したように、次の資料が必要になります。
- PicKit 3
- PIC16F877A IC
- 40ピンICホルダー
- パフォーマンスボード
- 20MHzクリスタルOSC
- メスとオスのバーグスティックピン
- 33pfコンデンサ-2Nos、100ufおよび10ufキャップ。
- 680オーム、10Kおよび560オームの抵抗器
- 任意の色のLED
- 1はんだ付けキット
- IC 7805
- 12Vアダプター
マイクロコントローラーを「燃やす」とどうなりますか!
コードをMCUにアップロードし、MCU内で機能させるのが通常の方法です。
では、これを理解するために、私たちのプログラムを見てみましょう
ご覧のとおり、このコードはC言語で記述されており、MCUには意味がありません。これが私たちのコンパイラの一部の出番です。コンパイラは、このコードを機械可読形式に変換するものです。この機械可読形式はHEXコードと呼ばれ、作成するすべてのプロジェクトには、次のディレクトリにあるHEXコードがあります。
**あなたの場所** \ Blink \ Blink.X \ dist \ default \ production \ Blink.X.production.hex
このHEXコードがどのように見えるかを知りたい場合は、メモ帳を使用して開いてください。Blinkプログラムの場合、HEXコードは次のようになります。
:060000000A128A11FC2F18:100FAA008316031386018312031386018312031324:100FBA0086150D30F200AF30F100C130F000F00BB1:100FCA00E42FF10BE42FF20BE42F0000831203133A:100FDA0086110D30F200AF30F100C130F000F00BB1:100FDA0086110D30F200AF30F100C130F000F00BB1:100FDA0086110D30F200AF30F100C130F000F00B95:100FDA0086110D30F200AF30F100C130F000F00B95
これを読む方法と、それを理解してアセンブリ言語に戻す方法はいくつかありますが、このチュートリアルの範囲外です。つまり、簡単に言えば、HEXはコーディングの最終的なソフトウェアの結果であり、これはMCUを書き込むためにMPLABIPEによって送信されるものです。
フラッシュメモリー:
HEXコードは、フラッシュメモリと呼ばれる場所にMCUに保存されています。フラッシュメモリは、プログラムがMCU内に格納され、そこから実行される場所です。MPLABXでプログラムをコンパイルすると、出力コンソールのメモリの種類に関する次の情報が得られます。
小さなLED点滅プログラムをコンパイルしたばかりなので、メモリの概要は、使用可能なプログラムスペースの0.5%とデータスペースの1.4%を消費したことを示しています。
PIC16F877マイクロコントローラのメモリは基本的に3つのタイプに分けられます。
プログラムメモリ:このメモリには、書き込み後のプログラム(作成したもの)が含まれています。プログラムカウンタは、プログラムメモリに格納されているコマンドを次々に実行します。非常に小さなプログラムを作成したため、全体のスペースの0.5%しか消費していません。これは不揮発性メモリであり、電源をオフにしても保存されたデータが失われることはありません。
データメモリ: これはRAMメモリタイプで、ウォッチドッグタイマー、ブラウンアウトリセットなどを含むSFR(特殊機能レジスタ)やTRISやPORTなどを含むGPR(汎用レジスタ)などの特殊レジスタが含まれています。格納される変数プログラム中のデータメモリ内のMCUをオフにすると、削除されます。プログラムで宣言された変数はすべてデータメモリ内にあります。これも揮発性メモリです。
データEEPROM(電気的に消去可能でプログラム可能な読み取り専用メモリ):書き込まれたプログラムを書き込んだ結果として変数を保存できるようにするメモリ。たとえば、変数「a」を割り当てて値5を保存し、EEPROMに保存すると、電源をオフにしてもこのデータは失われません。これは不揮発性メモリです。
プログラムメモリとEEPROMは不揮発性メモリであり、フラッシュメモリまたはEEPROMと呼ばれ ます。
ICSP(インサーキットシリアルプログラミング):
MCUで使用可能なICSPオプションを使用してPIC16F877Aをプログラミングします。
さて、ICSPとは何ですか?
ICSPは、MCUをプロジェクトボード内に配置した後でもプログラムするのに役立つ簡単な方法です。MCUをプログラムするために別個のプログラマーボードを用意する必要はありません。必要なのは、PicKit3プログラマーからボードへの次の6つの接続だけです。
1 |
VPP(またはMCLRn) |
プログラミングモードに入る。 |
2 |
Vcc |
電源 ピン11または32 |
3 |
GND |
アースPIN12または31 |
4 |
PGD-データ |
RB7。PIN40 |
5 |
PGC-時計 |
RB6。PIN 39 |
6 |
PGM-LVP対応 |
RB3 / RB4。必須ではありません |
ICSPはすべてのPICパッケージに適しています。次の図に示すように、必要なのは、これらの5つのピン(6番目のピンPGMはオプション)をMCUからPickit3に引き出すことだけです。
回路とハードウェア:
これで、HEXコードの準備が整い、ICSPを使用してPicKit3をPICMCUに接続する方法もわかりました。それでは、先に進んで、以下の回路図を使用して回路をはんだ付けしましょう。
上記の回路では、7805を使用してPICMCUへの出力5Vを調整しました。このレギュレーターは、12Vウォールマートアダプターから電力を供給されます。RED Ledは、PICに電力が供給されているかどうかを示すために使用されます。コネクタJ1は、ICSPプログラミングに使用されます。上記の表で説明されているように、ピンが接続されます。
最初のピンMCLRは、デフォルトで10kを使用してHighに保持する必要があります。これにより、MCUがリセットされなくなります。MCUをリセットするには、ピンMCLRをグランドに保持する必要があります。これはスイッチSW1を使用して行うことができます。
LEDは、値560オームの抵抗を介してピンRB3に接続されます(LED抵抗計算機を参照)。プログラムがアップロードされたらすべてが適切である場合、このLEDはプログラムに基づいて点滅するはずです。上部の画像に示されているように、回路全体は、Perfboardにすべてのコンポーネントをはんだ付けすることによって構築されています。
MPLAB IPEを使用したコードの書き込み:
コードを書き込むには、以下の手順に従います。
- MPLABIPEを起動します。
- PicKit 3の一方の端をPCに接続し、もう一方の端をパフォーマンスボードのICSPピンに接続します。
- 接続ボタンをクリックして、PICデバイスに接続します。
- Blink HEXファイルを参照し、[プログラム]をクリックします。
すべてが計画どおりに進んだ場合は、画面に成功メッセージが表示されます。完全なデモンストレーションについては、以下のコードとビデオを確認し、疑問がある場合はコメントセクションを使用してください。
ありがとうございました!!!
次のチュートリアルで会いましょう。ここでは、より多くのLEDとスイッチで遊んでいきます。