問題タブ [pic24]

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 投票する
1 に答える
6187 参照

c - Microchip PIC24F マイクロコントローラの SPI 拡張バッファ モードを介してデータを正しく受信するにはどうすればよいですか?

外部 RF チップとの SPI 通信をプログラミングしています。マイクロコントローラは、Microchip のモデル PIC24FJ64GA102 です。

SPIの拡張バッファ モードを使用したい。

問題: 受信バッファから受信バイトを取得します。

使用される SPI 関数:

ここで呼び出し:

通信は問題なく、オシロスコープと SPI デコード モジュールでチェックされています。SPI バス上のデータは、上記のコメントのようなものです: sent 0x02 0x01 0xff 0xff、 received0x00 0x00 0x05 0x01ですが、上記の関数は受信バッファーからデータを正しく取得しません。私はすでにフラグと割り込みをチェックする多くのコンスタレーションをテストしましたが、最終的に得られる最良の結果は次のとおりです:(0x00 0x01最後のバイトのみが正しい)。

また、コードに影響を与えない (すべきではない) 2 つの SPI 問題が記載されているエラータ シートも既に確認しました。

私は一体何を間違っているのですか?!

ここで要求されているように、SPI1_put() 関数:

[最新の編集: 2015-02-05]

そのため、今日、私はこの特定の問題にもう少し時間を費やすことができ、エラッタ シートに記載されているバグにも対処しながら、ElderBug の提案を移植することにしました。

このコードは基本的に機能します。私が回避できなかった例外を除いて:

通信は次のように機能します。

  • 1byte: r/w-bit+length
  • 1byte:アドレス
  • 1~127バイト:データ

したがって、スレーブ チップから 1 バイトを読み取ると、つまり 3 バイト (rw+len、アドレス、ダミーバイト) を送信すると、in_bufバッファにあるデータは 0xFF になります。ここで奇妙なことに、何も変更せずにもう 1 バイト (バス上のダミー バイトを 1 つだけ) 読み取ると、私の最初のバイトin_bufは正しいデータを取得しています。しかし、私のプログラムはまだいくつかの点でスタックしているため、これは常に機能するとは限りません。

私はここにたくさんの疑問符を残して座っています。

2番目の奇妙なこと:8バイトを読み取り、最後のバイトまでバッファ内のデータが正しい、最後のバイトが0xFFである、0x00である必要があります。え?

PS: この問題のサポートのために、Microchip にチケットを提出済みです。

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

c - PIC24 読み取り ADC エラー

PIC24 を ADC コンバーターと連携させ、ボリューム ノブとしてポテンショメーターを使用するようにしようとしていますが、そのためには、ADC を読み取る必要がありますが、コードでは構築できません。質問の下部を参照してください。配線は正しく行われています。

MPlab では main.c にエラーは表示されませんが、プロジェクトをビルドすると、user.c にいくつかのエラーが表示されます。

いくつかのボタンと mdog ディスプレイを備えたボードに PIC24FJ64GB002 を取り付けました。

main.c

user.c

ビルド時のログ:

0 投票する
2 に答える
158 参照

pic - 24 ビット (任意の 24 シリーズ)pic マイクロコントローラーでプログラミングを開始するにはどうすればよいですか?

私は8ビットのマイクロコントローラでpicをプログラムしました。誰でも私にリファレンスマニュアル、24ビットシリーズのサンプルコードを提案できますか....?

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

pic24 - 32.768 PIC のセカンダリ オシレータ

PIC24fj64ga002 で 32.768Khz 秒の発振器を使用して、PIC の RTCC を利用しています。これまでのところ、私の RTCC コードは機能していますが、オシレータを正しく機能させることができません。RTCC を使用して LED を切り替えるために 1 分間のアラームを使用しましたが、約 13 秒で RTCC 割り込みが発生するため、何らかのエラーが発生します。セカンダリ オシレータについては、PIC の必要なピンに接続し、「OSCCONbits.SOSCEN=1;」を使用して有効にしました。秒オシレーターを機能させるために、さらに何かをする必要がありますか? ロジック アナライザを使用して発振器をチェックしましたが、信号がまったく得られません。しかし、1 分に設定されている間隔が 13 秒しか与えられないにもかかわらず、私の LED はトグルします。RTCC コードをテストしても、秒と分がはるかに速いペースで更新されているようです。RTCC コードを貼り付ける必要があるかどうか教えてください。

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

embedded - PIC24 SPI マスター モード - スレーブ選択の生成?

SPI マスターとして動作するPIC24は、ハードウェアでスレーブ選択信号を直接生成できますか? フレーム同期機能については知っていますが、フレーム全体でアクティブなチップ セレクトではなく、フレームの開始時に 1 つのパルスしか生成しません。

そうでない場合、他のどのコントローラーがそれを行うことができますか?

0 投票する
3 に答える
689 参照

c - PIC24F で UART バッファがフラグを立てない

RN42-XV Bluetooth モジュールを使用して、コンピュータから PIC24F に文字を送信しています。モジュールは正しく接続/ペアリングされており、送信される文字も正しいです (オシロスコープを使用)。

これが初期化される方法です:

また、この関数を使用してバッファの内容を取得しています。

問題は、プログラムが関数 waitForChar() 内で while ループに入らないことです。これは、UART 割り込みフラグがハードウェアによって決して上げられないためです。さまざまな PIC24F を試しましたが、すべて同じ問題が発生します。

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

math - 0xABCD - 0x1234 はキャリー ビットを設定する必要がありますか?

ここでこの質問に出くわしたとき、私は最終試験のために勉強していました:

質問

調べてみると、0x9999 という答えが返ってきました。これは、2 の補数で減算を実行すると、MSB にキャリーがあり、分岐命令がプログラムを loc1 に送信するためです。私の教授によると、答えは 0x9997 で、これはキャリー ビットが設定されていない場合にのみ可能です。調べてみたところ、キャリービットはここに設定する必要があったようです。私は何かを見逃していますか、それとも私の教授が間違いを犯しましたか?

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

uart - PIC24FJ128GA010 UART が動作しない

Explorer 16ボードで上記のpicコントローラーを使用しています。UART を構成しようとしていますが、機能していません。コードは次のようになります。

上記のコードは機能しません。メイン ファイルの構成ビットと Uart init 関数のみを初期化します。助けを求めています。

よろしくサンケット