無線電子工学および電気工学の百科事典 RS-232 経由でマイクロコントローラーとコンピューターを接続する方法。 無線エレクトロニクスと電気工学の百科事典 無線電子工学と電気工学の百科事典 / マイクロコントローラー この記事は、シリアル チャネルを介してパーソナル コンピュータによって制御されるマイクロコントローラ デバイスの開発の実装例として考えられました。 このような開発の経験がまだない人を対象としています。 PC がどのようにマイクロコントローラーを制御し、そこから受け取った情報を表示、処理、保存するかを理解すると、この知識を独自の開発に適用できます。 さらに、説明されているデバイスには独立した値もあります。これは制御されたデジタル電圧計であり、測定結果は表示される前に、所定のアルゴリズムに従ってコンピュータで処理され、PC のハードウェア上のファイルに保存されます。ドライブ、表示、印刷が可能です。 これらすべてにより、説明したデバイスは、データを収集、処理、文書化するための単純なシステムの基礎となり、独立して開発するにはマイクロコントローラー技術の知識が不十分なエレクトロニクスエンジニアにとって役立ちます。 導入 この研究の目的は、現在でも最も一般的な x51 ファミリのマイクロコントローラーをベースにした、パーソナル コンピューターと情報を交換できる最も単純な測定装置を開発および作成することでした。 デバイスに電圧計を実装することが想定されており、後で直接測定された他の物理量を電圧に変換するさまざまなプレフィックスを追加できるようになりました。 このような装置があれば、コンピュータによって制御されながら一連の測定を実行したり、結果を蓄積してコンピュータ処理を実行したりすることが容易になる。 わずかな変更を加えれば、機器やその他の機器やデバイスを遠隔監視および制御するためのシステムに簡単に変えることができます。 デバイスの一般的な説明。 デバイスの電気部分 このデバイス (図 1) は、実際にはデジタル電圧計です。 電圧計の入力には、高い入力インピーダンスを持つオペアンプ (DA1) があります。 オペアンプの後には ADC (DD2) が続き、これにより、関心のある電圧をデジタル化し、その後マイクロコントローラーに送信することができます。 DD3 マイクロコントローラーは、ADC から情報を読み取り、シリアル チャネル経由でパーソナル コンピューターと通信するため、デバイスの主な制御要素です。 このデバイスには、デジタル部用に +5 V を生成し、オペアンプ用に +/-10 V を生成する電力コンバータと、レベル変換チップ (ロジック <0> および <1> から -15: +15) も含まれています。 V (逆も同様))、RS232 などのシリアル チャネルを介して情報を交換します。
コンピュータに送信される値は 0 ~ 4095 (ADC ビット深度に対応) の範囲にあり、0 は入力レベル 0V、4095 ~ レベル 5V に対応し、依存性は線形です。 情報交換レートは、9600 ボー未満、またはそれ以上、最大 115 ボーとして選択できます。 200 以前などのかなり古いコンピュータでは、上限はさらに低くなり、386 ボーになります。 これは、これらのコンピュータに搭載されているシリアル ポート チップが高速化を目的として設計されていないためです。 チップの説明 MAX680電源コンバータ 通常、オペアンプにはバイポーラ電源 (たとえば、グランドに対して +10 V と -10 V) が必要です。 現代の要素ベースにあまり詳しくないアマチュア無線家は、通常、そのような電圧を得るために、5 つの二次巻線 (または 7 つ、ただし中間にタップがある) を備えた変圧器、10 つのフィルター コンデンサー、1 つの安定器などを使用します。自由に使える安定化電圧が 2V で、バイポーラ電源を必要とする使用するオペアンプが +680:XNUMX V だけで動作し、XNUMX:XNUMX mA を消費する場合、前述の XNUMX つの巻線と XNUMX つのスタビライザーは次のようになります。必要ありません。 Maxim の MAXXNUMX チップを使用すれば十分です (このようなチップは Linear Technology および他の多くの有名な企業によって製造されていることに注意してください)。 電圧 Uin がマイクロ回路の入力に供給され、その範囲は 3:5 ~ 6:10 V (タイプに応じて)、出力には約 + 2Uin に等しい電圧が形成されます。 注目すべき点は、第一に、これらの電圧を形成するために8ピンのMAX680またはLT1026に加えて4つの小さな電解コンデンサだけが必要であること(図1を参照)、第二に、入力電圧が変化するとXNUMX倍の出力電圧が変化することです。これはオペアンプの出力信号に実質的に影響を与えません。 このようなマイクロ回路についてさらに詳しく知るには、著者は対応する会社の説明を参照することをお勧めします。 ADC MAX1241 近年、マイクロコントローラー技術では、シリアルチャネルを介して制御されるマイクロ回路が広く開発されています。 これらの超小型回路の 12 つが 1241 ビット ADC MAX680 です。 MAX1241の場合と同様、MAX187には正確および近似の類似物が多数あります(MaximのMAX1286、Linear TechnologyのLTC1298、LTC7894、Analog DevicesのADXNUMX、その他多数)。 MAX1241は8ピンパッケージにパッケージされており、2,7~5Vの電圧で駆動され、約5mAの電流を消費します。 外部基準電圧源 (この場合、142 V の電圧を生成する高精度ツェナー ダイオード KR19EN2,50 が使用されます) を使用する必要があり、マイクロコントローラーとの通信に使用するラインは 3 つだけです。 MAX1241の動作を図2のタイミング図に示します。 1241. 変換および交換の前に、CS# MAX1241 入力はマイクロコントローラによって単一状態に維持される必要があります。 変換を開始するには、論理 8 レベルをこの入力に適用する必要があります。 MAX1241の変換プロセスには0μs弱かかります。 変換時間全体を通じて、MAX1241 は DOUT 出力でロジック XNUMX レベルを維持し、変換が完了すると、MAXXNUMX は DOUT 出力を単一状態に設定します。
変換を開始する前に、SCLK MAX1241 入力のマイクロコントローラは論理レベルをゼロに設定する必要があります。 ADC 内部の変換プロセスが完了すると、マイクロコントローラーは SCLK 入力で少なくとも 12 個の正パルスのシーケンスを生成する必要があります (図 2)。 最初のパルスの立ち上がりエッジにより、MAX1241 はデータ送信の準備が整います。 DOUT のパルスが減少すると、最上位 12 ビットが論理 11 または XNUMX として表示されます。 マイクロコントローラーはこのビットを読み取り、SCLK で XNUMX 番目のパルスの先頭を生成し、しばらくするとそのパルスが減少します。 XNUMX 番目のパルスの立ち下がりまでに、マイクロコントローラーによって読み取られる XNUMX 番目のビットが DOUT などに表示されます。 12 番目のパルスの立ち下がりで、最下位の 1 番目のビットが DOUT 出力に設定されます。 13 番目のパルスの立ち下がりにより、DOUT はゼロ状態になります。この状態は、CS# 入力が 1 に設定される前です。 CS#を単一ステートに転送することにより、マイクロコントローラはMAX1241に変換結果の読み取りプロセスの完了を通知します。 MAX1241の次の変換には、CS#を1に設定してから約1μsかかる場合があります。 Linear Technology の LTC1286、LTC1298、および Analog Devices の AD7894 の動作アルゴリズムは、MAX1241 について説明したものとは若干異なります。 詳細については、それぞれの会社の説明を参照してください。 レベルコンバーターMAX202E 標準ロジックでは 2,4 が 5 ~ 0 V の電圧レベルで表され、ゼロが 0,8 ~ 232 V で表されることは誰にとっても秘密ではありません。しかし、初心者は、5 と 12 が RS- 経由で送信されることに気づいていない可能性があります。 XNUMX チャンネルは同じ値 (XNUMX ~ XNUMX V) でエンコードされますが、符号信号が異なります。 この記事の枠組みの中で、なぜこれを行うのが慣例であり、そうでない場合はそうではないのかを説明することは意図されていません。この事実を述べることに限定します。 RS-232経由で送信するには標準ロジック信号を別のレベルの信号に変換する必要があるため、回路内に適切な変換手段を設ける必要があります。 約 10 年前、この目的のために、特別に設計された 202 つまたは 232 つのトランジスタ、5 対のダイオード、およびほぼ 10 個の抵抗からなるカスケードが使用されていました。 現在、状況は大きく変わりました。超小型回路の大手メーカーは、最小限の追加要素を必要とする完全に完成したコンバータを生産しています。 これらには、MAXIM の MAX680E と Analog Devices の AD232 が含まれます。これらはピン配列に至るまで完全に同一です。 両方のマイクロ回路の内部には、上記の MAXXNUMX と同じ +XNUMX V ~ +XNUMX V 電圧コンバータと、標準レベルのロジック信号を RS-XNUMX レベルの信号に変換するカスケードが含まれています。 これらの各マイクロ回路には、XNUMX つの受信機と XNUMX つの送信機用の論理レベル コンバーターが含まれています。 トランシーバー チャネルを XNUMX つだけ使用します。 シリアル チャネルを使用した MK の動作モード ご存知のとおり (たとえば、10 年の Radio マガジンの第 11 号と第 1994 号を参照)、x51 ファミリのマイクロコントローラーには 1 つのトランシーバー動作モードがあります。 最も単純で最も許容可能なモード XNUMX に興味を持ちます。 モード 1 は、次のパラメータによって特徴付けられます。
これはプログラミングに便利なモードです。トランシーバーのセットアップと操作に必要なプログラミング コードはほとんどありません。 ただし、必要に応じて他の動作モードを使用することもできます。 この記事の目的は、パーソナル コンピュータと通信する機能を持つデバイスについて説明することです。 ここでは、トランシーバーがどのように正確に動作するかについては説明しません。 この情報は、前述の雑誌「ラジオ」またはその他の文献から収集できます。 MKの基本的なルーチン マイクロコントローラーの主なルーチンは、ADC からのデータの読み取り、UART の初期化、バイトの受信、バイトの送信です。 ADCからのデータの読み取り シリアル リンク経由で情報を交換するための PC のセットアップ。 シリアル チャネル経由で情報を交換できるように PC をセットアップするには、次の手順を実行する必要があります。
共振周波数 9600 MHz の水晶共振器の交換レート 11,059 bps 用に設計されたコードの例:
GET_VOLT: SETB DOUT ; ADC SETB CS からの許可されたデータ入力; 初期状態 ADC CLR SCLK を設定します。 初期状態 ADC CLR CS を設定します。 MUL AB データを読み取るように報告されました。 4 MKS AT 12 MHZ\ MUL AB ; 4 ISS | ムーラブ; 4 ISS} 終わりを待ちます。 | | DIGITATIONS MUL AB ; 4 MKS / MOV R0,#12 ; 12 ビットの読み取り GET_VC: SETB SCLK ; \いいえ; | | いいえ。 | | CLR SCLK ; } ビット NOP を読み取るためのパルスを生成しました。 | | いいえ。 / MOV C、DOUT ; READ BIT MOV A, R2 ; \RLCA; | | MOV R2、A ; | | MOV A、R3 ; ビットをワードにプッシュします。 | 結果 - R3R2 RLC A ; | | MOV R3、A ; / DJNZ R0、GET_VC ; ループ ANL A,#0FH MOV R3,A ; 上位ビットをクリア R3R2 SETB CS ; 読み上げたくありません。 (残りのビット = 0) MUL AB ; 4 MHZ で 12 MKS \ MUL AB ; 4 ISS | ムーラブ; 4 ISS | ムーラブ; 4 μs }MIN DELAY ; | | 次の前にムーラブ; 4 ISS | ムーラブ; 4 ISS / RET このサブルーチンはメインマイコンプログラムの一番最初に呼び出されます。 原理的にはサブルーチンとして設計することもできません。 バイトの送受信 シリアル リンク経由でバイトを送受信するルーチンは非常に簡単です。
SERINIT: MOV IE、#0 ; MOV TMOD, #20H ; すべての割り込みを無効にします。 MOV TH2, #REL1 ; タイマ 1 のモード 96 を設定します。 MOV TL1, #REL96 ; 自動リロードカウンターの値9600 bps の初期カウンター値。 SMOD = 0 の場合、ANL PCON、#7FH ; SMOD MOV SCON、#50H をクリアしました。 8 ビットのデータとボーレートのモード。 タイマー依存SETB TR1; タイマー/セッター 1 RET を開始します。ここで、REL96 は 0FDh に等しい定数です。 SCON 制御/ステータス レジスタの RI ビットがセットされ、受信バッファにバイトが存在することを示す場合にのみ、SBUF I/O ポートからバイトを読み取ることができます。 このバイトを読み取った後、RI ビットをリセットする必要があります。 I/O ポートにバイトを書き込んだ後、回線へのバイト送信の終了を知らせる TI ビットがセットされるまで待つ必要があります。 その後、TI ビットもリセットする必要があります。 アキュムレータにバイトを受信するためのサブルーチン:
GETCH:JNB RI、GETCH MOV A、SBUF CLR RI RET アキュムレータからバイトを送信するためのサブルーチン:
PUTCH: MOV SBUF、A SEND: JNB TI、SEND CLR TI RET なお、マイコンにはI/Oエラーを検出する手段がありません。 ハードウェアとソフトウェアの方法でチェックを組織するために、追加の信号が送信される入出力ラインの数を拡張することが可能になり、対話の参加者の状態を判断することが可能になります。位置を特定し、エラーを検出します。 別の方法で情報の受信/送信の信頼性を高めることも可能です。0 データ ビットでもう 9 ビット、つまりプログラム ステータス ワード (ビット 2 PSW) のパリティ フラグと同様に計算されるパリティ ビットを送信します。 送信または受信したバイトについてのみ計算する必要があります。 バイトとパリティ ビットを受信したら、それらを比較して一致するようにする必要があります。 一致しない場合は、I/O エラーが発生しています。 追加の3番目の情報ビットを送信するには、タイマー/カウンターのモードXNUMXまたはXNUMXを使用する必要があります。 MKの一般的なプログラム。 デバイス状態図 一般的なマイコンプログラムは以下のアルゴリズムに基づいています。 アルゴリズムはかなり複雑なので、 それでも、何らかの方法で、少なくともプログラム的に入出力エラーを検出し、その発生に対応する必要があります。 より明確にするために、通常の言葉で説明されるアルゴリズムには、コンピューターとの情報交換に関するデバイスの 3 つの主要な状態を示す、いわゆるデバイス状態図 (図 XNUMX) という図が添付されています。
マイコンはスレーブであり、パーソナルコンピュータはデータ交換のリーダーであるということをあらかじめ規定しておきます。 つまり、PC からの命令がなければ、デバイス自体は何もすべきではありません。 それは完全に制御コンピュータに従属します。 パーソナル コンピューターがリーダーとして選ばれるのは、パーソナル コンピューターの方がより強力で、特別な問題なくデバイスを制御できるという単純な理由からです。 さらに、ユーザーにさらに多くのサービス機能を提供できます。 状態XNUMX-待つ デバイスは、電源電圧をオンにした直後にこの状態になります。 ここでは、コンピュータからの初期化要求を待ちます。これは、コンピュータが NUL 文字を送信することで表現されます。 次に、デバイスは、受信したリクエストに応じて、必要に応じて追加のモジュールとリソースを有効にして構成し、すべてがうまくいった場合は、コンピュータに ACK シンボルを送信する必要があります。 エラーが発生した場合は、NAK を送信する必要があります。 このようにして、二人の「対話者」の最初の「コミュニケーション」が起こります。 よかったら「挨拶を交わす」とか「握手」するとか。 デバイスが正常に初期化され、ACK 文字を送信すると、自動的に次の状態に移行します。 この遷移は図の矢印 1 で示されています。 準備完了状態 この状態では、マイクロコンピュータは、ADC から読み取った測定値を送信する PC リクエストを待っています。 リクエストは XON 文字です。 このシンボルを受け入れると、デバイスは新しい状態 (送信中) に入ります。 矢印 2 は遷移に対応します。 送信状態 ここに到達すると、マイクロコントローラーは、前に示した方法で ADC から 1 進 511 ビットの数値を読み取り、それを部分的にコンピューターに送信します。 この実装では、1 進数を XNUMX 文字の XNUMX 進数に変換します (XNUMX 進数の XNUMX を表す <XNUMXFF> など)。最初に <XNUMX> を送信し、次に <XNUMX> を送信します。 コンピュータへの値の転送が完了すると、マイクロコンピュータは矢印 4 に従って次の状態に移行します。 送信済み状態 この状態は最後の状態であり、いわば、デバイスとコンピューター間の単一の通信行為の輪を閉じます。 ここで、コンピュータは、自分に宛てられた値を正しく受信したことを確認することが期待されます。 PC が送信された番号に応答するには、いくつかのオプションがあります。PC は、他の値がまだ必要ないことを意味する XOFF シンボルで受信成功について応答することも、XON シンボルで応答することもできます。もう 7 つの値が必要であることを意味します。 XOFF を受信すると、デバイスは Ready 状態に戻ります (図の遷移 5)。 XON シンボルを受信すると、デバイスは再び送信状態になり (遷移 0)、ADC からの読み取りを繰り返し、その後番号を回線に転送します。 考慮されなかった唯一のケースは、PC が受信した内容を好まない場合でした。たとえば、<9>...<XNUMX> の範囲の文字の代わりに、 ... 図の矢印 3 と 8 で示される遷移は未説明のままでした。 コンピューターが重大な I/O エラーを検出した場合、またはデバイスとの通信を停止する必要がある場合は、単純に初期化 NUL を送信し、デバイスを初期化して Ready 状態にします。 それらの。 デバイスがどのような状態であっても、最初の初期化中と同じ方法で初期化リクエストに応答する必要があります (待機状態の項目を参照)。 マイクロコンピュータが予期せぬ、または正しくない文字または要求を受け取った場合、マイクロコンピュータは常に NAK 文字で応答する必要があります。 このような戦略は、デバイスのプログラムをこのように編成することで、いくつかのタスクを同時に実行することが容易になるため、有利です。マイクロコンピュータと PC は、破損した電話機を操作することがなく、第 XNUMX に、簡単かつ効果的に「通信」できるようになります。 「お互いに、友達と一緒に。 PCの話に移りましょう。 PC用の汎用プログラム。 PC の状態図 基本的に、コンピュータの一般的なプログラムは、マイクロコントローラで使用されるプログラムと何ら変わりません。 アルゴリズムも同様になり、状態図も同様になります。 最初の状態の初期化 コンピューターは、ユーザーが単一の値の受け入れに対応するキーボードのキーを押すと、ここに到達します。 この状態では、コンピュータは NUL 初期化文字をデバイスに送信し、ACK または NAK 応答を待ちます。 ACK が受信された場合、初期化は正常に完了したため、作業を続行できます。図の矢印 2 に従って次の状態に進みます。 NAK を受信した場合、操作は停止し、コンピュータは矢印 1 に従って最終状態 Done に移行する必要があります。 準備完了状態 この状態で、コンピュータはマイコンから要求された値を構成する文字を受け取る準備をします。 値を送信するリクエストは XNUMX つあります。 XNUMX つ目は通常の値のリクエストで、XON 文字と一致します。 0 番目のリクエストは、最後の値を再送信するリクエストです。 これは、値が一定期間完全に受け入れられなかった場合、または <9> から <XNUMX> および <XNUMX> から <XNUMX> までの範囲に当てはまらない誤った文字を受信した場合に必要です。 次に、値文字を受信する準備が整った後、デバイスに対する上記 4 つのリクエストのいずれかが発生し、コンピュータは矢印 XNUMX に沿って値を受信する状態に移行します。 受信状態 ここで、PC は、ADC によって測定および変換された値の XNUMX 文字を読み取るだけです。 前述したように、コンピューターがキャラクターを待機する客観的な時間があります。 この間に文字が読み取られなかった場合、この状況はエラーであると解釈されます。 I/Oエラーが発生しました。 ちなみに、かなり高い情報交換速度 (19200 bps 以上) や MS-Windows オペレーティング システム (どのバージョンでも) で作業している場合、コンピュータは送信された XNUMX 文字のうち XNUMX 文字だけを受信することがよくあります。少なくともXNUMXつ。 コンピューターが「ハング」すること、つまり無限に長い文字の欠落または欠落を待機することを防ぐために、この期待を制限する時間が導入されます。 残念ながら、これらの欠落はハードウェア方式では検出されません。 この実装では、ユーザーがキーボードから設定できる 1 種類のタイムアウトを定義します。 最初のタイプは、3 文字のうち XNUMX 文字のタイムアウトです。 これにより、デバイスは急ぐことなく落ち着いて、必要な数値を測定し、デジタル化し、それを等価な記号に変換することができます。 XNUMXつ目はXNUMX文字目とXNUMX文字目の送信制限時間です。 次に、受信状態から他の状態への可能な遷移に移りましょう。 割り当てられた時間内に値の 3 文字すべてが受信されなかった場合、コンピュータはデバイスに値を再度送信するよう要求する必要があります。 この状況は、矢印 5 に沿った遷移に対応します。 コンピュータは NAK 文字を使用して要求を行い、準備完了状態に戻ります。 コンピュータによる受信中に I/O エラーが検出された場合 (および PC にはシリアル ポート ステータス レジスタを十分に分析する機会がある場合)、コンピュータとマイクロコンピュータの両方を元の状態にリセットすることをお勧めします。 、つまり初期化を繰り返します。 したがって、図には矢印 3 も存在します。 そして最後に、コンピューターがデバイスから 8 文字すべてを受信すると、受信した値の分析状態に入ります。つまり、矢印 XNUMX に沿って Received 状態になります。 出版物: cxem.net 読み書き 有用な この記事へのコメント. 科学技術の最新ニュース、新しい電子機器: 庭の花の間引き機
02.05.2024 最先端の赤外線顕微鏡
02.05.2024 昆虫用エアトラップ
01.05.2024
その他の興味深いニュース: ▪ マイクロコントローラ Texas Instruments MSP432 ▪ 生体認証ステーション Printrak LiveScan Station Portable
無料の技術ライブラリの興味深い資料: ▪ 記事 聖マルコの遺物はイスラム教の習慣を無視してどのようにして持ち去られたのでしょうか? 詳細な回答 ▪ 記事 UM66T チップ上の音楽シンセサイザー。 無線エレクトロニクスと電気工学の百科事典 ▪ 記事スキーム、ピン配列 (ピン配置) ケーブル Nokia 3210 (MBUS)。 無線エレクトロニクスと電気工学の百科事典 このページのすべての言語 ホームページ | 図書館 | 物品 | サイトマップ | サイトレビュー www.diagram.com.ua |