2025年5月16日金曜日

pickit3 on mplab x ide 6.2でうごいた(pic16f1827,16f18313をLVP=ONにするため必須だった)

 http://blog.livedoor.jp/yokoshima_m/archives/27109112.htmlにもあったが、

MPLAB X IDE v6.25では、PICkit3がサポートされなくなったようです。以前のバージョン(v6.20)では動作していたものの、v6.25以降はGen3ツール(PICkit3、MPLAB ICD 3、MPLAB REAL ICEなど)が非対応になったとのことです。

もしPICkit3を使い続けたい場合は、MPLAB X IDE v6.20にダウングレードするか、PICkit4またはPICkit5にアップグレードするのが推奨されています。

上記のcopilotのアドバイスでwindows11に6.25と別に6.2を入れたら動いた

https://aisumegane.com/how-to-start-pic-microcontroller/ 

にあるようにpower=4.625vにした

(IDEから5vは認識できない4.625vを認識したとでたので)

このサイトにあるようにmpu切り欠きをJ2のそばの30にあわせること!

(1827,18313の場合 つまりミッドレンジ8ビットの場合だが)

矢印がmclr、以下vcc,gnd,pgd,pgcだった,mclrとvccは10kΩの抵抗でつないだ工作あり
(出所不明だが、たぶん吉野さんからの情報)上記の接続だが、しっかりつながんと
よく失敗する 今後はsnapへ移行!(LVP=onで焼き直したのでOKになった)

http://zattouka.net/GarageHouse/micon/MPLAB/16F1827/LEDblink/LEDblink.htm より

#include <xc.h>

#define _XTAL_FREQ  8000000     // delay用(クロック8MHzで動作時)

// コンフィギュレーション1の設定
#pragma config FOSC = INTOSC    // 内部クロックを使用する(INTOSC)
#pragma config WDTE = OFF       // ウオッチドッグタイマー無し(OFF)
#pragma config PWRTE = ON       // 電源ONから64ms後にプログラムを開始する(ON)
#pragma config MCLRE = OFF      // 外部リセット信号は使用せずにデジタル入力(RA5)ピンとする(OFF)
#pragma config CP = OFF         // プログラムメモリーを保護しない(OFF)
#pragma config CPD = OFF        // データメモリーを保護しない(OFF)
#pragma config BOREN = ON       // 電源電圧降下常時監視機能ON(ON)
#pragma config CLKOUTEN = OFF   // CLKOUTピンをRA6ピンで使用する(OFF)
#pragma config IESO = OFF       // 外部・内部クロックの切替えでの起動はなし(OFF)
#pragma config FCMEN = OFF      // 外部クロック監視しない(FCMEN_OFF)

// コンフィギュレーション2の設定
#pragma config WRT = OFF        // Flashメモリーを保護しない(OFF)
#pragma config PLLEN = OFF      // 動作クロックを32MHzでは動作させない(OFF)
#pragma config STVREN = ON      // スタックがオーバフローやアンダーフローしたらリセットをする(ON)
#pragma config BORV = HI        // 電源電圧降下常時監視電圧(2.5V)設定(HI)
#pragma config LVP = ON        // 低電圧プログラミング機能使用するにした(snapでも使えるように!)

// 指定した時間(num x 10ms)だけウエイトを行う処理関数
void Wait(unsigned int num)
{
     int i ;

     // numで指定した回数だけ繰り返す
     for (i=0 ; i<num ; i++) {
          __delay_ms(10) ;     // 10msプログラムの一時停止
     }
}
// メインの処理関数
void main()
{
     OSCCON = 0b01110010 ;     // 内部クロックは8MHzとする
     ANSELA = 0b00000000 ;     // AN0-AN4は使用しない全てデジタルI/Oとする
     ANSELB = 0b00000000 ;     // AN5-AN11は使用しない全てデジタルI/Oとする
     TRISA  = 0b00000000 ;     // ピン(RA)は全て出力に割当てる(RA5は入力のみとなる)
     TRISB  = 0b00000000 ;     // ピン(RB)は全て出力に割当てる
     PORTA  = 0b00000000 ;     // RA出力ピンの初期化(全てLOWにする)
     PORTB  = 0b00000000 ;     // RB出力ピンの初期化(全てLOWにする)

     // 約1s毎にLEDの点滅を繰り返す

	while(1) {
          RB4 = 1 ;            // 10番ピン(RB4)にHIGH(5V)を出力する(LED ON)
          Wait(100) ;          // 1秒ウエイト
          RB4 = 0 ;            // 10番ピン(RB4)にLOW(0V)を出力する(LED OFF)
          Wait(100) ;
    }
}
これで焼き直した1827/18313だがsnapで焼けるはず。。。楽しみだ 
pickit3は焼きが不安定なのでLVP=OFFで焼いてしまったときの焼き直しくらいにしておこう

0 件のコメント:

コメントを投稿