問題タブ [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.
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 にチケットを提出済みです。
c - PIC24 読み取り ADC エラー
PIC24 を ADC コンバーターと連携させ、ボリューム ノブとしてポテンショメーターを使用するようにしようとしていますが、そのためには、ADC を読み取る必要がありますが、コードでは構築できません。質問の下部を参照してください。配線は正しく行われています。
MPlab では main.c にエラーは表示されませんが、プロジェクトをビルドすると、user.c にいくつかのエラーが表示されます。
いくつかのボタンと mdog ディスプレイを備えたボードに PIC24FJ64GB002 を取り付けました。
main.c
user.c
ビルド時のログ:
pic - 24 ビット (任意の 24 シリーズ)pic マイクロコントローラーでプログラミングを開始するにはどうすればよいですか?
私は8ビットのマイクロコントローラでpicをプログラムしました。誰でも私にリファレンスマニュアル、24ビットシリーズのサンプルコードを提案できますか....?
pic24 - 32.768 PIC のセカンダリ オシレータ
PIC24fj64ga002 で 32.768Khz 秒の発振器を使用して、PIC の RTCC を利用しています。これまでのところ、私の RTCC コードは機能していますが、オシレータを正しく機能させることができません。RTCC を使用して LED を切り替えるために 1 分間のアラームを使用しましたが、約 13 秒で RTCC 割り込みが発生するため、何らかのエラーが発生します。セカンダリ オシレータについては、PIC の必要なピンに接続し、「OSCCONbits.SOSCEN=1;」を使用して有効にしました。秒オシレーターを機能させるために、さらに何かをする必要がありますか? ロジック アナライザを使用して発振器をチェックしましたが、信号がまったく得られません。しかし、1 分に設定されている間隔が 13 秒しか与えられないにもかかわらず、私の LED はトグルします。RTCC コードをテストしても、秒と分がはるかに速いペースで更新されているようです。RTCC コードを貼り付ける必要があるかどうか教えてください。
embedded - PIC24 SPI マスター モード - スレーブ選択の生成?
SPI マスターとして動作するPIC24は、ハードウェアでスレーブ選択信号を直接生成できますか? フレーム同期機能については知っていますが、フレーム全体でアクティブなチップ セレクトではなく、フレームの開始時に 1 つのパルスしか生成しません。
そうでない場合、他のどのコントローラーがそれを行うことができますか?
c - PIC24F で UART バッファがフラグを立てない
RN42-XV Bluetooth モジュールを使用して、コンピュータから PIC24F に文字を送信しています。モジュールは正しく接続/ペアリングされており、送信される文字も正しいです (オシロスコープを使用)。
これが初期化される方法です:
また、この関数を使用してバッファの内容を取得しています。
問題は、プログラムが関数 waitForChar() 内で while ループに入らないことです。これは、UART 割り込みフラグがハードウェアによって決して上げられないためです。さまざまな PIC24F を試しましたが、すべて同じ問題が発生します。
math - 0xABCD - 0x1234 はキャリー ビットを設定する必要がありますか?
ここでこの質問に出くわしたとき、私は最終試験のために勉強していました:
調べてみると、0x9999 という答えが返ってきました。これは、2 の補数で減算を実行すると、MSB にキャリーがあり、分岐命令がプログラムを loc1 に送信するためです。私の教授によると、答えは 0x9997 で、これはキャリー ビットが設定されていない場合にのみ可能です。調べてみたところ、キャリービットはここに設定する必要があったようです。私は何かを見逃していますか、それとも私の教授が間違いを犯しましたか?
uart - PIC24FJ128GA010 UART が動作しない
Explorer 16ボードで上記のpicコントローラーを使用しています。UART を構成しようとしていますが、機能していません。コードは次のようになります。
上記のコードは機能しません。メイン ファイルの構成ビットと Uart init 関数のみを初期化します。助けを求めています。
よろしくサンケット