楽々PIC

水田除草と言うブログを書いていますが、PIC関連の記事が意外に人気で驚いています。 PICを使った電子工作に興味を持つ方が多いことを知って、一緒にPICを学ぶブログを作りたいと思いました。 「楽々PIC」は教材と言うよりも少し実用性?のある楽しい道具を作りながら学ぶブログを目指します。

設定

ポート入出力

温度制御定数と出力」の中で、下図のようにポート出力を High / Low に切り替えるアセンブラ・ソースを紹介しています。 <PICデバイス=18F1320>

温度制御出力

ポートの入出力を行う SFR には、PORTn と LATn があり上図の LATB はポートBに対応しています。 PORTn を入力(読み出し)、LATn を出力(書き込み)に使うようなので、私もそれに従っています。

PORTn と LATn の違いは以下のページが勉強になります。
 PORTレジスタとLATレジスタ
 http://homepage3.nifty.com/mitt/pic/pic1320_06.html

ポート出力は LATn に書き込み、入力は PORTn を読み出したりビットチェックを行うことで実現します。
1bit だけ書き換える場合には BSF , BCF , BTG と言ったニーモニックを使います。 複数の bit を同時に(同期して)書き換える場合は ANDWF , IORWF , XORWF が便利です。 8bit を一気に書き換える際には MOVF , MOVWF , MOVFF , CLRF , SETF 等が使えます。 ただし、8bit の中に他の割り込みプログラムで(も)書き換える bit がある場合は、割り込み処理による書き換えタイミングにより、他のプログラムの実行結果に対して意図しない悪影響を与える場合があり注意が必要です。

同様にポート入力では 1bit だけの時に BTFSC , BTFSS を使い、複数 bit を同時に(同期して)読み出す場合は 8bit 全てを読み出してから処理します。 入力時には他のプログラムに影響を与えることは無いでしょう。

ポートの入出力を行う前に下図のように各ポートについて bit 単位で入出力の設定を済ませる必要があります。

ポート定義

A/DコンバーターとUSARTの設定を先に済ませ、各ポートの入出力を設定します。 ポートとして使う bit だけでなく、A/Dコンバーター、USART、PWM、タイマー入力、外部割込みと言った用途の端子についても矛盾の無い入出力設定を行います。 (例 受信端子=入力 送信端子=出力)


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。




PICkit3 デバッカーに戻す

 記事「PICkit3 プログラマーに設定」でプログラマーに設定したPICkit3をデバッカーに戻します。

以下は、ターゲットに PICkit3 を接続した状態で試しています。

Debugger → Select Tool → PICkit3 を選択します。
Debugger_Select


Programmer In Use のメッセージにOKをクリックします。

Programmer_In_Use


Voltage Caution にはPICデバイスの一致を確認してOKをクリックします。

Voltage_Caution


下図の位置にあるプルダウンメニューから Debug を選択します。

Release_Debug


About Build Configuration もOKをクリックします。

About_Build_Configuration


この状態でビルドを行うと、デバック可能になります。

ビルド → プログラム → Run でいつものようにデバックを続けます。


PICkit3の使い方関連記事のインデックスはこちら → PICkit3 


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。



PICkit3 プログラマーに設定

 出来あがったプログラムをPICに焼いて(プログラミング)、PICkit3 無しで動作させてみます。

いつものようにプロジェクトをオープンします。 以下「温度センサー テーブル参照」からダウンロードしたプロジェクト( RRP1320-0-5 )で試しました。

まずは、Programmer → Select Programmer → PICkit3 を選択します。

Select_Programmer


Debugger In Use ウィンドウではOKをクリックします。 デバッカーとプログラマーを同時に機能させることは出来ないようです。

Debugger_In_Use


続いて、見慣れた Voltage Coution ウィンドウでOKをクリックします。 念の為PICデバイスが表示と一致しているか確かめてからクリックしましょう。

Voltage_Caution


PICデバイスの接続が完了し、Output ウィンドウでに Device ID Revision が表示されるのを確認して、下図の Program ボタンをクリックします。

Program


今度は Image-Platform Mismatch ウィンドウが現れます。 プログラマー用にリビルドするか聞いています。 「はい」をクリックしてビルドします。

Image-Pratform_Mismatch


Output ウィンドウに Programming/Verify complete と表示されると同時にターゲットのPICは動き出します。 周辺の装置に通電したままプログラムする場合は注意が必要そうです。

Program_complete

PICkit3 を取り外すとOutput ウィンドウに Target Removed と表示されますが、基板(RRP1320-0)は素知らぬ顔で動作を続けています。 PICkit3 を抜いたまま、RRP1320-0 の電源をOFF → ON すると正常にリセット動作して動き出します。


PICkit3の使い方関連記事のインデックスはこちら → PICkit3 


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。



赤外線リモコン受信3

 「赤外線リモコン受信2」の続きです。 最初に INT1 の割り込み設定をしますが、リセット直後で不定になっているワークの初期化を一緒に行っています。 <PICデバイス=18F1320> 受光モジュールは PL-IRM1261-C438 です。

以下は INT1 の設定とワーク初期化を行うアセンブラ・ソース( intdef.asm の一部)です。 INT1 は立ち下がりエッジで低位割り込みを発生するように設定し、ワークを初期化してから割り込みフラグをクリアして、割り込みを許可します。

81行目にサブルーチンコールがありますが、TIMER0設定値を 3bit 右シフトするサブルーチンです。 詳細は別の記事で紹介します。 INT1 の都度、TIMER0 を読み出して、前回のINT1割り込みからの時間を割り出しますが、前回と今回の間に TIMER0 のオーバーフローが発生している時に加味すべき定数を、79行目~87行目で計算しています。

intdef_INT1

上図の89行目では、下図のサブルーチン( ircr.asm の一部)をコールしています。 この部分は受信完了したコードに従ってメイン処理を行った後で赤外線リモコン受信を再開するときに使う為、サブルーチンにしています。

ircr_ircrst

32bit の受信コードを書き出すワークを0クリアし、受信 bit 数カウンターに32を設定してリーダー受信待ちのフラグ設定を行った上で、割り込みフラグクリアと割り込み許可を行います。


赤外線リモコン受信の関連記事インデックスはこちら → 「赤外線リモコン受信

関連記事の最後にプロジェクト一式をダウンロード可能にする予定です。


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。



コンフィグレーションビット

 今までのところ、このブログではMPLABのシミュレーターでニーモニックの動作を確かめているだけですから、コンフィグレーションビットには触れずに来ました。 結果的にデフォルト設定で使っています。

クロック(発振源)の選択を初めとするPICの基本的な設定を行うコンフィグレーションビットですから、リセット動作の直後にプログラム・メモリーの0番地から実行されるプログラムで設定するわけに行かないことは容易に想像できます。 リセット動作の初期(Run状態の前)に利用される情報ですから、PICデバイスにプログラムを書き込む時点でコンフィグレーションビットの設定を済ませる必要があります。

このブログではMPLABとPICKit3と言う特定の環境で、自作した特定のハードウェアをターゲットにプログラムを作って行きますから、その環境とターゲットに絞った具体的な説明に努めます。 特定の環境とターゲットで学んだ知識と経験があれば、他のPICデバイスに応用することも容易になるだろうと考えています。

このブログでも間もなく小規模ながら具体的にハードウェアを製作して、プログラムを勉強する予定ですから、コンフィグレーションビットを扱う必要があります。  私が参考にした書籍でも、ソース・リストの中にコンフィグレーションビットの設定情報( CONFIG 文)を記述していましたが、初心者には逃げ出したくなるような文字列が並びます。 そこに並ぶシンボルは略称故に、その内容について興味がわかないように思います。

そこで、当ブログではMPLABの Configuragion Bits ウィンドウから設定します。

[Configure]→[Configuration Bits] を選択します。
config0

Configuragion Bits ウィンドウで現在の設定を確認できます。
config1


この先、ターゲット基板を作ってプログラムを勉強する時には、上図に見える Configuration Bits set in code のチェックを外してコンフィグレーションビットを個々に設定します。
config2

Configuration Bits ウィンドウでは、上図のようにプルダウンメニューから選択する形で設定します。 個々のコンフィグレーションビットについて興味が湧いてきます。

設定の詳細を伝える際には、下図のようにリスト中で右クリックして Output to File を選択しファイル名を指定すれば、Configuration Bits ウインドウに表示されている内容を全て含むテキストファイルを保存してくれます。

config4

いずれ(間もなく)このような方法でコンフィグレーションビットの設定内容をお伝えする時が来ると思います。


一連の記事のインデックスは 「とにかくビルド!」の末尾をご覧下さい。


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。



ダウンロードコーナー
記事検索
アンケートに御協力下さい


アーカイブ
楽々PIC 宛てBlogMail


--- ご了承下さい ---

注意して記事を書いていますが、記事及びリンク先の情報による不利益について、一切責任を負い(負え)ません。
QRコード
QRコード
アクセスカウンター

    Atsuhiro Imai

    バナーを作成


    プロフィール

    jyosou_robot

    • ライブドアブログ