PICkit3を使用時,PICを認識できない時にチェックすべき事(PK3Err0045エラー)
MPLABより、PICkit3を使用してPICに書き込みを行おうとした際、OutputウィンドウにPK3Err0045のエラーが表示する事があります。 PICkit 3 detectedConnecting to PICkit 3… Running self test… Self test completed Firmware Suite Version…… 01.27.15 Firmware type………………….Midrange PICkit 3 Connected. PK3Err0045: You must connect to…
続きを読む
MPLABでPICkit3を使用してのデバッグが出来ない理由Top10
PICkit3のユーザガイドで、デバッグが上手く行えないときにチェックすべき点が掲載されていました。 日本語の情報が見当たらなかったので、訳したものを置いときます。 (ざっくりな意訳なので、おかしな所があったら指摘してくださると幸いです) 1.オシレータが正しく動作していない。 オシレータに関するコンフィグレーションビットの定義もチェックしてみてください。 2.デバッグ対象の回路に電源が供給されていない。 電源ケーブルの接続確認と、テスタで電圧チェックしてください。 3.デバッガが物理的にPC(もしくは回路側)とつながっていない。 ケーブルの接続を確認してください。 4.PICでコードプ…
続きを読む
PICアセンブラにおける分岐/ループ処理の組み立て方(基本編)
C言語では、if,switchによる分岐や、for,whileによる繰り返し命令を持っています。 一方、PICのアセンブラはどうかというと、当然ながらそんな便利な制御機能は持っていません。 というか、PICに限らずほぼ全てのCPUは、機械語レベルで上記のような繰り返し処理を持っていません。 それでは、アセンブラレベルでどうやって制御構造を組み立てていくかというと、条件付分岐命令というものを利用していきます。 PICのアセンブリにおいて、条件付き分岐を行える命令は以下の4つです BTFSC ; bit test file-reg skip if clear BTFSS ; bit test fi…
続きを読む
VMware上でPICkit3は使用できるか?
MPLABをインストールした環境をVMwareで構築しているのですが、 PICkit3を接続してみたところ、問題なく使用することが出来ました。 以下、証拠画面です(クリックで拡大します)。 動作を確認した環境は以下の通りです。 ホストOS Windows7 SP1 ゲストOS WindowsXP SP3 App VMware Player 3.1.4ホストOS Windows7 SP1 ゲストOS WindowsXP SP3 App VMware Player 3.1.4 注意すべき事はVMにUSBポートを追加するぐらいで、特にハマリどころもなく動作しました。 USBポートの追加…
続きを読む
MPLABでPICkit3使用時,PICkit3から電源を供給する
MPLABでPICへのプログラム書き込みにPICkit3を使用している場合、PICkit3から回路へ電源を供給することが出来ます。 電源供給はMPLABで設定を行います。 MPLABを起動し、Programmer->Settingをクリックします。 Powerタブをクリック後、”Power target circuit from PICkit3″にチェックを入れるとPICkit3側からPIC回路へ電源を供給することができます。 供給する電圧は、画面よりある程度指定可能です。 スライドバーを操作することで、2.75V~5.5Vを選択可能です。 電流については30mAが上限…
続きを読む
PICkit3を使ってMPLABからプログラムを焼く方法
前回MPLABを使ってプログラムを作成する方法を確認したので、今回は作成したプログラムを実際にPICへ焼いてみました。 今回の書き込みを行ったのはPIC16F84Aです。 PICへの書き込みにはライタが必要なので、まずは以下のハードを用意します。 用意する道具一覧 PICkit3 今回、ROMの書き込みにはPICkit3を使用しました(PICkit2でも書き込み可能です)。 楽天だと2021年7月現在、Debug Express付きのものが1万円ほどで販売されているようです。 プログラムの書き込みだけならDebug Expressは不要です。PICkit3単体だと4000円程度で入手できます。…
続きを読む
PICで一定時間のスリープ(ウェイト)を行う
アセンブラではスリープ処理も,ひと苦労 プログラムの中で一定時間処理を止めたい場合、C言語だとsleep()関数を使用することで秒単位のスリープ処理を行えます。 一方、PICでアセンブラを使って処理を行う場合はどうかというと、残念ながら一定時間処理を待つという命令は有りません。アセンブリのニーモニック一覧を見るとSLEEPというのがあるので、一見するとこれでいけそうな気もしますが、残念ながらPICのSLEEPはMPU自体をスリープモードにする(Windowsでいうサスペンド状態)命令なのでこれは使えません。 このような場合、PICではループを空回しする事でビジーウェイトを作り、所定の時間だけ経…
続きを読む
[MPLAB] MPASMアセンブラで良く出るエラーメッセージとその対処一覧
PICの開発をMPLABを使用してアセンブラ(MPASM)で開発しているときに、良く表示されがちなエラーメッセージとその対処法の一覧です。 開発を始めたばかりは、特にエラーの意味が分かり辛く、デバッグに手間取る事もあるので参考にしてみてください。 ※以降のメッセージと対処法はP16F84Aの場合を元に説明しています。 他のPICを使用している場合は、一部対処法が異なる場合もあるかもしれません。 その場合は各自読み替えてください。 よくあるエラーメッセージ一覧 Register in operand not in bank 0. Ensure that bank bits are corre…
続きを読む
[PIC]MPLABでデバッグ時に,入力用ポートの値を操作する(Stimulusウィンドウ)
MPLABでは実際のマイコンチップを用意しなくても、IDE上に用意されたシミュレータを使用してプログラムをデバッグする事ができます。 また、PICマイコンでは入出力ピンを使用して外部とのデータをやり取りを行います。 この際に出力ピンについては、PORTAやPORTBなどのレジスタ値を見れば0/1のどちらが出力されているか、確認する事ができます。一方、入力については、実機上はボタンなどを用意すれば入力のON/OFFを変更できますが、シミュレータ上ではボタンが無いのでピンの状態を変更する事が出来ません。 このようなときはStimulus機能を使用することで、ピン状態を変更する事が可能です。 Sti…
続きを読む
[PIC]PIC16F84Aのコンフィグレーションビットを指定する
PICでは、マイコンの内部動作を規定するために、コンフィグレーション用のデータが存在します。 PIC16F84Aマイコンの場合、このデータはプログラムメモリの0x2007番地に存在します。0x2007番地は、ユーザプログラムメモリの範囲外なので、通常のアセンブラ命令では値のセットを行うことができません。 それでは、この値をどうやって指定するのかという疑問が出てくるのですが、MPLABのアセンブラでは__CONFIG命令でこの値を設定することができます。 ここでは PIC16F84Aのコンフィグレーションビットの内容について確認してみます。 まず、アセンブラプログラム上での指定方法ですが、以下の…
続きを読む
[PIC]MPLABで作成されたhexファイルのフォーマットを解析する
MPLABで開発を行い、コンパイル(orアセンブル)を行うと*.hexファイルが作成されます。 PICのマイコンへは、hexファイルを元に書き込みが行われます。 このhexですが、エディタで開いてみると普通のテキストファイルである事が分かります。 前回の動作確認で作ったasmファイルを確認してみると、以下の様な内容になりました。 作成したPICのアセンブラコード ; LEDを点滅させる ; (点滅が速過ぎるので、実機で実行すると目視では確認できませんが…) LIST P=16F84 INCLUDE P16F84A.INC ORG 0 ; ポートBのRB0ピンを出力にする BS…
続きを読む
[MPLAB]作ったプログラムのデバッグ実行が出来ない場合の対処法(Debugger->Run)
MPLABでは、IDEなので当然ですが、作成したプログラムをPC上でデバッグ実行する事が出来ます。 メニューバーのDebuggerを選択すると、以下のようにF9を押す事で、デバッグ実行が可能です。 なのですが、MPLABをインストールした直後では、なぜかPC上での実行が出来ない状態になっています。 Debuggerメニューを見ても項目が2つしかありません… というわけで、MPLABでデバッグ実行を行うための設定方法ですが、以下の作業をすればOKです。 Debugger->Select ToolにあるMPLAB SIMを選択し、チェックを入れます。 以下のようになっていればOKです。…
続きを読む
[PIC]MPLABでLED点滅プログラムを作成する
前回、PIC開発用のIDEであるMPLABのインストールが出来たので、今回はソフト作成の流れを確認しつつ、LEDを点滅させるプログラムをアセンブラで作成します。 プログラムは、実際にPICに書き込まなくてもPC上でデバッグ実行できるので、今回の作業内容ではPICのICはまだ必要ありません。 また、途中でも説明していますが、今回作成のプログラムではLED点滅のプログラムを作っていますが、実は一点問題があります。それは、動作が非常に速いので実際にPIC上で動作させると速すぎ、点滅している事が目視では確認できないことです。 PC上でのデバッグ確認では支障が無いので、ここではPC上での操作方法と動作確…
続きを読む
PIC用IDEのMPLABをインストールする
PIC向けの統合開発環境であるMPLABのインストールを行います。 MPLABをインストールする事で、Cのコンパイラとアセンブラを,統合開発環境にて使用出来ます。 キホンからはじめるPICマイコンC言語をフリーのコンパイラで使う まず、下記のサイトにアクセスします。 MPLAB Integrated Development Environment ページの下のほうにスクロールするとダウンロードリンクがあるので、MPLAB IDEをクリックしダウンロードします。 ダウンロードしたzipファイルです。 zipファイルを展開すると、以下のようなファイルが出てくるので、setup.exeを実行しま…
続きを読む
[電子回路]リレーの仕組みの基礎知識
確認に使用した部品 G6E-134P-US DC12 オムロン製 (マルツで購入。1個325円) 仕様書 マイクロリレー 形G6E | オムロン電子部品情報サイト G6E-134P-US DC12 :オムロン制御機器 カタログ ピンアサイン 5本のピンが出ていて、各ピンの番号は1,6,7,10,12pinになる。 番号が連番じゃないのは、各ピンの位置が物理的に離れているため。1番ピンをブレッドボードの”1″のところに刺すと、次のピンが”6″の位置に刺さるようになっている。ちょっと見づらいけど下の写真を見ると分かるかも。 仕様書より、このパー…
続きを読む