• 追加された行はこの色です。
  • 削除された行はこの色です。
#freeze
 閲覧総計:&counter();  (本日:&counter(today);  昨日:&counter(yesterday);)
 
 *純正:PICkit2 4,000円 [#gd356f64]
 
 |&attachref(P1010553.JPG,zoom,150x150,button){新しい写真添付};|&attachref(PICkit2本体.JPG,zoom,150x150,button){新しい写真添付};|&attachref(P1010551.JPG,zoom,150x150,button){新しい写真添付};|
 
 USB接続で利用する純正のPICプログラム ライタ「PICkit2 Debug Express」(赤ボタン)
 です。 07/10/06
 
 【目次】(項目をクリックすると、そこへ飛べます)
 #contents
 ~
 ↓PICkit2 デバイス サポートリスト
 http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en027813
 
 【使った感想】 08/08/30
 ●何といっても書込み速度が非常に速い
 ●ICD(インサーキット デバッグ)機能が非常に便利
 ●ロジアナ機能を重宝している
 
 PICkit2が秋月電商で08/08/29から販売が開始された模様です。 08/08/30
 本体($35):4,000円
 http://akizukidenshi.com/catalog/items2.php?p=1&q="M-02508"
 本体+テストボード($50):5,800円
 http://akizukidenshi.com/catalog/items2.php?p=1&q="M-02514"
 
 オンラインデバッグ機能が魅力で、USB接続 小型 外部電源不要でIDE(統合開発環境)から
 操作出来る場合が多いです。価格は50ドル(米)(=6,000円 =$50×120円) 07/10/06
 
 
 &color(crimson){マイクロチップ社の通販サイトオープン記念で、07/9/25-11/30の期間キャンペーンで};
 &color(crimson){80%offの「10ドル」で購入できお得です。(先着1000名まで)};
 マイクロシティ(http://www.bandhk.com/microcity/)のDiscount Storeで「割引クーポン」
 を入手し、通販サイト(http://www.microchipdirect.com/)で
 「DV164121 - PICkit 2 Debug Express」を購入(同じ様な商品が多いので間違えぬ様)
 
 「割引クーポン」は最後の方で入力メッセージが出てきます。
 メッセージが日本語なので安心して購入出来ました。(さすがに住所氏名はローマ字入力)
 
 ただし、アメリカからの宅配便手数料15ドルと手数料5ドルと関税0.5ドルが加算されます。
 それでも$10+$15+$5+$0.5=$30.5(=3,660円(=$30.5*120円))でお得です。
 
 注文して6日後にFedEx宅急便で商品が届きました。
 
 
 ~
 ★この情報は役に立ちましたか?
 #vote(はい[14],普通[2],いいえ[5])
 
 #comment_nospam
 
 *インサーキット デバッグ機能 [#vb988109]
 
 &attachref(P1010557.JPG,zoom,150x150,button){新しい写真添付};
 
 PICkit2の特徴のひとつである「インサーキット デバッグ機能」を早速使ってみた。
 素晴らしい。実際のアナログ入力値を見ながらデバッグ出来る。
 センサーからの入力信号が多いPICのプログラムのデバッグをパソコン上のシミュレータ
 で行うのは、手間が掛かると共に、結局はデバッグする事が出来ないと言う結果に終わる
 事が多かった。
 この「インサーキット デバッグ機能」は、「PICプログラムのデバッグに利用してみ
 よう。」という気を起こさせてくれる。期待大の機能である。
 
 「PICkit2 Debug Express」(赤ボタン)には、16F887のデモボードとインサーキット デ
 バッグ操作を習得する為のチュートリアル用プログラムが付いてくる。
 16F887のデモボードはPICとLEDが8個、半固定抵抗1つ、タクトスイッチ1つが付いて
 いる。また、インサーキット デバッグのチュートリアル用プログラムには、あらかじめ
 バグが仕込んであるプログラムが用意してある。ユーザーズガイドでは、このプログラ
 ムを用い「インサーキット デバッグ機能」でバグを発見し、修正する方法を示してくれ
 ている。
 PICkit2 ユーザーズガイドは日本語版が公開されている。
 ↓「インサーキット デバッグ機能」の操作法説明はp.29〜45
 http://www.bandhk.com/microcity/DS51553C_JP_PICKIT2.pdf
 
 07/10/14
 
 ~
 ★この情報は役に立ちましたか?
 #vote(はい[5],普通[1],いいえ[0])
 
 #comment_nospam
 
 *C言語でインサーキットデバッグ(HI-TECH C PRO(Lite mode)) [#ac04e3ec]
 
 |&attachref(PICkit2テストボード.jpg,zoom,150x150,button){新しい写真添付};|&attachref(HI-TECH C PRO ICD画面.JPG,zoom,150x150,button){新しい写真添付};|
 
 C言語でICD(インサーキットデバッグ)が出来るのは非常に便利であり、
 プログラムの開発効率が非常に向上する。 08/08/30
 
 例題として、A/D変換値やスイッチ入力の状態をLEDに表示するC言語のプログラムを
 PICkit2付属のテストボード用(16F887)に作り、C言語でのICD(インサーキットデバ
 ッグ)の使用感を確認した。
 
 結果は、非常に魅力ある、非常に使いやすい機能であった。
 
 実際に動いているPICのレジスタの内容がwatchウインドウで確認出来る。
 A/D変換された値がどのようにADRESH, ADRESLに格納されたかとか、
 PORTBに接続したスイッチがONかOFFかも目で確認できる。
 
 ※HI-TECH C PRO PIC10/12/16 MCU Family(Lite mode)は、PIC12, PIC16用の
 無料で利用できるCコンパイラです。 
 http://microchip.htsoft.com/products/compilers/piccpro-modes.php
  【ICD Tips】
  ●HI-TECH C PRO(Lite mode)のIDCの動きがおかしいな?と感じたら
  Build OptionsのDebuggerの設定を「ICD2」に変更すると改善されるかも?
  (正確な検証が出来てません。経験則の段階です。)
  
  メニューのProjectのBuild OptionsのLinkerタブのDebuggerの設定を
  「ICD2」を選択。(「PICkit2」を選択しない所がポイント)
  (08/08/22 natuさんからの提供情報。ありがとうございました。)
 &attachref(HI-TECH Cデバッガ設定.JPG,zoom,150x150,button){新しい写真添付};
 
  //PIC16F887 MPLAB 8.10 HI-TECH C PRO(Lite mode) v9.60
  //AN0(RA0):半固定抵抗 RB0:スイッチ RD<7:0> LED 8個
  #include <htc.h>
  __CONFIG(INTIO & WDTDIS & PWRTEN & MCLREN & UNPROTECT 
  & DUNPROTECT & BORDIS & IESODIS & FCMDIS & LVPDIS & DEBUGEN);
  __CONFIG(BORV21);
  
  //A2D変換(10bit仕様)
  //添付のsamplesフォルダ中のa2demo.cを参考にアレンジ
  unsigned int
  read_a2d_ch16(unsigned char channel)
  {
      channel &= 0b00001111; //truncate channel to 4 bits
      ADCON0 &= 0b11000011; //clear current channel select
      ADCON0 |= (channel << 2); //apply the new channel select
      GODONE = 1; // initiate conversion on the selected channel
      while (GODONE) continue;
      
      return (ADRESH << 8) | ADRESL;
  }
  
  void main(void)
  {
      //使用変数の定義
      unsigned int x; //A/D値(10bit)を受ける
  
      //PICの初期化
      TRISA = 0b00000001; //RA0は1:入力、他は0:出力設定
      TRISB = 0b00000001; //RB0は1:入力、他は0:出力設定
      TRISD = 0b00000000; //PORTDを全て0:出力設定
      ANSEL = 0b00000001; //AN0をアナログ、AN7-1ピンはデジタルで使用
      ANSELH = 0b00000000; //AN13-8ピンはデジタルで使用
  
      //A2D変換開始
      ADCON0 = 0b01000001; //ADCS Fosc/8 & ADON
      ADCON1 = 0b10000000; // select right justify result. A/D port configuration 0
  
      while (1)
      {
          if (RB0 == 1) //switch up
          {
              x = read_a2d_ch16(0); //sample the analog value on AN0(RA0)
              PORTD = (char)(x >> 2); //Use the 2 MS Bits of the result to select the bit position of the LED on PORTD
          }
          else //switch down
          {
              PORTD = 0b11111111; //LED 8個全て点灯
          }
      }
  }
 
 ~
 ★この情報は役に立ちましたか?
 #vote(はい[3],普通[0],いいえ[0])
 
 #comment_nospam
 
 *最も簡単なプログラム書込み方法 [#l01dee34]
 
 |&attachref(P1020045.JPG,zoom,150x150,button){新しい写真添付};|&attachref(P1020048.JPG,zoom,150x150,button){新しい写真添付};|&attachref(P1020046.JPG,zoom,150x150,button){新しい写真添付};|
 
 PICkit2はICSP(In Circuit Serial Programming)を基本においたプログラムライタである
 為、PICkit2を買ってきて、すぐにPICにプログラムを書込む事が出来ない。
 
 PICkit2を買ってきて、最も簡単にPICにプログラムを書込む方法は、小さいブレッドボ
 ード(150円)にPICを差し、所定のピンとPICkit2を電線でつなぐ方法である。(写真1)
 
 この方法で問題なくPICにプログラムが書き込めた。
 PICに書込んだLED点滅プログラムが正常に稼働する事を確認した。 08/09/02
 ~
 ★この情報は役に立ちましたか?
 #vote(はい[4],普通[0],いいえ[0])
 
 #comment_nospam
 
 *ブレッドボード用ICSPケーブルの自作 [#sc76ae06]
 
 |&attachref(P1020053.JPG,zoom,150x150,button){新しい写真添付};|&attachref(P1020051.JPG,zoom,150x150,button){新しい写真添付};|
 
 ブレッドボードでPICkit2のICSP(In Circuit Serial Programming)と ICD(In Circuit Debug)
 の機能を利用する目的で、PIC16, PIC18の28ピン用のICSPケーブルを自作した。 08/09/03
 
 ICSPの接続の仕方は、PICkit2ユーザーズガイド(日本語) 26ページに掲載されている。
 http://www.bandhk.com/microcity/DS51553C_JP_PICKIT2.pdf
 &attachref(ICSP接続回路.JPG,zoom,150x150,button){新しい写真添付};
 ショットキー・バリア・ダイオードは 11EQS04G を使った。(千石で10本360円?)
 ケーブルには不要となったUSBケーブルを廃物利用した。(デジカメ、プリンタに付属していた不用品
 となった物)4芯とアースでちょうど5線入っている。ソケット半田付け部はホットボンドで補強した。
 ケーブルの長さは20cm以下にするのが安定した通信を確保するのに良いとされているので、
 今回は15cmにした。
 ~
 ★この情報は役に立ちましたか?
 #vote(はい[3],普通[0],いいえ[0])
 #vote(はい[4],普通[0],いいえ[0])
 
 #comment_nospam
 
 *ゼロプレッシャ ソケットの自作 [#w96c1225]
 
 &attachref(P1020044.JPG,zoom,150x150,button){新しい写真添付};
 
 写真の通り、PICkit2用の28ピンPIC用のゼロプレッシャ ソケットを自作した。 08/09/01
 しかし、上記のブレッドボード用ICSP・ICDケーブルがとても便利なため、このゼロプレッシャ
 ソケットはほとんど利用していないのが実情である。
 ~
 ★この情報は役に立ちましたか?
 #vote(はい[1],普通[0],いいえ[0])
 
 #comment_nospam
 
 *C言語でインサーキットデバッグ (MPLAB C18) [#f223a2a1]
 
 |&attachref(P1020060.JPG,zoom,150x150,button){新しい写真添付};|&attachref(C18ICD画面.JPG,zoom,150x150,button){新しい写真添付};|
 
 先に制作した、ブレッドボード用ICSP・ICDケーブルを利用して
 18F2320で、MPLAB C18にてインサーキットデバッグを確認してみた。 08/09/06
 
 テストプログラムは、前回16F887とHI-TECH C PRO(Lite mode)で確認した
 A/D変換値とスイッチ入力の様子をwatchウインドウで確認できるもの
 とした。
 
 結果:自作ICSP・ICDケーブルでICDが利用できる事が確認出来た。
 MPLAB C18のC言語でICDが利用できる事が確認出来た。
 
 Animateモードで動かしてみると、半固定抵抗の位置で、ADRESH, ADRESLの値が変化
 する様を目で確認できる事が確かめられました。
 
  /**
  * 18F2320でのPICkit2のICD機能の稼働テスト
  * watchウインドウで動いているPICのレジスタの変化の様子を観察する
  * A/D値で発光ダイオード(LED)の点滅間隔を変更する
  *
  * A/D:RA1 (10KΩ半固定抵抗で分圧しアナログ値を生成)
  * switch:RB4
  * LED:RC<7-0>
  * Clock: 8.0MHz 内蔵発振器使用
  *
  * C18 StudentEdition v3.21
  */
  #include <p18f2320.h>
  #include <adc.h>
  #include <delays.h>
  
  //config設定
  #pragma config OSC = INTIO2 //内部発振器を利用
  #pragma config WDT = OFF //ウォッチドッグタイマOFF
  #pragma config MCLRE = OFF //MCLRをOFFし、RE3として利用
  #pragma config DEBUG = OFF //デバッグを可にし、RB6,RB7はICD用に利用
  #pragma config LVP = OFF //低電圧ICSP制御OFF
  //その他のconfigはデフォルト設定のまま
  
  void
  main(void)
  {
      //使用変数の定義
      unsigned int result; //A/D値(10bit)の受け
      
      //PICの初期化
      OSCCON = 0b01110000; //内蔵発振器を8MHz使用に設定
      INTCON2bits.NOT_RBPU = 0; //PortBを内部プルアップ
      TRISA = 0b00000010; //PortAのRA1を1:入力に他は0:出力に設定
      TRISB = 0b00010000; //PortBのRB4を1:入力に他は0:出力に設定 
      TRISC = 0b00000000; //PortC 8個全て0:出力設定
      
      OpenADC(  //デフォルト値項目の記述省略は不可。全項目記述のこと。 
             //第1引数
             ADC_FOSC_8 & //AD変換用クロック:システムクロックの8倍 0.125μsec*8=1.0μsec             
             ADC_RIGHT_JUST & //変換結果の保存方法 右詰め
             ADC_0_TAD, //AD変換のアクイジションタイム選択 0Tad 
             //第2引数
             ADC_CH1 & //AD変換するのチャンネル選択(同時に複数のAD変換はできない)
             ADC_INT_OFF & //AD変換での割込み使用の有無 割込み無し
             ADC_VREFPLUS_VDD & //Vref+の設定 PICの電源電圧と同じ:ADC_VREFPLUS_VDD or 外部(AN3)の電圧:ADC_VREFPLUS_EXT
             ADC_VREFMINUS_VSS, //Vref-の設定 PICの0V:ADC_VREFMINUS_VSS or 外部(AN2)の電 圧:ADC_VREFMINUS_EXT
             //第3引数
             0b0111); //ポートのアナログ・デジタル選択 (ADCON1の下位4ビットを記載) AN0-AN7をアナログ、AN8-AN12をデジタル使用
      Delay10TCYx( 5 ); //50TCY待つ
      
      while (1)
      {
          if (PORTBbits.RB4 == 1) //switch up
          {
              ConvertADC(); //AD変換実行
              while (BusyADC()); //AD変換が終わるまで待つ
              result = ReadADC(); //AD変換値(10bit)読込み
              
              LATC = (unsigned short int)(result >> 2); //10bit A/D値の上位8bitをLEDで表示
          }
          else //switch down
          {
              LATC = 0b11111111; //LED 8個全て点灯 
          }
      }
  }
 ~
 ★この情報は役に立ちましたか?
 #vote(はい[0],普通[0],いいえ[0])
 
 #comment_nospam
 
 *ロジアナ機能を使ってみた [#i737312e]
 
 |&attachref(ロジアナ回路.jpg,zoom,150x150,button){新しい写真添付};|&attachref(ロジアナ38KHz.jpg,zoom,150x150,button){新しい写真添付};|&attachref(ロジアナ300us.jpg,zoom,150x150,button){新しい写真添付};|
 
 PICkit2に付いているロジックアナライザ(ロジアナ)機能を使ってみました。
 高速信号を扱うプログラムが正しく機能しているかを目で確認するのに非常に便利です。
 08/08/30
 
 ↓PICkit2ロジアナ機能の操作方法マニュアル
 http://ww1.microchip.com/downloads/en/DeviceDoc/PICkit%202%20Logic%20Tool%20User%20Guide.pdf
 
 赤外線通信用にPICのPWM機能を利用した赤外LEDを38KHz点灯のプログラムを書いて、
 検証してみました。
 
  【操作法Tips】
  ●信号間隔の測定法
  マウスの左クリックでXカーソル設定、右クリックでYカーソルを設定すると
  Y−Xの時間と周波数が画面に表示されます。 
 
 PICkit2のロジアナて見て測定してみると、38.46KHzでバースト点灯しているのが確認出 
 来ました。(写真2) 
 Delay_us()関数で点灯・消灯を300μ秒にするプログラムを書いたのですが、実測する 
 と440μ秒位になっているのが確認できました。(写真3) 
 
  //赤外線通信 38KHzバースト点灯
  //言語:MikroC v8.1.0 
  //PWMの初期化と起動 
  PWM1_Init(38000); //PWM1の初期化 (38KHz周期指定) 
  PWM1_Start(); //PWM1機能スタート 
  
  PORTC.F3 = 1; //パイロットランプLED ON 
  
  while (1) 
  { 
    PWM1_Change_Duty(127); //PWM1のDuty50%に設定 
    Delay_us(300); //300μ秒待つ 
    PWM1_Change_Duty(0); //PWM1のDuty変更 
    Delay_us(300); //300μ秒待つ 
  }
 
 ~
 ★この情報は役に立ちましたか?
 #vote(はい[5],普通[0],いいえ[0])
 
 #comment_nospam