• ベストアンサー

uPD78F0730 P12端子がローのならない不具合

uPD78F0730 P12端子がローのならない不具合 uPD78F0730 P12端子をLowに使用と思い下のプログラムにしましたが、 ローになりませんでした。(1.83V)マイコンが壊れているのでしょうか。 #pragma SFR void main(void){ P1.2 = 0; //P12をLOWへ設定 PM1.2 = 0; //P12を出力モードへ } VDD=5V,ハイにはなります。

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8539/19417)
回答No.1

P12の初期状態が出力モードではない場合、P12を出力モードに設定する前の段階では、P12にデータを設定しても、書き込んだデータはラッチ(ピンに出力)されません。 つまり P1.2 = 0; //P12をLOWへ設定 の行は機能しません。 P12を出力モードに設定した直後、P12は「初期値(この場合はHIGHレベル)」になります。 PM1.2 = 0; //P12を出力モードへ の後に P1.2 = 0; //P12をLOWへ設定 を実行して下さい。

saladman
質問者

お礼

配線のミスによりプルアップ抵抗の抵抗値が低くなっていました。それを修正すると解決しまいた。ありがとうございました。

saladman
質問者

補足

ご回答ありがとうございます。 結果は変わりませんでした。 マイコン壊れていますよね。。たぶん。。 P1.2 = 0; PM1.2 = 0; の順にしているのは出力ラッチに0をセットしてからPM1.2=0で出力し、出力が不定の期間がないようにするためです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • マイコンを使ったダイオード点滅(PIC18F)

    こんばんは。 まだマイコンを使い始めて数週間のひよっこです。 ただいま,PIC18F2550をつかってダイオードの点滅(スイッチによる操作)をおこなっています。 以下にソースを示します。 /*RA0のスイッチによってRC0を点滅させるプログラム*/ ~condigは省略~ void ioport(){ //1->input,0-> output TRISC = 0; //RC => all out put TRISA = 0xFF; //PORTA all input LATC=0x00; } void high(){ PORTCbits.RC0 = 1; } void low(){ PORTCbits.RC0 = 0; } void main(void) { ioport(); while(1){ if(PORTAbits.RA0){ low(); } else{ high(); } } } RA0のON,OFFによってダイオードのON,OFFを行いたいのですが,入力ポートがうまく設定できてないせいか、常にON(high)になってしまいます。 すごく初歩的な質問でしょうが、 アドバイスをお願いいたします。

  • PICからの出力のHiとLowの出力をHi=+10V、Low=-10V

    PICからの出力のHiとLowの出力をHi=+10V、Low=-10Vの信号に変換したいのですが どんな部品でなんという回路を組めば良いでしょうか? トランジスタ何個とかどんな電源がいるとか簡単でもいいので教えて頂きたいです 電流は2アンペアくらい取れれば良いです。

  • PIC18F2550・コンパイルできない(再掲)

    初めて投稿します。 技術職(機械系)の会社員です。 マイコンプログラム作成歴:約3ヶ月のほぼド素人です。 現在、会社の技術研修でPIC18F2550を使ったライントレーサの動作プログラムを作成しています。先日までPIC16F84A&88でのプログラミングを行なっており、基本は理解できているつもりです。 …が、これまで見た事のないエラーコードが出てしまい、理由がわからず困っています。 エラーコードは、[1101]lvalue required と[1105]symbol '○○○' has not been defined というもので、コンパイラのユーザーガイドを見ると、変数(GIE,LATA0等)の認識ができない?エラーのようです。ヘッダーファイルのインクルードもしており、これまでの84A&88では出なかったエラーです。 webも調べましたが、わかりませんでした。 作成環境はMPLAB V8.36、MPLAB C18コンパイラV3.33 です。 エラーメッセージ画面添付、ソースコード掲載しますので、PICプログラムに精通されている方、間違い部分をご教授頂けないでしょうか? 何卒ご協力のほどよろしくお願いします。 --【以下、コード抜粋】-- //●使用マイコン:PIC18F2550 //===《初期設定》=== //---<ヘッダーファイル>--- #include<p18f2550.h> #include"delays.h" //---<コンフィグレーション>--- #pragma config PLLDIV = 5 #pragma config CPUDIV = OSC1_PLL2 #pragma config USBDIV = 2 #pragma config FOSC = HSPLL_HS #pragma config FCMEN = OFF #pragma config IESO = OFF #pragma config PWRT = ON #pragma config BOR = OFF #pragma config BORV = 3 #pragma config VREGEN = OFF #pragma config WDT = OFF #pragma config WDTPS = 1 #pragma config MCLRE = ON #pragma config LPT1OSC = OFF #pragma config PBADEN = OFF #pragma config CCP2MX = ON #pragma config STVREN = OFF #pragma config LVP = OFF #pragma config XINST = OFF #pragma config DEBUG = OFF #pragma config CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF #pragma config CPB = OFF, CPD = OFF #pragma config WRT0 = OFF, WRT1 = OFF, WRT2 = OFF, WRT3 = OFF #pragma config WRTB = OFF, WRTC = OFF, WRTD = OFF #pragma config EBTR0 = OFF, EBTR1 = OFF, EBTR2 = OFF, EBTR3 = OFF #pragma config EBTRB = OFF //---<関数宣言>--- void ioport(void); void interr(void); void pwm_settei(void); void move_A(void); void move_B(void); void delay_ms(long); //---<変数宣言>--- int c_flg = 0; //変数「c_flg」を宣言 //------------------------------------------------------------ //===《動作プログラム》=== //---<メイン関数>--- void main() { ioport(); interr(); pwm_settei(); while(1) { move_A(); } } //---<サブルーチン>--- void ioport(void) //[入出力ポート初期設定] { ADCON1 = 0b00001111; //A/D設定:全ポートデジタル TRISA = 0b00000000; //ポートA・I/O設定 TRISB = 0b11111111; //ポートB・I/O設定 TRISC = 0b00110000; //ポートC・I/O設定 } void interr(void) //[割り込み初期設定] { GIE = 1; //グローバル割り込み設定:許可 TMR2IE = 1; //タイマ2割り込み設定:許可 } --【途中省略】-- void move_A(void) //[動作A(直線&曲線走行モード)] { switch(PORTB) { case 0b01000000 : //センサB(内左)認識 CCPR1L = 100; //CCP1 Duty値設定 CCPR2L = 30; //CCP2 Duty値設定 LATC7 = 1; //モータR1:正転 LATA0 = 1; //モータL1:正転 LATC6 = 1; //モータR2:ON LATA1 = 1; //モータL2:ON break; --【以下続く】--

  • PICマイコン 動作せず、教えて下さい。

    PICマイコン初心者です。 PICマイコン(PIC16F877)をHI-TEC社のPICCでコンパイルして、Buildしたものを 焼き込んで電源印可しますが全然動作せず。  出力に設定しているピン(PORTB)の電圧をみると全て3.8Vぐらいになっています。(不定??)  ちなみに出力PinはVdd(5V) => 発光D => 抵抗 => PORTBと接続されています。  どこが悪いか教えて頂きたく。  *** ソース ファイル ****   #include"pic.h"   void main(void){ unsigned long i; TRISA = 0x00; TRISB = 0x00;   while(1){ PORTB = 0b11111111; //RB0をLowに設定 for(i=0;i<20000000;i++); PORTB = 0b11111110; //RB1をLowに設定 for(i=0;i<40000000;i++); PORTB = 0b11111101; //RB2をLowに設定 for(i=0;i<15000000;i++);          }        }

  • 三端子レギュレータによる電源の安定化

    マイコンに外部電源から電圧を送ろうとしているんですけど、入力電圧が6Vでマイコンが5Vまでしか流せないので三端子レギュレータ(TA7805)を使って電源を安定化させようとしているんですけど、入力電圧が6Vで出力電圧が5Vにするにはどれくらいのコンデンサをいくつ使えばいいんでしょうか?だれかわかる人教えてください。

  • PIC18F2550の外部入力割込みについて

    PIC18F2550で外部入力割り込みがちゃんと入るかどうかをチェックするため非常に簡単なサンプルコードを書いてみたのですが、mainの処理を行うだけで割り込みが発生しないのでどなたかご助力お願いします。(コンパイラ : MPLAB C18) 以前ほぼ同様の質問を掲載しましたが、解決につながる回答が得られませんでした↓ 長い間解決出来ず困り果てているので、有益な回答をいただけると幸いです。 mainのwhileループではLEDを点滅させ、スイッチを押せばINT2ピンに0Vが入力され、割り込みでLEDを点灯し続けるという主旨で以下のコードを書きこんで動作させました。 #include <p18f2550.h> #include <delays.h> #pragma config FOSC = INTOSCIO_EC, FCMEN = ON, IESO = OFF #pragma config PWRT = OFF, BOR = OFF, VREGEN = OFF #pragma config WDT = OFF, CCP2MX = OFF #pragma config PBADEN = ON, LPT1OSC = ON, MCLRE = OFF #pragma config STVREN = ON, LVP = OFF, XINST = OFF #pragma config CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF #pragma config CPB = OFF, CPD = OFF, WRT0 = OFF, WRT1 = OFF #pragma config WRT2 = OFF, WRT3 = OFF, WRTC = OFF #pragma config WRTD = OFF, EBTR0 = OFF, EBTR1 = OFF, EBTR2 = OFF #pragma config EBTR3 = OFF, EBTRB = OFF int i; int j; void high_isr(void); // リセットベクタ #pragma code reset_vector=0x1000 extern void _startup(void); void remapped_reset(void) { _asm goto _startup _endasm } #pragma code high_vector = 0x000008 void interrupt_high_vector(void) {_asm GOTO high_isr _endasm} #pragma code #pragma interrupt high_isr void high_isr(void) { //外部入力割り込みの処理はここに記述 for(j=0; j<10; j++) { LATCbits.LATC1 = 1; Delay10KTCYx(255); } INTCON3bits.INT2IF = 0; } void main() { OSCCON = 0b01111100; //システムクロックを8MHZに設定 TRISA = 0b01111111; //ポートAをすべて入力に設定 TRISB = 0b11111111; //ポートBをすべて入力に設定 TRISC = 0b00000000; //ポートCをすべて出力に設定 RCON = 0b10000100; INTCON = 0b10010000; INTCON2 = 0b10000000; INTCON3 = 0b10011000; //INT2ピンの立下りエッジで割り込み処理に移行する     while(1) { LATCbits.LATC1 = 1; Delay10KTCYx(255); LATCbits.LATC1 = 0; Delay10KTCYx(255); } } スイッチ入力時に0VがINT2ピンに入力されていることは確認できたので、プログラムの方に問題があると思われます。 回答お待ちしております。

  • トランジスタのVbeについて

    マイコンを使ってLED点灯、消灯の回路でスイッチとトランジスタを使っています。 トランジスタのVbeは約0.7Vだと思いますが、NPNトランジスタの場合、マイコンからHighの信号が例えば2.5Vの信号がきた場合トランジスタがONし電流が流れLEDが点灯、LowだとOFFのままになり消灯になります。 PNPトランジスタの場合は反対の動きかと思います。 Vcc(エミッタ側)が3.3Vでマイコンから2.5VのHigh信号を入れた場合、消灯せず点灯のままです。これはVbeとなにか関係しているのでしょうか。 ちなみLowの場合、点灯してます。 Highの2.5Vのときに消灯させたいのですが、Vbeとの関係があるとおもうのですが、理解できていません。 Vcc-0.7v=3.3V-0.7Vの2.6Vを超えないとHighと認識しないということになりますでしょうか。 Vccを低くするか、マイコンから2.5Vを例えば3.3V信号出力するものにして、2.6Vを超えればHighと認識して消灯するものでしょうか。

  • イヤホン端子の電圧

    イヤホン端子の出力をA/Dコンバータに接続して、 電圧を測定してみたのですが、思いの外振幅が小さい状態でした。 音量を最大にしても、0.13Vp-pと言う結果が出たのですが、 このくらいの電圧しか出てないものなのでしょうか。 ≪測定条件≫ 10bitのADCを使ったところ、peak to peak で40。 AVddが3.3Vなので、約0.13Vp-pになると思います。 回路は、Vdd - 220k - + - 220k - GND として、中点の電圧をつくり、 Vin - 0.1uF - + - ADC と、イヤホン信号をいれてます。 (+ マークのところで、上2つを接続)

  • PIC18F2550の割り込み処理について

    PIC18F2550を使って、外部入力割り込みがちゃんと入るかどうかをチェックするため非常に簡単なサンプルコードを書いてみたのですが割り込みが発生しないのでどなたかご助力お願いします。(コンパイラ : MPLAB C18) とりあえずスイッチを押せばINT2ピンに5Vが入力され、割り込みでLEDを点滅させるという主旨で以下のコードを書きこんで動作させました。 #include <p18f2550.h> #include <delays.h> #include <portb.h> #pragma config FOSC = INTOSCIO_EC, FCMEN = ON, IESO = OFF #pragma config PWRT = OFF, BOR = OFF, VREGEN = OFF #pragma config WDT = OFF, CCP2MX = OFF #pragma config PBADEN = ON, LPT1OSC = ON, MCLRE = OFF #pragma config STVREN = ON, LVP = OFF, XINST = OFF #pragma config CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF #pragma config CPB = OFF, CPD = OFF, WRT0 = OFF, WRT1 = OFF #pragma config WRT2 = OFF, WRT3 = OFF, WRTC = OFF #pragma config WRTD = OFF, EBTR0 = OFF, EBTR1 = OFF, EBTR2 = OFF #pragma config EBTR3 = OFF, EBTRB = OFF int i; void isr(void); #pragma code isrcode = 0x0000008 void isr_direct(void) {_asm GOTO isr _endasm} #pragma code #pragma interrupt isr void isr(void) { //外部入力割り込みの処理はここに記述 INTCON3bits.INT2IF = 0; for(i=0; i<10; i++) { LATCbits.LATC1 = 1; Delay10KTCYx(255); LATCbits.LATC1 = 0; Delay10KTCYx(255); } } void main() { OSCCON = 0b01110000; //システムクロックを8MHZに設定 TRISA = 0b1111111; //ポートAをすべて入力に設定 TRISB = 0b11111111; //ポートBをすべて TRISC = 0; //ポートCをすべて出力に設定 //ポートRB2の外部割込みON, 立上がりエッジでON, Bポートの抵抗プルアップOFF OpenRB2INT(PORTB_CHANGE_INT_ON & RISING_EDGE_INT & PORTB_PULLUPS_OFF); RCONbits.IPEN = 0; //割り込み優先制御OFF INTCON3bits.INT2IE = 1; INTCONbits.GIE = 1; //全割り込み許可 while(1); } しかし、スイッチを押しても割り込み処理に移行せず無反応のままです。 スイッチを押した時にINT2ピンに5V入力があることはテスターで確認したので、ソースコードの方に問題があるかと思います。 よろしくお願いします。

  • PIC 16F84A でLEDが点滅しない

    どんな事をしても、LEDが点滅しません何が原因なのかわかりません。何方か教えて頂けませんか。 環境は、Windowos8 MPLAB X IDE XC8 PICkit3  Pickit3対応ICSP書き込みアダブターです。 PICは PIC16F84A を使用しています。ソースコードは下記のようにしてあります。  #include <xc.h> // #pragma config statements should precede project file includes. // Use project enums instead of #define for ON and OFF. // CONFIG #pragma config FOSC = EXTRC // Oscillator Selection bits (RC oscillator) #pragma config WDTE = ON // Watchdog Timer (WDT enabled) #pragma config PWRTE = OFF // Power-up Timer Enable bit (Power-up Timer is disabled) #pragma config CP = OFF // Code Protection bit (Code protection disabled) #define_XTAL_FREQ 20000000 void main(void) { TRISA = 0x00; PORTA = 0x031; TRISB = 0x00; PORTB = 0x00; while (1) { PORTA = 0x02; Delay_ms(1000); PORTA = 0x01; Delay_(1000); } } ------------回路  PIC16F84A      ------------   18  RA1-----1Kオーム----- (K)LED(A)----←  5V      17  RA0----- 1Kオーム-----(K)LED(A)----←  5V     16  OSC1----             セラロック20MHZ -------- GND   15  OSC2----   14 VDD---------------← 5V    4  MCLR--------------← 5V 5 VSS----------------- GND   コンパイルも、書き込みもできましたが駄目でした。いろいろ試みましたが成功しません。 コンフィギレーションに決定的な間違いがあるのではないか?疑っております。 よろしくお願いいたします。