問題タブ [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 投票する
3 に答える
755 参照

serial-port - UART 3 が 5 番目のバイトを受け入れない

問題のチップはPIC24FJ256GB210です

100 ピン TQFP フォーム ファクターです。

2 つのマイクロプロセッサを搭載した組み込みシステムがあります。

2 つのマイクロプロセッサは、PIC24 の UART #3 にマップされている (私によると) UART を使用して通信します。

UART #3 に 4 バイトを配置します。すべてうまくいきます。5バイト目は入りません。

FIFOバックアップと言います。

私の地元のハードウェアの専門家は、フロー制御をオフにすると、何があってもバイトが送信されると言っています。

これは本当ですか ?私は前にそれを聞いたことがありません。反対側のハードウェア信号だと思いました。つまり、FIFO バッファがこちら側にスペースを確保する前に、読み取り信号が反対側で発生する必要があります。

「フロー制御をオフにする」という彼の定義は、RTS (Request to Send) または CTS (Clear To Send) ピンをボード上の対応する物理ピンにマップするために PPS (Peripheral Pin Select) を使用しないことです。

私はそれをしました。結果: 変化なし。FIFO バッファはまだいっぱいです。4 番目のバイトが入った後、「#UTXBF」ビットがクリアされることはありません。

物理ピンに番号とラベルを付けた回路図があります。

私はソース コードと MpLab を持っており、レジスタ レベル、アセンブリ言語の命令自体で実行可能ファイルを表示しています。

UART #2 と UART #1 をマッピングする方法とまったく同じ方法で UART #3 のピンをマッピングしており、他の 2 つのピンは両方とも完全に機能します。

番号は異なりますが、命令シーケンスは同じです。番号はピンと一致します。

これを 3 度目にデバッグし、各レジスタの各ビットを監視し、それらをマニュアルと比較して、正しい特殊機能レジスタの正しいビット位置に正しい対応する番号があることを確認します。

これは MpLab の逆アセンブラー ウィンドウからのもので、オペコードはどのビットが設定され、クリアされているかを正確に示しています。

実行後、RPOR6(これはUart_3_Tx_PPS_Output_Register)が含まれています0x1C06

これは、マスクとパターンの作成に使用される inc ファイルからのものです。(実際の指示を含むソース ファイルに数値をハード コーディングすることは避けようとしています。)

その知識をファミリ データ シートのこれらのメモと組み合わせて、意味のある名前の定数を作成しました。

ファイルから:「p24FJ256GB210.inc」(引用符なし)

結局のところ、UART の反対側の PIC は、私がこちら側に入力した最初のバイトを認識しないようですRTSCTS

間違ったビットを間違った場所に置いたところを誰かが見ていますか?

現時点では、この質問に自信を持って「はい」または「いいえ」と答えることはできません: UART #3 TX 機能は、100 ピン TQFP 構成の PIC24FJ256GB210 の物理ピン 23 に正しく接続されていますか?

ここで何が起こっているのかを特定できたら、どうもありがとう。

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

uart - UTXEN は設定されません

チップはPIC24FJ256GB210

UART #3 の #UTXEN ビットは設定されません。

まったく同じ命令シーケンスを使用して、UART #1 で問題なく設定されます。UART #2 も同じです。

動作...

失敗...

だから私は、「ああ、それは私が欲しい単一のビットであり、すべての読み取り専用ビットの上に完全な単語が移動すると、どういうわけか問題が発生します。単一のビットセットを実行します」と考えました。

いいえ、まだそのビットを設定しません。

失敗...

- アップデート -

MpLab でビットを設定できます。違いは何ですか?

私は本当に混乱しています。そのビットが設定されないようにするために、他に何が関係している可能性がありますか?

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

embedded - PIC24 メモリ アクセスの読み取りまたは書き込みでのブレークポイント

私の環境...

  • PIC24
  • MPLab (V.8.80)
  • ICD3

どのルーチンが読み取りを行っており、どのルーチンが実際に書き込みを行っているか、またそれがいつ発生するかを確認するために監視したいバイトがあります。

ブレークポイントしか設定できません

  • バイトが書き込まれるとき、または
  • それが読まれるとき

どちらのアクセスにもブレークポイントを設定できる方法を知っている人はいますか? つまり、何が書かれていて、何が読まれているのか、どの順序で、どの命令によって、どのルーチンで行われるのかを監視したいのです。

私が持っているのは、PICkit 3 とこの ICD-3 だけです。これは、2 つのチップがそれぞれの UART に接続された (最終的にはペリフェラル ピン選択を介して) いくつかのワイヤを介して通信するデュアル プロセッサ システムです。

私は本物の氷を使ったことも、触ったことも、見たこともありません。それは私がこれを行うことを可能にしますか?つまり、任意のバス メモリ アクセス。

これが MpLab が ICD-3 で今できることです ここに画像の説明を入力

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

c - MpLab、ASM、C、Building両方に対応

PIC24チップ用の大規模で実質的なASMプロジェクトがあります。(特定のチップはPIC24FJ256GB210です)

私は今、Cで他のいくつかのルーチンを持っています。

これらを自分のプロジェクトに取り入れたいと思います。

Cルーチンは、5つほどのファイルのプロジェクトにあり、そのうちの1つにint main(void)は開始点としてステートメントが含まれています。これは、それらをテストし、それらが機能するという自信を与えることを目的としていました。これで、そのコードを移動して、より大きな既存のシステムに組み込む準備ができました。

アセンブリ言語のものは、__reset:命令から始まります。

次の3つのことを実行できるように、プロジェクトとビルドオプションをどのように調整しますか?

  • 私の__reset指示から始めてください
  • (または、少なくとも私の既存__resetのものとint main(void)少なくとも互いに協力していることを確認してください)
  • ASMコードから彼のルーチンを呼び出す
  • Cコードが設定するのと同じデータバッファを使用します

興味深いことに、Microchipのユーザーフォーラムとサンプルコードセクションは、このアイデアを見逃しているようです(または、おそらく、それらを見つける方法がわかりませんでした)。

この質問はよく聞かれていると思います。前の質問と重複していないことを願っていますが、ここにもMicroChipのサイトにも表示されていません。このトピックに関する役立つWebサイトへのリンクを歓迎します。

このサイトや他のサイトをより適切に検索する方法を学ぶ必要がある場合、それ自体が有用で実行可能な答えになります。繰り返しますが、私が重複した質問をしていないことを願っています。

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

c - MpLab C、アセンブリ、割り込み定義の競合

いくつかの新しい C ソフトウェア ルーチンを、既存のアセンブリ言語の配置と一緒に配置しています。

私はこれらのエラーを見つけています

U1RXInterruptいつ、どこで、どのように C コンパイラにアセンブリ ルーチンを持たせることができますか? 同上U2RXInterrupt

更新、2013 年 3 月 13 日

Cコードでこれを見つけました。これが私の問題の原因ですか? 私がこれを取り除けば、私の紛争は終わりますか?

アセンブリ言語ルーチンで UART 1 を処理したい

U2RXInterrupt(void) の同様のハンドラーが見つかると思います

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

c - C の Unsigned Long は PIC24 アセンブリ言語ではどのように見えますか?

PIC24 の C で定義された変数があります。

(Cファイル内の)変数の名前がThe_Number_Of_Bytes

PIC24 の C コードでは、このように定義されています....

指定されたバイトの配列にバイトDATABUF01が含まれる場合に呼び出されThe_Number_Of_Bytesます (暗黙の冗長性については申し訳ありません)。その数のバイトを正確に処理してから停止する必要があります。

この数は 65535 未満になると確信しているので、なぜ unsigned long なのかは別の議論に委ねます。今のところ、知りたいです。どちらが上位語でどちらが下位語ですか? (longさらに言えば、PIC24 Cの32ビット数ですか?)

誰かが私に教えてくれませんW2W3?

誰かが unsigned long int の Hi / Low オーダーについての私の考えを確認または修正してもらえますか?

編集コメンターがこれを要求しました。質問に答えるかもしれません(コメントは私のものです)

リクエストコメント、サイズは4バイトのようです、これから...

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

microchip - pic24のボーレート調整

19200 ボーでデータを出力するデバイスがあります。pic は SPBRG=12 BRGH=0 で構成されており、開始ビットと停止ビットが考慮されています。

それにもかかわらず、写真は正しいデータを受け取りません! 送信されたデータは、ハイパーターミナルとオシロスコープで検証されています。

エラーが見つかりません!いまいましい助けはありますか?

どうも

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

android - PIC24 マイクロコントローラの USB ホスト初期化 (controlTransfer)

私は、Android の USB ホスト機能を利用してマイクロ コントローラ ベースのデバイス (PIC24FJ64GB002) と通信するアプリケーションに取り組んでいます。このデバイスには Microchip 社の USB スタックが搭載されており、Windows でのテストを通じて動作することが確認されています。現在、Android アプリケーションを介してデバイスとの通信を確立しようとしています。これまでのところ、(マニフェスト ファイルのインテント フィルターを介して) デバイスを検出し、デバイスを開き、制御インターフェイス (インターフェイス 0) を要求することができました。デバイスの初期化/セットアップを実行する必要があることはわかっていますが、その方法がわかりません。たとえば、Arduino USB-to-Serial の場合は...

FTDIベースのArduinoの場合は...

しかし、PIC24 で Microchip USB Stack をセットアップする方法がわかりません。これまでのコードを以下に示します...ありがとう

MainActivity.java

マニフェスト ファイル

device_filter.xml