ProgrammerV4の使い方まとめメモMikroCについて概要PICで簡単なテストボードを作るための説明用メモとして作成。自分用の備忘録の意味もあるけど。アセンブラを使うならば、MicroChip純正のMPLABを使えば良いが、今回はCコンパイラを使うことにした。→統合環境になっているC18は、PIC18系しか使えないのでNG。Cも以前はデバイスが限られていたが、今は殆どOKのようだ。MicroChip純正、CCS、PICCは、MicroChipの統合環境MPLABに組み込んで使う1。mikroCは、とりあえず簡単な統合環境になってる様で、ちょっと試すのには良さそうなので、これでやってみる。評価版は2Kbyteまでの制限があるが、試験的に使うのは問題ない。解凍したインストーラを実行してインストール。基本的に全部デフォルトで。MikroCコンパイラに続いて、PICFLASH、Lv18PICFLASH、PICFLASHdriverのインストールも続けて促されるが、ライタを持ってないので、これはやらなくても良い。ICprogインストールPICの書込みには、フリーのツールICprogを使用する。ICprogのダウンロードページから、以下のファイルをダウンロード。→WindowsNT,2000の時だけだと思うけどIC-progを解凍すると、実行ファイル(icprog.exe)だけが入っている。これを例えば、IC-prog用のフォルダC:\ProgramFiles\icprog106B\とかに入れておく。NT-2000用ドライバをを解凍して、icprog.sysをIC-prog用フォルダに入れる。icprog.exeを実行すると、最初だけハードウェハ設定になるので、JDMプログラマを選択。Driverにチェックが入っているかどうか確認。ProgrammerV4秋月電子のPICライタは、市販キットだが安定している。ダウンロードページから、最新の書込みソフトをダウンロードする。書込みツールと、ライタ上のファームウェアが必要。ファームの改定も頻繁に行われるので、新しいファームを常に使った方が良い。picpgm6_JK_P671_F671_beta.zipこのアーカイブは、ファームも含んでいる。ProgrammerV4を起動して、ヘルプメニューからファームウェアアップデートを選ぶ。ダウンロードしておいたファームのファイルを指定すればOK。[top]テストボードPICには色々なデバイスがあるが、今回はPIC16F628でテストボードを作る。16F84の後継といわれるらしいが、とりあえず手持ちの石がコレだったのが理由。16F628特徴18pinDIP(SOP,SSOP,QFPもある)内蔵4MHzCR発振回路内蔵RA,RBポート合わせて、最大16bit入出力可能(RA5は入力専用)USART,コンパレータ,EEPROM内蔵16F628データシートリセット回路PICはリセット回路を内蔵しているので、以下のようにリセットが掛かる。起動時にPOR(PowerOnReset)が掛かる。それからPWRT(PowerUpTimer)で、約72msリセットが掛かる。それからOST(OscillatorStartupTimer)で、1024クロック分の時間リセットが掛かる。→4MHzで約256usこれらにより、約72ms+αのリセットが掛かることになる。BrownoutResetを有効にすると、電源電圧低下で自動的に約72msのリセットが掛かる。MCLR端子を有効にしておくと、外部から強制的にリセットを掛けることも出来る。今回作成したテスト回路デバッグを考えて敢えてリセット回路を付加した。デバッグしないなら、おそらく外部リセット回路は無くても大丈夫だと思う。→MCLR端子を無効にしておく入力4ピン、出力4ピンだけ用意した。将来的に、USARTを使う可能性を考えて、端子だけ出しておく。ブレッドボードで作成が容易になるように、入出力ピン配置を決めた。ブレッドボードによる配線ブレッドボードで、以下のように配線する。[top]プログラムの準備コンフィグレーションコンフィグレーションレジスタは、プログラムからの書き換えが出来ないので、書込み時に設定する必要がある。MCLR端子を有効にして、外部リセット可能にする。INTOSC(内蔵発振回路)を有効にする。コンフィグレーションの設定方法については、コンパイラによって結構違いがある。ポート設定RB0〜RB3を入力に、RB4〜RB7を出力端子に設定する。TRISBレジスタの、bit0〜3を1に、bit4〜7を0にするRB4〜RB7端子をPull-Upする。004.000000コンフィグレーションレジスタ設定2_BODEN_OFF_CP_OFF_PWRTE_ON_WDT_OFF_LVP_OFF_MCLRE_ON_INTRC_OSC_NOCLKOUT_HS_OSCこれで、ProjectNameで指定した名前の空の.cファイルが生成される。2IC-progで書込むので、この設定はおそらく無意味。[top]プログラムするプログラムの仕様キー入力があった時に、以下のような波形を出力するプログラムを作る。SW1が押された時に、以下の端子から波形出力されるようにする。SCK単純なプログラム無限ループでキー入力待ちして、キーが押されたら出力ルーチンを実行する。}}コンパイルProject→Build、或はBuildProjectボタン(歯車みたいなアイコン)を押すとコンパイルされる。エラーがある場合は、Messageウィンドウに表示されるので、ダブルクリックするとエラー行に飛ぶ。エラー修正→再Buildを、エラーが無くなるまで繰返す。コンパイルが成功すると、Messageウィンドウに以下のような表示が出る。[92%]'ProjectName'.hexファイルが生成される。JDMprogrammerやRCDライタを利用する。今回作成した回路は、ICSP端子を付けてあるので、5本の線で接続すれば良い。IC-progの使い方ICprogを起動する。16F628を選択OpenFileで、コンパイルで生成された.hexファイルを読込み。チェックするProgramAllボタン(チップに稲妻)を押す。0000h!このエラーは要するに書込み後、Verifyしたら最初のアドレスでエラーになったということで、つまり、全く書込まれていないという場合に良く出るエラー。この状態で、AllReadをやってみて、全部1(具体的には3FFF)になっている場合は、初期状態なので、何らかの理由で書込みが失敗している可能性がある。AllReadで全部0だった場合は、読込みが出来ていない可能性がある。このエラーは、原因がいろいろ考えられるので非常に厄介。単なるデバイスの指定間違いシリアルポートの電圧不足PIC自体の不良とりあえず、すぐ動かしたかったので、これは置いといて、秋月のライタを使うことにした。ProgrammerV4の使い方IC-progがトラブったので、今回は秋月のライタを使う。ProgrammerV4を起動する。デバイスとして、PIC16F628を選択Hexロードで、コンパイルで生成された.hexファイルを読込み。Not_Protectプログラムボタンを押す。[top]まとめひさびさにPIC弄ったので、ライタが動かなかったり、ちょっと苦労してしまった。PICは気軽に使えるな〜。メモ入力端子はシュミットトリガなので若干改善されるが、キー入力にはチャタリングがある。本来はチャタリング処理が必要だが、今回はシーケンスが長いので、一応動作する。本来はタイマ割り込み等で、チャタリング処理を行うべき。外部リセット回路は省略可能だが、その場合はMCLRを無効にすること。USARTを使う場合は、SW2,SW3は使用出来ない。MikroCについてCCS-Cでは、デバイス名のヘッダファイルをインクルードする必要があるが、MikroCでは、Project生成時に指定したデバイスのヘッダが自動的にインクルードされる。コンフィグレーションレジスタの設定も、Project設定時に行う。保守性を考えると、CCS-Cのようにソース中に書く方が良いと思う。統合環境を含んでいるので、MPLABに組み込むよりは手軽に使うことが出来る。