問題タブ [uart]
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.
pic - pic32 UART の問題
システムには、共有 UART バス上の PIC32 MCU のグループと、チップ セレクトに似たハンドシェイクとしての 2 つの I/O があります。1 つのマスター複数のスレーブ。マスターからスレーブへの送信は直接的で、うまくいきます。スレーブからマスターへの応答信号は、マスター側で 10K のプルアップを備えた 1K の抵抗を通過します。各スレーブは、他のスレーブの送信を妨害しないように、選択されていない場合はその UART を無効にする必要があります。マスターは常にアクティブで、2 つのスレーブ通信シーケンス間に 400 us の遅延が許容されます。送信は 4 バイトのチャンクで行われます。
私たちが構築した 5 つのシステムのうち 1 つに、スレーブの 1 つからの開始ビットが不完全であるという問題があります。約 1/4 ビット幅のグリッチ。これが追加されると、マスター マスターはチャンクを認識できず、送信がタイムアウトになります。これまでのところ、問題のある MCU を変更することで問題を回避しましたが、これは開発時の修正であり、製品には適していません。
誰かが似たようなものを見たことがありますか?問題は何ですか?
マスター デバイスとスレーブ デバイスの両方に pic32mx320F064H-80 を使用しています。
ありがとうございました。
embedded - ビットはスクランブルされています
問題:一方の値をUARTに送信すると、もう一方のUARTでヌルが発生します。
- - 詳細 - -
これらは両方ともPICプロセッサ(PIC24とPIC32)です
どちらもプリント回路基板に配線されています。
それらは、それぞれがそれらの中にあるUARTモジュールの1つを介して通信しています。
それらは(表面上;ドキュメントによると)両方とも115200 bps、8-N-1用に構成されています
ハンドシェイク、CTSの有効化、RTSの有効化はありません。私はただバイトを配線に入れているだけで、それらは出て行きます。
(これらは短い4バイトのコマンドと応答で、かなりきれいに収まります)
PIC32は80MHzになります。
PIC24のF[cy]= 14745600
つまり、14.7456MHzになります
PIC24は4バイトを送信します(特定のコマンドシーケンス)
UARTの割り込みサービスルーチンにブレークポイントを設定すると、PIC32にnullが表示され、最初の4つの後に(PIC32コード)ブレークポイントで繰り返しヒットが表示され、引き続きnullが表示されます(PIC24以降は意味があります)。何も送信していません)
つまり、理由がない場合、UARTは繰り返し割り込みを生成しているように見えます
私はPIC32側でコードを書いていませんでした、そして私はそれがどのように機能するかを毎日学んでいます。
次に、コードを実行するだけで、必然的に次のような行になります。
私はそこに着くとき、
- 原因レジスタは保持します
0080181C
- EPCレジスタは保持します
9D00F228
- SPレジスタは保持します
9F8FFFA0
これは時計仕掛けのように起こったので、私は__ISRが止まらないのではないかと疑った。MpLabは私にこれを見せてくれました...
数値をもう少し詳しく見てみると、その時点で、FFA0(SPの下位16ビット)に100(0x64)を追加すると、0x10004が得られます。これは、4が多すぎると推測しています。
PICマニュアルDS61143E-50ページには、命名法が意味することSW Store Word Mem[Rs+offset> = Rt
が記載されており、他の専門家によると、原因レジスタは、ロードまたはストアでのバス例外のコードであるEXCCODEビットが7であると言っています。
または、私はここで完全に推測しています(これについて専門家の知識を得たいと思います)何かが何かをクリアしておらず、intハンドラーで無限の再帰に遭遇しています。
これらすべてが理にかなっています。
質問
誰かがこのようなintが繰り返し私を襲う最も一般的な理由を提案できますか?
UARTからの偽のヌルの間に、この無限に生成されたintと何らかの形で関連している可能性のある共通の関係を見ている人はいますか?私も正しい方向に進んでいますか?
あなたの答えでは、UARTからIntを確認する方法を教えてください。私はPIC24でそれをどのように行うかを知っています(私はそのコードをASMで完全に書きました)が、PIC32のCでこれがどのように行われるかはわかりません。組み立ては大丈夫です。インライン化します。私はここに書かなかったコードを扱っています、そして私はあなたの答えに感謝します
UART(この場合は#1)が繰り返し割り込みを生成する最も一般的な理由は何ですか?
gcc - マイクロコントローラと AT モデムを接続するための C ライブラリ
ローエンドのuC、つまりAtmega128を使用する組み込みシステムに取り組んでいます。私のシステムには、AT コマンドで駆動されるモデムも含まれています。適切な C ライブラリ (GCC 用) を探してみましたが、見つかりませんでした。可能な AT コマンド セットを「すべて」uC メモリに配置し、「汎用」ライブラリを使用するのは不合理であることはわかっていますが (そして、全体の操作に約 30 個のコマンドが必要です)、適切なものを取得する必要があります (つまり、軽量、堅牢な) uC で送受信された UART 文字列を処理するための制御メカニズム。実績のあるライブラリや関数を知っている人はいますか? または、誰かが私にいくつかの良いリソース/提案を教えてくれるでしょうか?
embedded - PIC32 UART ドロップ バイト
問題
- 外部ソースがこれらの 4 バイトを送信します
0x2A, 0x42, 0x78, 0x25
- PIC32 UART は int を生成しません
- 外部ソースはもう 1 バイトを送信します
- 次に、PIC32 UARTは int を生成します。
- その int には
0x25
、前の送信からのバイトのみが表示されます - つまり、最初の 3 つが消える
- ときどき (おそらく 5% の確率で) UART は 4 バイトすべてを適切に生成します。
【金曜夕方のデバッグ結果】
別のエコー ルーチンを作成しました。取得したものを読み取り、書き戻すだけです。
リリースモードでビルドしました(ここで別のアドバイスに基づいて)
同じ番号を 25 回送信し、何を返すかを確認するルーチンを作成しました。
その後、値を inc して 25 回送信し、ループします。
結果はこのメッセージの最後に追加されます。
最初の null バイトが返されません。さまざまな要因に基づいて、現時点ではそれについて心配することはありません。
次の5ラウンド、私はすべてを完全に取り戻しています
関連するすべてのソース コードを含めようとしますが、テキストの壁でないことを願っています。これを理解するためにさらにコードが必要な場合は、質問してください。
これは、問題の UART の初期化コードです。私は含めることができます
これは、この特定の UART を処理する割り込みサービス ルーチンです。
これは、「エコー」システムを介してバイトを実行したときに見たデータです。つまり、1 を読み取り、1 を書き込むルーチンです。
PIC-32 は 80 MHz で動作しており、UART は 115200 bps を実行しているため、速度については心配していません。
c# - Win'7 UART BlueTooth が 4,000 バイト後にサイレントになる
私は、正確に同じバイトを bluetooth 接続を介して PC に何度も送信するために、デバッグルーチンを装備した小さな組み込みシステムを持っています。
問題の速度は 921600 bps です
約 4,000 バイトを正常に受信した後 (ギブまたは数百を取る)、私のアプリは Win7 からそれ以上認識しません。
ストリームがアプリから消えた後も、バイト (つまり、4,000 をはるかに超える) が送信され続けることを完全に確信しています。
Windows がどういうわけか、何らかの理由で、Bluetooth が受信しているものを配信していないのではないかと私は非常に疑っています。
私は完全な自信を持って断言できます...
- アプリは最初の 4,000 バイトを正しく表示します
- その後、アプリは何も表示しません
- 外部ボックスは引き続きバイトを送信します
Win'7 に対する私の疑惑が強まっているのは、
- アプリを停止した後、外部送信ボックスが続行されました。
- 2分後、外部送信ボックスを停止しました
- その瞬間、PCと小箱の両方が相互作用していませんでした
- 両方のシステムが停止した状態で (数分間) PC アプリを再起動しました
- 送信されたバイトがない場合、アプリは 941 バイトを受信しました。どこから来たのかはよくわかりません
- これらのバイトは以前のセッションからのものでした (1 バイトの 0x37 を何度も送信していますが、それがデータ ストリームで見られたものです)
次に、データを生成する小さなボックスを再び開始し、同じ動作を確認しました。921600 bps で 2 分間バイトがフラッドしたにもかかわらず、4435 バイトが確認された後、UART からバイトを取得しませんでした。
受付スレはこちら
誰かが重要だと感じた場合に備えて、ここに Write(bits) ルーチンがあります
C# アプリを使用して Win7 マシンで Bluetooth バイトが消える経験をした人はいますか?
これを引き起こしている可能性のある明らかな(またはあいまいな)エラーを誰でも見ることができますか?
python - PySerialは読み取りはできますが、書き込みはできません
PySerialを使用してFTDIFT232Rチップに接続しようとしています。RealTermとの通信を確認しました。RealTermを使用すると、データの送受信ができます。ただし、Pythonでの私の実装はデータしか受信できません。
私はこの行を使用して書き込もうとしています:
c# - USB UART の速度が間違っている
PC 上の GUI は、一連のバイトを組み込みシステムに送信します。
- Bluetooth アダプター、すべて問題ありません
- USBケーブル、すべて間違っています。
デバイスは FTDI USB TTL シリアル ケーブルです
予測可能な速度が必要です。PC から何かを送信しますが、組み込みシステムの UART (受信バッファ) に0x00
またはバイトが表示されます。0x80
これは、バイトを送信する C# ステートメントです...
115200 は機能しましたが、十分に高速ではありません。
これを 921600 bps 信号のように見せる必要があります。460800 bps で十分でしょう。多分。組み込みシステムのこのポートでフロー制御 (CTS/RTS) を使用しています。
これらの速度のいずれかを実行するために、C# を使用して UART を取得する方法はありますか? どのように ?
uart - XBEES1モジュールの構成
Xbeeシリーズ1モジュールが2つあります。1つを送信機として、もう1つを受信機として構成したいと思います。誰かが同じことをするために良いウェブサイトまたはチュートリアルリンクを推薦してもらえますか?どんな助けでもいただければ幸いです。
前もって感謝します。
c# - データ: 1 つの大きなデータか、それとも小さなチャンクの集まりか?
現在、BlueTooth コネクタ経由でそれぞれ 64 バイトの 128 パックを送信しています。
これは組み込みシステムに由来し、データをグラフで表示する C# GUI に配信されます。組み込みシステムでコードを実行しています。GUI にコードを書きませんでした。しかし、UART とグラフ化に複数のスレッドを使用していることは確かです。各サンプルの長さは 64 バイトです。
次に、利用可能なデータ パスのオプションに USB を追加します。(現在、Bluetooth と UART があります)。
スキームを複製して、64 バイトの 128 個のブロブの同じセットを送信できます。
また、データを再配置して (私が思うに)、8,192 バイトの 1 つのブロブを 1 回のシューッという音で送信することもできます。
いずれにせよ、私にはかなりの量の作業が必要になります。
質問: 1 つの大きなブロブを使用すると、スループットが向上しますか? それとも、小さなブロブの束全体に固執し、すべてのスレッドに雑用を終わらせる時間を与えるべきですか?