問題タブ [pic18]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
298 参照

c - PIC18F27J53 用 USB ドライバの使用

PIC18F27J53 を使用して Nintendo Entertainment System コントローラからの出力をデコードし、それを USB 互換の HID ジョイスティックとして使用しようとしています。

出力を 1 秒間に 60 回読み取り、各ボタンのステータスを 8 ビットの符号なし char の 1 ビットとして格納することに成功しました。PIC と NES コントローラの両方に USB の 5V と Gnd を使用しています。RB1 経由でラッチ信号を送信し、RB2 経由でクロックを送信し、RB0 経由でデータを読み込みます。

http://www.mit.edu/~tarvizo/nes-controller.html

http://ww1.microchip.com/downloads/en/DeviceDoc/39964B.pdf

ここで私が助けを必要としています: USB データラインとのインターフェース方法を考え出すことです。Microchip USB C ライブラリをダウンロードしましたが、どこから始めればよいかわかりません。C18 コンパイラを使用して MPLAB X IDE でプログラミングしています。

0 投票する
0 に答える
326 参照

port - PIC18F26J13、PORTB にマッピングされた SPI2 が機能しない

私は 18f26j13 のプロジェクトに取り組んでおり、MSSP1 に I2C が必要で、MSSP2 に SPI が必要です。I2C は完全に動作しますが、SPI をポート B で動作させることはできません。それらをポート c にマップすると、完全に動作するため、ポート b で無効にしないものがあると考えています。

ピンをポート B に再マップし、ピンを ANCON でデジタル I/O として設定し、ofc で RB4 の tris ビットを設定します。

私はすべてを試したような気がしますが、明らかな何かが欠けていると感じています。誰かが助けてくれることを本当に望んでいます:)

編集:ああ、忘れていました... SCK2 / RB3でクロックを測定し、SDO2 / RB5でパルスを測定できるので、問題はRB4にあるようです...

EDIT2:まあ、私は間違っていました、問題はRB5にあります.SDO2をRB2にマップすると動作しますが、RB5に接続する必要があるため、まだ問題があります...

0 投票する
1 に答える
102 参照

c - PIC18 のオペコードを変更する

私は C 言語を使用してプログラムを作成しました。このプログラムでは、特定のアドレスへのポインターによってアクセスでき、オペコードはそれを出力できました。この方法を使用して、自己修正コードを作成しました。8086 でこれを行いました。建築。マイクロコントローラ PIC18F2550 で実行したいです。Mplab C18 3.46 で Mplab IDE 8.92 を使用しています。マイクロコントローラでこれを実行したことはありません。8086 とは異なり、ここではオペコードにアクセスできません。ポインタはオペコードのアドレスです。ただし、戻り値は 0X00 です。これはコード サンプルです。

![mplab からの画像]この画像は値1を示しています

0 投票する
1 に答える
1702 参照

uart - RealTerm について: シリアル キャプチャ プログラム 2.0.0.70

RealTerm Serial System の使用に問題があります。このソフトウェアを GUI として使用して、UART 経由で PIC18F46J50 マイクロコントローラと通信したいと考えています。最初に、エコー機能をプログラムしたいのですが、GUI の上半分の空の領域を使用して新しい単語を入力できないことがわかりました。オンラインの情報によると、この領域に文字を入力することは許可されているようです。

この小さな問題を解決できる人はいますか? この質問について心配してくれてありがとう。

敬具ティンバージャック

0 投票する
1 に答える
2884 参照

c - C18 char 配列を関数に渡す

私は C プログラミングとマイクロコントローラーが初めてです。C18 を搭載した PIC18F24K20 マイクロコントローラーを使用しています。USART 送受信機能を使用してコンピュータ入力から情報を受信するようにセットアップしました。私の目標は、受信した単語を既知の単語と比較し、受信した単語に基づいて何かをコンピューターに送信することです。以下は関連するコードです。

コードは現在、何が問題なのかを判断するためにテストするように設定されています。そのまま実行すると、マイクロコントローラーが CommTransmit 関数を実行したかのように、コンピューターは「t」を受け取ります。ただし、「g」は送信されません。USART_transmit('g') 呼び出しを CommTransmit 関数の外側と if ステートメントの後に入れても、呼び出されることはありません (strcmppgm2ram 関数でスタックするように?) が、それでも 't' を送信します。

CommTransmit関数にブレークを入れて1行ずつ実行すると、正常に動作するように見えるため、これも奇妙です。しかし、MPLAB IDE 内で CommVariable を見てみると、本来あるべきものではありません (ただし、関数に呼び出される前の 'buf' 変数は正しいものです)。私が知る限り、私が見るときの CommVariable の値は、配列のサイズに依存します。

読んでみると、マイクロコントローラーが変数を格納する方法(プログラムとデータメモリの違い)が原因である可能性があると思いますが、よくわかりません。どんな助けでも大歓迎です!

編集: CommTransmit 行の前の else ステートメントで T = strcmppgm2ram 行のコメントを外すと、正しく動作することも追加する必要があります (2 つの文字列が同じ場合は T = 0)。関数を介して配列を渡すと、配列が変更され、strcmppgm2ram 関数が正しく機能しなくなると思います。

0 投票する
0 に答える
574 参照

serial-port - USART PIC18F45K20 受信データ割り込みの問題

私は現在、私のマイクロエレクトロニクス クラスの ARV を設計しており、PIC18f45k20 に USART を実装する必要があります。これまでのところ、優先度の高い割り込みで最初の文字を RCREG に受け取ることができました。ただし、割り込みサービス ルーチンを終了し、プログラムがメイン ループに戻ると、USART は再び割り込みを行わず、他の文字は受信されません。正しいデータを受信して​​いるように見えるため、割り込みと関係があると思われます。この問題に関するヘルプはありますか? 以下は私のコードです。