問題タブ [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.
microcontroller - マイクロコントローラ 8051 を使用して割り込み 4 経由で UART から文字列を取得する方法
割り込み 4 関数から文字列を取得するのは少し難しいです。しかし、単一の文字を取得しようとしてLCD 2 * 16に表示すると、うまく機能します。しかし、LCD に表示するために "dot[i]" 変数から文字列を取得しようとすると、うまくいきません。
この私のコード:
Keil v4を使用するコンパイラの場合
arm - Atmel SAM4S Xplain UART
SAM4s Xplain を使用しており、UART1 を使用したいのですが、例やヘルプが見つかりません。自力でやってみたのですがうまくいきません。
これまでの私のコードは次のとおりです。
conf_uart.h
conf_uart.c
私はさまざまなことを試しました。例として、自動エコーを有効にしましたが、コンピューターで何も受信せず、SAM4 でも何も受信しません。
embedded - PIC 18F87J50 USART 構成と ISR トラブル
PIC 18F87J50 を使用するプロジェクト、特に 2 つの USART チャネルとの調整で問題が発生しています。
主な問題は 2 つあります。
1.) 目標のボーレートを設定できません:
Open1USART() および Open2USART() 関数を使用して、使用している 2 つの USART チャネルを初期化しています。両方を 14,400 ボーに設定したいと思います。これらの関数は 2 つの引数を取ります。1 つ目は USART を構成するためのビット フィールドです (非同期対同期モード、8 ビット対 9 ビットなど)。2 つ目は (システム クロック レートに応じて) USART のボー レートを構成する SPBRG 値です。
私は両方を次のように呼び出しています:Open1USART(USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_BRGH_LOW & USART_RX_INT_ON & USART_TX_INT_OFF, 346);
私のセットアップでは、SPBRG としての 346 は 14,400 ボーを与えるようです (1 ビットの幅が約 70us であることを O スコープで確認しました)。
問題は、これが USART 2 でしか機能しないことです。USART 1 では、同じ SPBRG 値で 57,600 のボーレートが得られます。さらに、SPBRG 値をいじってみると (実際のボーレートの影響を確認するためにスコープのタイミングを調べていると)、興味深いことがわかりました。
SPBRG の値を 0 から大きくすると、ボー レートが低下します。SPBRG を 87 にすると 57,600 ボーになり、173 -> 28,800 になりますが、約 255 でリセットされます。255 では、ボー レートは約 19,000 になります。しかし、256 では、信じられないほど高いボーレート (~1,000,000) を持っています。次に、SPBRG 番号をさらに上げると、ボー レートはさらに遅くなりますが、19,000 ボー マークを下回ることはなく、必要な 14,400 まで下がることもありません。
OK、SPBRG バイトをオーバーフローしていますね。しかし、USART 1 と 2 はまったく同じように構成されており、USART 2 で SPBRG 値 > 255 を使用できます。どちらも同じ BRGH 設定 (低) と BRG16 設定 (高) を持っています。また、この投稿 ( PIC18F2680 の UART 受信で割り込みがトリガーされていない) によると、TRISC6-7 は正しく設定することが重要なビットのようです。その投稿が示唆するようにこれらを設定しました(6低、7高)。
役立つ場合は、いくつかのコード スニペットを共有できます。
2.) 受信バイトごとに ISR がトリガーしない:
USART1 と 2 の両方で UART RX 割り込みをオンにしています。正しいボー レートで USART1 に話しかけていないので、周辺機器からの応答がありません。しかし、USART2 では 14,400 ボーで話しており、周辺機器は適切に応答しています (スコープで検証済み)。スコープを使用すると、受信すると予想される 16 バイトすべてを確認でき、タイミングは回線上で良好に見えます。ただし、このポートの RX 割り込みは、最初の 2 または 3 バイトに対してのみトリガーされます。周辺機器が何を応答しているかを知るには、8 バイトを連続して受信する必要があります... しかし、2 バイトまたは 3 バイトを超えることはありません。
したがって、割り込みはトリガーされますが、すべてのバイトではありません。
次の着信バイトの割り込みを見逃さないように、ISR をかなり短くしておく必要があることはわかっていますが、ISR をそのコア機能 (デバッグ出力の削除など) だけに分解しても、まだ表示されているだけです。最初の 3 バイト。スコープ上では、最初の 3 バイトと残りのバイトの間に違いはありません (少なくともビット タイミングでは)。最初の 3 バイトの値は、常に 0xFF です (これは予期されることです)。残りのバイトは異なる値ですが、それが私が見ることができる唯一の違いであり、ISR トリガーがない理由を実際には説明していません。上記の他の質問へのリンクは、確かにこの問題にも関連しているようです。しかし、ISR は常にトリガーしているわけではありません。
あなたが提供できる助けや洞察は大歓迎です。クライアントに再確認して、コードスニペットをさらに追加できるようにします.
driver - Arduino R3 をシリアルから USB へのコンバータとして使用する (何かをプログラムするため) ヘルプが必要
私は調査しました (そしてかなり学びました) が、プログラミングの経験はほとんどなく、これまでのところ基本的なスケッチしか理解していません。Arduino R3 (より具体的には、USB からシリアルへのコンバーター チップ) を使用して、フルサイズのホビー ラジオをプログラムしたいと考えています。
ラジオをArduinoに適切に接続し(5V、Rx、Tx、Gnd)、Arduinoをトライステートモードにしました(明らかにこれを行う必要があります..)が、適切なドライバーが不足しているようです。私は基本的に、Arduino R3 がCP2102のように機能することを望んでいます。激安ではありませんのでご了承ください。私が住んでいる場所でそのようなものを手に入れるには、少なくとも1か月かかります。Atmega チップを削除する必要があると言う人もいます。最終的な目標は、「不明なデバイス」だけでなく、ドライバーを備えたデバイスをcomポートに配置することです。
それで、私の質問は次のとおりです。Atmegaをオンのままにしますか、それとも削除しますか? どのドライバが必要ですか?
ありがとう!
編集:投稿した直後に、必要なものをほぼ正確に見つけました。なんらかの理由でそれを機能させることができませんでしたが、理解するのを手伝ってもらえますか? ここにリンクがありますリンク誰かが私を助けたいと思っているなら!
明確にするために: 以前にも行われましたが、人々が明らかだと思うことを除外しているように感じますが、私のようなまだ専門家ではないいじり屋にはそうではありません :/
本当にありがとう!
discovery - stm32f0 uart プログラミング
私は stm32f0-discovery で usart を動作させようとしていますが、この種のドキュメントが「欠けている」ことがわかったので、stm32f050 で動作する usart の例を持っている人はいますか?
ありがとう。
バート・テウニッセン
microcontroller - UART ブレークを送信
RXD ピン (私の TXD) で 1 秒間 UART ブレークを必要とするチップと通信する必要があります。
ZW0301 コントローラーを使用していますが、その UART コントローラーはブレーク コマンドをサポートしていません。break コマンドをエミュレートすることはできますか? UARTコントローラーを無効にして(ピンをGPIOモードにする)、TXDを低くするだけで十分かもしれません。または、これは機能しませんか?
適切な説明へのリンクを歓迎します。
c - Linux システムでデバイス ファイルを開くことができませんでした
私は omap4 ベースのシステムで作業しています。4 つの UART ポートがあるため、カーネルは次のようにします。
ユーザー空間から開くと:
それは正常に開き、それで読み書きを実行できます。
しかし、私が開いたとき:
失敗しました。
システムにノードが表示されているのに、/dev/ttyO3
ノードを開くことができないのはなぜですか? 何か案が?
interrupt - 高ボーレートの循環バッファを備えた PIC 割り込み駆動 UART
ボーレート=38400 で PIC 18f4550 のセンサーから読み取ろうとしています。FIFO 循環バッファーを使用すると、センサーからのデータを配列に格納できます。
センサーは要求コマンドに応答し、15 バイトの測定値を返します (作成した循環バッファーと同じです)。区切り記号がないため、 15 バイトすべてを取得し、最後に \r\n を配置して各測定値を区切る必要があります。
そこで、inputpointerとoutputpointerの 2 つのポインターを使用して、バイトを格納し、バイトを送信しました。18f4550 にはハード UART が 1 つしかないため、これを使用してデータを読み取り、センサーにコマンドを送信すると同時に、ソフトウェア UART を使用して RS232 経由でラップトップに出力します。
バッファが読み取られてシリアル ポートに送信されたときに、新しい測定を要求します。
それはうまく機能しますが、ヘッド ポインターがテール ポインターをオーバーランするとき、つまり大量のデータがバッファリングされているが、時間内に出力を取得できない場合に、FIFO オーバーランを回避するより良い方法があるかどうかを知りたいだけです。
コードは次のとおりです。 16MHZ PIC 18f4550 mikroC コンパイラ
}
serial-port - beaglebone シリアル ポートの中断
Beaglebone のシリアル (uart) ポートに割り込みを設定する必要があります。シリアル ポートが情報を受信すると、割り込み (関数) が自動的にアクティブになり、受信したデータで何かを実行するようにします。
そのための方法を検索しましたが、成功しませんでした。私はマイクロコントローラの uart ポートの割り込みを扱ってきましたが、ビーグルボーンでも同じことができると思いました。
それを行うための提案はありますか?
前もって感謝します。
uart - UTXEN は設定されません
チップはPIC24FJ256GB210
UART #3 の #UTXEN ビットは設定されません。
まったく同じ命令シーケンスを使用して、UART #1 で問題なく設定されます。UART #2 も同じです。
動作...
失敗...
だから私は、「ああ、それは私が欲しい単一のビットであり、すべての読み取り専用ビットの上に完全な単語が移動すると、どういうわけか問題が発生します。単一のビットセットを実行します」と考えました。
いいえ、まだそのビットを設定しません。
失敗...
- アップデート -
MpLab でビットを設定できます。違いは何ですか?
私は本当に混乱しています。そのビットが設定されないようにするために、他に何が関係している可能性がありますか?