• 締切済み

dsPIC I/O信号入力

dsPIC33FJ128GP802について 「SOSCI/RP4(1)/CN1/PMBE/RB4」のピンでI/O信号入力を試してますが 正しく設定が出来ずに悩んでいます。 入力設定は 「_TRISB4 = 1;」で行ってます。 判断は 以下で行っています。 if( _LATB4 == 0 ){ }else{ } 何が誤っているのか教えて頂けませんか?

みんなの回答

  • no0101
  • ベストアンサー率0% (0/0)
回答No.1

もう判ってると思いますが、_LATB4じゃなくて_RB4かPORTBbits.RB4(c30)(経験者) それで駄目だったらSOSCI/RP4(1)/PMBEに余計な設定をしてる?

mindeyed
質問者

補足

何も設定していません。 _RB4かPORTBbits.RB4(c30)も無理でした。。

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

関連するQ&A

  • dsPIC PORTBbits.RB2がとれない

    dsPIC33Fにて以下のコードで PORTBbits.RB2の入力ポートが取得できません。 何故か分かる方、教えてください。 #include <p33FJ128GP802.h> int main (void){ PLLFBD=41; CLKDIVbits.PLLPOST=0; CLKDIVbits.PLLPRE=0; OSCTUN=0; _TRISB5 = 0; _LATB5 = 0; _TRISB2 = 1; _LATB5 = 1; while(1){ _LATB5 = PORTBbits.RB2; } }

  • dspicからpicへのUARTでの信号送信

    現在,dspic33fj32mc202を使用して回路を作成しています。 ピンの都合から、UART機能を利用して、dspicのTXピンから,pic16f690のRXピンに信号を送りたいと考えています。 しかしdspic33fは3.3Vで、pic16f690は5Vです。 上記のようなことは可能なのでしょうか?

  • dspicについて

    初めてdsPICを使用して回路を設計しています。 しかし、Aポートのうちの何本かのピンが、出力はできても 入力ができない状態になっています。 スイッチをつなげてon/offを行うと、ピンとGND間の電圧は変化しているようです。 また、TRISの設定は間違っていません。 使用しているのはdsPIC33FJ32MC202で、コンパイラはC30です。 わかる方がいらっしゃいましたらよろしくお願い致します。

  • dsPIC初心者からの質問です.

    dsPIC初心者からの質問です. dsPICのデータシートのピンの機能で「RPx(ペリフェラル ピン)」と書かれているピンは色々な機能を持たせることができると聞いたのですが,具体的な設定方法がわからず困っています.例えばRP20にQEIの機能を持たせたいのですが・・・どなたかご存知の方がいらっしゃいましたら教えていただけないでしょうか?

  • ワンチップマイコンPICによるLCD(液晶)の制御

    PICを使ってLCD表示の実験を行っています。 最終的には、dsPIC33FJ64GP706(64pin)でLCDを利用したいと思っています。 PICの参考書籍を見ながら、例題を用いて16F873や18f2680、dsPIC30f3013など5Vで駆動するPICではLCDの表示はできました。 しかし、なぜか3.3Vで駆動する24FJ64GA002やdsPIC33FJ64GP706ではLCD上にトーフが並ぶのみで、適切な表示ができません。 このときのプログラムが、0.5秒ごとに数字をカウントアップさせるものであり、この黒いトーフもそれに従い濃淡の点滅をしていますので、何らかの信号は伝わっているような気がします。 この場合はPICを3.3Vで駆動させて、LCD電源のみを5Vで供給しています。 この点について、わかる方がありましたら教えてください。 なお、コンパイラはccs-cを使用しています。 また、回路接続や信号については、24FJ64GA002やdsPIC33FJ64GP706では、プログラム上から任意のLEDを点滅させることを確認していますので、回路上のミスはないと思います。 24FJ64GA002では、内臓レギュレーターを使う(VDD3.3V、DISVREGとVSSはGNDへ、VDDCORE/VCAPは10ufを通してGND)の設定になっています。 dsPIC33FJ64GP706もDISVREGピンはありませんがほぼ同様の設定にしてあります。コンパイルする前のLCDを表示するプログラムはどのPICもほぼ同じものを使用して、へッダーファイルやPINの番号を変更しているのみです。 すべてPORT_Bを使用しています。クロックはいずれの場合もヒューズでHSを設定し、セラロックの20MHzを使用しています

  • PIC24FのPortBレジスタが書き込めません↓

    おはようございます。 PIC24FJ254GB106のTRISBを出力設定の0x0000に設定しPortBをたたくとLATBのレジスタ値は変化するのですがPortBのレジスタ値変化しません。↓ 何か単純な理由で上記の症状がおきるのでしょうか? 知ってる方いましたらヨロシクお願いします。

  • PICマイコン 割り込み実行時間 (遅延時間)

    PICマイコン 割り込みの実行時間について、教えてください。 PICマイコン初心者です。 いろんな方々のプログラム例を参照させてもらっています。 PIC18F1320 を使って、外部割り込みを試していますが、トリガー信号の立ち上が入るタイミングで、割り込み処理を行いますが、トリガー信号から、割り込み動作Hが立ち上がりのが、遅くて困っております。トリガー信号から、遅れが少なくなる方法を教えてください。下記に現在のプログラ C言語を示します。 ・ポートRB1の外部割込 立ち上がりトリガー。 ・ポートRB0、RB2の状態をbstatに入れてIF文で、出力RB6 Hを出力したい。 ・トリガー立ち上がりから、約2usecも遅れてRB6がHに。遅延を出来るだけ少なくしたい。 ・ if (bstat==0)時で約2usec、if (bstat==3)時で約4usecと差が出るのも、改善したい。 #pragma code high_vector=0x8 //高位レベル割り込み void high_interrupt (void){ _asm GOTO high_isr _endasm } #pragma code //デフォルトコードセクションに戻る #pragma interrupt high_isr //割り込み処理関数宣言 void high_isr (void){ INTCON3bits.INT1IE=0; //外部割込みINT1の禁止 // INTCONbits.PEIE=0; //低位割り込み禁止 INTCONbits.GIE=0; //全割り込み禁止 INTCON3bits.INT1IF=0; //INT1の割り込みフラグをリセット if (bstat==0){ LATBbits.LATB6=1; // Delay1TCY(); //wait Delay1TCY(); //wait Delay1TCY(); //wait LATBbits.LATB6=0; // Delay1TCY(); //wait Delay1TCY(); //wait Delay1TCY(); //wait } else if(bstat==1){ LATBbits.LATB6=1; // Delay1TCY(); //wait Delay1TCY(); //wait LATBbits.LATB6=0; // Delay1TCY(); //wait Delay1TCY(); //wait } else if(bstat==2){ LATBbits.LATB6=1; // Delay1TCY(); //wait LATBbits.LATB6=0; // Delay1TCY(); //wait } else if(bstat==3){ LATBbits.LATB6=1; // Delay1TCY(); //wait LATBbits.LATB6=0; // Delay1TCY(); //wait } INTCON3bits.INT1IE=1; //外部割込みINT1の許可 // INTCONbits.PEIE=1; //低位割り込み許可 INTCONbits.GIE=1; //全割り込み許可 } // メインプログラム void main (void){ TRISB = 0b00000111; // RB0/1/2:input TRISA = 0xFF; // ALL A input // PORTB = 0; PORTA = 1; bstat= ((PORTBbits.RB0+0)+(PORTBbits.RB2*2));// RB0とRB2の状態を読み込み OpenRB1INT(PORTB_CHANGE_INT_ON & // ポートRB1の外部割込みオン RISING_EDGE_INT & //立上りエッジでオン PORTB_PULLUPS_OFF //Bポートの抵抗プルアップOFF ); RCONbits.IPEN=1; //割り込み優先順位制御ON(0:優先順位制御OFF) INTCON3bits.INT1IP=1; //INT1の割り込みを高順位割り込みにセット INTCON3bits.INT1IE=1; //INT1の割り込みを許可 INTCON2bits.INTEDG1=1; //立上がりエッジでオン // INTCONbits.PEIE=1; //低位割り込み許可 INTCONbits.GIE=1; //全割り込み許可 while (1) PIC関係サイトを探しても、割り込みでの遅れ時間については、ヒントがありませんでした。 相当な遅れは、あきらめるしかないのでしょうか? ご存知の方、アドバイスをお願い致します。

  • 組み込みシステムでの、信号線とI/Oポートの違い

    こんにちは。 組み込みシステムに関する勉強をしている時、スタートアップルーチンに関する、 以下のような文章を見つけました。 スタートアップルーチンでは、これらの周辺機器やCPU内蔵レジスタが動作可能になるように、初期化を行います。 特にマルチプレクサ(複数の信号を受け、それらを選択したりまとめたりして、一つの信号として出力する装置や端子)は、その端子が信号線(信号を伝えるための線)として使われるのか、あるいはI/Oポート(CPUが周辺機器にデータを送受信するために使う窓口)として使われるのかを設定し、さらにI/Oポートとして使われる場合は、それが入力ポートか出力ポートかまで設定する。 信号線もI/Oポートも、データをやり取りするために使われるものだと思うのですが、 一体何が異なるのでしょうか?

  • PIC24F C言語プログラミングについて

    PIC24Fについて こんにちわ PIC24Fの勉強をしています。 使っているPICはPIC24FJ64GA002で、コンパイラは MPLAB IDE,C30 です。 現在LEDを2つ使って、異なるタイミングで点滅させるプログラムを作りたいと思っています。 参考書に載っていたプログラムを参考にして、1つのLEDを点滅させることはできました。 下にそのプログラムを書きます。 #include "p24FJ64GA002.h" /// コンフィギュレーション ビットの設定 _CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF & ICS_PGx1& FWDTEN_OFF ) /// 8MHz*PLL4=32MHz (Full Speed) _CONFIG2( IESO_OFF & FNOSC_FRCPLL & FCKSM_CSDCMD & OSCIOFNC_OFF & IOL1WAY_OFF & I2C1SEL_PRI & POSCMOD_NONE) int main(void) { CLKDIV = 0; // クロックの分周1:1に設定 AD1PCFG = 0xFFFF; // ポートA全ディジタルに指定 /// ポートの入出力モード設定 TRISB = 0; // ポートB を出力に設定 /// タイマ1の設定 FOSC=16MHz,プリスケーラ 1:256, 200msec=5Hz PR1 = 12500-1; // 16000000/5/256=12500 T1CON = 0b1000000000110000; /// メイン ループ while(1) { if(IFS0bits.T1IF) // タイマ割り込みチェック { IFS0bits.T1IF = 0; // 割り込みフラグクリア /// LEDの反転制御 LATBbits.LATB15 = !LATBbits.LATB15; } } } 2つの点滅のタイミングをずらすために、またさらにPRレジスタ(PR2)を付け加え、適当な値にします。 すると、割り込みフラグT2IFビットがセットされると思います。 そこでさらにもう一つif文をつけ、同様の書式で異なるピンにLATを割り振ってやれば異なるタイミングで割り込みが起きるというやり方でやろうと思っています。(まずこれで正しいのかどうかもわかりませんが・・・。) ですがそれ以降がよくわかりません。 まず if文の中に入っている(IFS0bits.T1IF)とはどういう意味を持っているのでしょうか? C言語にも疎く、if文に=や不等号などの条件が入っていないものを見るのも初めてです。 この他、○○bits.○○ というような書き方が手持ちの参考書に頻出している上に、まだ読んでいる途中ですので何とも言えませんが、どこにも詳しく書いてありません。 LATBbits.LATB15 = !LATBbits.LATB15 くらいならなんとなく想像はつきますが書式もいまいちわかりません また、 同様にif文を使ってやる場合、IFSxレジスタは何を使えばいいのでしょうか? 割り込みベクタテーブル表を見ると、使っているタイマ1の割り込みフラグがIFS0<3>となっていましたので、PR2によりセットされたT2IFと合わせて if(IFS0bits.T2IF)~ と適当に入力してみましたが、シミュレータでもうまくいきません。 分かりづらい文章かと思いますが、よろしくお願いします。

  • 入力チェックをしたいです。

    結構初心者です。 フォームに入力された内容をチェックしたいので、まず下記のように書きました。 <script Language="JavaScript"> <!-- function submitCheck(){ var flag = 0; // 設定開始(必須にする項目を設定します) if(document.insert.MatterID.value == ""){ flag = 1; } else if(document.insert.name.value == ""){ flag = 1; } else if(document.insert.Correspondencedate.value == ""){ flag = 1; } if(flag){ window.alert('必須項目に未入力があります。'); // チェックされていない場合は警告ダイアログを表示 return false; // 送信を中止 } else{ return true; // 送信を実行 } } --> </script> で、これにチェックボックスの入力チェックも含めたいのですが、ただ else if(document.insert.bld_ReceiptNo.checked){ flag = 1; } こうするだけではダメなのですね;; どうすればいいかお知恵を拝借できませんでしょうか。

このQ&Aのポイント
  • Steamの「Big Picture」モードはゲームに影響を与えるのか?運転シミュレーションゲームのEuro Truck Simulator 2でプレイしている人が、「Big Picture」モードへの変更を紹介しているが、実際にゲームのプレイにどのような効果があるのか疑問に思っている。
  • 「Big Picture」モードはSteamクライアントの画面を変更し、ゲームコントローラーでの操作をしやすくすると言われているが、ゲーム画面自体には影響を与えるのかどうかは不明である。
  • あくまでSteamクライアントの機能であり、ゲーム自体はゲームコントローラーに最適化されるわけではない可能性がある。実際にプレイしてみなければ、ゲームへの影響はわからない。
回答を見る