PICマイコンのI/Oについて教えてください。
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;
}
}
補足
何も設定していません。 _RB4かPORTBbits.RB4(c30)も無理でした。。