dポイントプレゼントキャンペーン実施中!

PIC16F1936を使っています。
各ポートをデジタル出力にしLEDを順に点灯させていますが
RB0に接続したLEDのみうっすらとしか光りません。
(プログラムで意図したとおり点滅はします。)
テスターで電流を計測したところRB0のみほとんど流れていませんでした。

また電源投入時にRB0に接続したLEDだけ一瞬光ります。
PICは初期状態でI/Oは入力になっているので光らないと思うんですが・・・
MPLABX+XC8で開発しています。

以下の切り分けを行いました。
・LED単体での点灯:正常点灯
・他のLEDをRB0に接続:現象再現
・他のブレットボードで作動:現象再現

データシートとかなり睨めっこしたんですがそれっぽい部分がみつかりません
ご教示いただけると助かります。


ソースは以下のとおりです。

#include <xc.h>
#pragma config CLKOUTEN = OFF,\
WDTE = OFF,\
PWRTE = ON,\
CP = OFF,\
BOREN = OFF,\
FCMEN = OFF,\
MCLRE = ON,\
CPD = OFF,\
IESO = OFF,\
FOSC = INTOSC,\
STVREN = OFF,\
BORV = LO,\
LVP = OFF,\
VCAPEN = OFF,\
WRT = OFF,\
PLLEN = ON

#define uchar unsigned char
#define uint unsigned int

void init(void){

//ポート初期化
PORTA = 0b00000000;
PORTB = 0b00000000;
PORTC = 0b00000000;
PORTE = 0b00000000;

TRISA = 0b00000000;
TRISB = 0b00000000;
TRISC = 0b00000000;
TRISE = 0b00000000;

//全てデジタル
ANSELA = 0b00000000;
ANSELB = 0b00000000;

//8mhz
OSCCON = 0b11110000;

OPTION_REG = 0b00000000;

APFCON = 0;
WPUE = 0;

}


void Wait(unsigned int num){

for (int i=0 ; i<num ; ++i) {

for( int j = 0; j < 100; ++j){

NOP();

}

}

}


void main(void){

init();

while(1){

PORTC = 0b00000100;
Wait(1000);
PORTC = 0b00000000;

PORTB = 0b00001000;
Wait(1000);

PORTB = 0b00100000;
Wait(1000);

PORTB = 0b00000001;
Wait(1000);
PORTB = 0b00000000;

}


}

A 回答 (2件)

RB0ポートが故障している可能性が高いです、PIC_I/Oポートは±25mAまでです (RB0が出力ポート時にVCC or GND or 他の出力ポートに接続すると壊れます)


確認方法
(1) 他のPICに換えてみる
(2) RB0を他のポートに切り換えてプログラムを実行し、正常ならばRB0の不良


確認してみて下さい。
    • good
    • 0
この回答へのお礼

お礼が遅くなりすみません。

同型のPICが手元になかったので新たに買ってきました。
早速試したのですが仰られた通りRB0が故障していたようです。

意図したとおり動くようになりました。
今までこんな事もなくガッツリ悩んでしまっていたので本当に助かりました。

ありがとうございました。

お礼日時:2014/11/20 23:47

PICの出力ポートは、添付画像に描いたような回路になっています。

大まかにはこんな感じです。まちがってたらすみません。

回路にミスがなければ、RB0ポートのFETが壊れている可能性があります。
FETは過電流が流れると、徐々に破壊がすすみ抵抗値が高くなり最終的にはオープンモードで壊れます。
壊れる途中の段階だと、ポートに負荷を繋いだときのの出力電圧が低くなることが、分かるのではないでしょうか。
「PICマイコンのI/Oについて教えてくだ」の回答画像2
    • good
    • 1
この回答へのお礼

お礼が遅くなりました。

何度かブレットボードで指し直したりしていたのでその時間違って電源をRB0に接続してしまったかもしれません。
(RB0の隣だったのやってしまったと思います。)
仰られているとおりある意味回路のミスですね。

具体的に図まで添付していただきありがとうございました。
FETが壊れるなんて考えた事もなかったのでご説明いただき勉強になりました。
今後に活かさせていただきます。

本当にありがとうございました。

お二方にBAを差し上げたいのですが残念ながら出来ないので
回答順で付けさせて頂く事をお許しください。

お礼日時:2014/11/20 23:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!