AT89C51とシリアル通信プロトコルを

M

Maverickmax

Guest
やあ

私はビットのシンプルな8スタートビットデータおよび停止transmittシリアル通信を使用します。

トランスミッタ回路では、あなたがあなた一人の記者にできるように2つのボタンをご覧ください。ときにそれらの1つが押されて、私は1を期待していた受信回路にswtich LEDを点灯。しかし
、 私の受信回路をいつかは私のボタンを押すことなく、LEDのスイッチです。

だから
、 もし何か私の受信回路に影響を与えるため
、 両方のLEDが中には、TX無効になってオンにしていない
、 私の受信回路内の任意の断層が表¥示されない可能¥性がで表¥示するには
、 トランスミッタ回路の電源を切断して
、 問題を特定していた。

それから私は
、 トランスミッタとLEDは
、 電源が接続上でそのボタンが押されてスイッチを始めた。私は私のトランスミッタ回路に問題が気づいたのです。

これまでのところ私はテキサス州の回路内の任意の問題を識別することができず
、 それは私のコードで指定する必要があります:送信機のコードコード:/ /ヘッダファイル

#"main.h"を含む

#"port.h"を含む

#"delay_loop.h"を含む/ /関数のプロトタイプ無効serial_init();

無効send_serial *秒(unsigned char型);無効serial_init()



SCON = 0x50を、8 / /セットアップビットのデータ

TMOD = 0x20; / /自動セットアップのタイマ1リロード

Th1細胞= 0xF3; / / 2400ボーのセットアップ

TR1の= 1; / /タイマ1の電源を入れます

TIは= 1; / /送信するために準備を示します

)無効send_serial(符号なしchar *掲載)



間(*)=は0x00掲載



SBUF =*掲載;

(!:日本TI)は

()

TIは= 0;掲載 ;



)無効な(無効)

(serial_init();

/ / send_serial('1');(1)中



/ / = 0 SECOND_LED;

/ / = 0 FIRST_LED;(FIRST_BUTTON ==押された)場合、



send_serial('1');(1)中



(FIRST_BUTTON == NOT_PRESSED)の場合



FIRST_BUTTON = NOT_PRESSED;

休憩;





)(SECOND_BUTTON ==押された)場合、



send_serial('2');

(1)中



(SECOND_BUTTON == NOT_PRESSED)の場合



SECOND_BUTTON = NOT_PRESSED;

休憩;







Delay_Loop(5);

))
 
私はRFモジュールを言及するのを忘れている。私は現在、TLPの使用しています- 434AとRLP434Aモジュールと
、 各AT89C51チップに接続されます。

場合は
、 なぜこんなこと知っている何か
、 私は重要な何かを見逃すことを指摘してくださいできますか?

ありがとうございました

マーヴェリックマックス

 
やあ、

として
、 私の知る限り、ほとんどのRFシステムにのみ送信することができますは'DC -'バランス信号のDC成分です。あなたが標準的なシリアル伝送している(バイト、停止)には、DCバイアスは、ときにアイドル状態の行の高さが起動します。

しかし、のTx / Rxは、Rxのは、アイドル状態の信号で
、 ちょうどゼロにドロップし、スタートビットthats思考にあなたのreciverマイクロだますと、信号の'DC成分'を伝えることはできませんので
、 インチを読み取るしかし
、 もちろん、ときに
、 ストップビットには、存在しない'1'ので、あなたのチップは
、 パケットを放棄し
、 新しいものを探しています。

また、受信モジュールで一般的には、PLLは
、 受信変調信号には、これには、シンボルレートに応じて調整する時間を必要としながらRxの調整は、最初のいくつかのビットが、おそらく、文字化けが発生します。
!

最後に、典型的な送受信433MHzのモジュールの出力は 雑音
!様々なRF源とピックアップされている出力の状態の変化を引き起こすことができます。それは'スタートビット'して
、 ランダムノイズトリガされる可能¥性があるバイトthatsを構¥成し、その後、多分ノイズも原因を読んで'ストップビット'。-しかし、2.4Kbの低いサウンド/バインドされたいくつかのポイントで発生するのだ。

ここに私のソ¥リューションです:
私は個人的にシンプルな'起動停止'パケットを十¥分に堅牢ですが、もし好奇心なら、試みることができる前には、Txモジュールに入るのTxマイクロからの信号を反転とは思わないと同じように
、 受信側で終わり。この方法では、スタートビット1とされている行の'0'がアイドル状態です。私はかなりの場合でも失敗したパケットが文字化けするでしょうが、知っていることは確信している...

記事を読むまでチャンネル上のRFでのコーディング。とは'DCバランス'。
.

あなたのためにおそらく最も簡単な方法 マンチェスターエンコーディング
を使用することです。
ただし
、 使用可能¥なデータレートの半分はかなりきれいには、DC問題を修正。
Googleで情報のTheresの負荷を、このフォーラムで(一部自分で)どのように行うに書き込まれます。良いニュースは
、 すべてのソ¥フトウェアで行うことができ、あなたもあなたのUARTを使用することができます(ある場合)1つのチップ上に搭載しています。私はこのフォーラムで数回、私の記事のためだけに検索して説明している(と'マンチェスター')。

もしまだ問題が解決しないなら、多くのソ¥リューションは、その複雑さと効率の異なるエンコーディングマンチェスターに代わるものです。私はあなただけまで、あなたは良い安定したリンクを取得するだけで、その後、将来のプロジェクトで使用する可能¥性が異なることを試してくださいRFモジュールをテストしているrealilse。

頑張って。

BuriedCode。

 
やあ

のでマンチェスターコーディングのように、私は
、 マンチェスターコーディング
、 エンコーダとデコーダを理解することが学び、2つの事は
、 私については分からないあります:

[1]私は、RXおよびTXのA89C51とUARTを使用するようにしたいと私は
、 データをビット単位でマンチェスター符号化されたビットを適用するか?だから
、 私はテキサス州コードとデコーダの私の送受信のコードでエンコーダを追加する必要があるのですか?そこは
、 私のコードを変更する必要があるものはありますか?シリアル通信?

[2]誰でもマンチェスターUARTとAT89C51でCの前にコーディングを行うことがありますか?マーヴェリックマックス

追加48分後:ので
、 誰かだけで
、 私はUARTを実装することができないと私はビットコードを叩いて使用するようにと私のアドバイスだけでなく自分の回路を変更してくれた今私は非常に混乱しています

マーヴェリックマックス

 
こんにちは

私はこれまで
、 現時点では得ることができなかった私は非常に私のワイヤレスプロジェクトとイライラしています。
tell me how to send the data from transmitter to receiver?

以来
、 私のコードは非常によく、RFチャネル間で、 あなた
を喜ばどのように受信者に送信機からのデータを送信するか教えてデータを送信できませんでしたか?

私がマンチェスタートランスミッタでエンコードimplmentし
、 レシーバのデコードつもりだ忘れないでください。それでは
、 エンコードされたビットを送信する最良の方法であり
、 どのように受信機は
、 シリアルデータをキャプチャ?

誰が私の質問に答えるために役立つポイントとすれば報われる管理します。

マーヴェリックマックス

 
MaverickMax、

遅延のため、少し忙しくして申¥し訳ありません。

さて、この場合は
、 フォーラムをチェックすると、コードスニペットとマンチェスターマイクロ、私はすべて私の仕事を認める上でエンコーディング上のリンクを発見したことは、PICマイクロにされ
、 アセンブリに書き込まれます。しかし
、 私はあなたの擬似変換する可能¥性があるCにコードを確信している

引用:

私がマンチェスタートランスミッタでエンコードimplmentし、レシーバのデコードつもりだ忘れないでください。
それでは、エンコードされたビットを送信する最良の方法であり、どのように受信機は、シリアルデータをキャプチャ?
 
こんにちはBuriedcode

あなたの詳細については....いただき
、 ありがとうございます

ことができます'については私がそれに慣れていない時、RFモジュールとマイコンの間に接続するために必要なバッファの'私に詳しく教えてください。

私は理解して

スタートビット0のビットが必要です

データビット、1または0のビットが必要です

停止する1ビットが必要です

では
、 なぜ私はTTLのインバータを反転する必要がある?

マーヴェリックマックス

 
やあ、

だけ迅速な応答はここ。
私はいつも'を使用するバッファのは、その優れた設計の実践。そのわずか区切るために/任意の信号を1つの回路から葯に渡すのをクリーンアップします。そのしない反転するかどうか。

私はシンプルな'NOTゲート'純粋なので
、 入手しやすくて、提案し
、 その仕事をする。以来
、 あなたの送信機の少なくとも1つ必要があります実際には
、 その反転は本当に、変わったことはないと1つのレシーバで。(1 - "0 - "1)。

ため、UARTの伝送のためのアイドル状態の行を一般的に'高'(5V)とのために、RFモジュールのDC成分を運ぶことができないときは、この日は
、 私を引用しない場合は、受信機'ハイラインは表¥示されません。もし何も送信すると、0Vには、受信側は思うだろうが表¥示されますスタートビット、であり
、 それを読むので
、 パケットを破棄します(ただし、)ストップビットはありません。それは永遠にこれを行います。

しかし、もしあなたの前には、信号の反転は、RFリンクをクリックした後
、 アイドル状態の行'は0です。スタートビットになる'1'、および停止'0'。ですから
、 何も送信していないなら、受信機'(0Vに反転ハイラインが表¥示されます'5V)には、スタートビット、これだけの変更を待機されていません。ので
、 スタートビットをチェックしていないもちろん、受信者が、invrter必要があるので
、 あなたは、Rxでは、Txにする必要がありますインバータ逆だ。

することはできません実験では、とや信号を反転せずにしようと、私は反転は
、 システムの信頼性を高めることにベットするつもりです。

最後に、なぜ私は
、 受信側では、UARTを使用して提案したのか分からない。Tx用その罰金が、これは、Rx干渉やノイズが多くなっている、それを受け取るには、UARTをトリガします。そのため
、 パケット内で、読書を開始し、同時に、あなたのTx送信することができるが、あなたのデータを欠場。だから.....私はあなたビットにして行くなら、レシーバビッグバンafriadだ。そのすべての不良ではなく、ここにpeusoの少しだけ、あなたに沿って支援するためのコード。タイマーをセットすると
、 送信機のボーレートの割り込み。

ときにpingの場合、これを行います。
状態は、RFピンが何であるかをチェック(あなたのschem)〜10ピン
一時レジスタには
、 このシフトします。
チェックアウトの場合は
、 一時レジスタに'同期パターン'です(私は)00011101を使用する
なった場合に
、 メインprogをし、返されない
それを読んでインチ実施されはしないまでしてきたすべてをreciveを無視するとは何です'の同期パターン'。できるだけ早くそれがある場合には
、 次のビットは、'起動することが分かってあなたの最初のデータパケットは、0のビットを'。かどうかチェックこれを0にすると、そうでない場合
、 そのflase同期ならば、その場合は
、 次の8ビットでは、読む必要があります(dat1h)のようなものとして保存されます。

だから、もしトランスミッタで、あなたのUARTを使用した場合、エンコードされたマンチェスターので、データの単一のバイトthats 2つのパケットを送信しました。と覚えて、彼らを開始し
、 停止する場合は
、 必要がないビットが、エラーチェックのために使用することができます。

あなたの同期を発見したと言う
5000.00からのパケット:0DDDDDDDDD10DDDDDDDD1

フォリオの読み取り、およびsをチェックするあなたの最初のバイトをした後、'1'ならば、'0'。それらの弱点を克服バイトを読んでください。ストアに。そして
、 デコードします。

よりもアセンブリ内にある'でその実際には少し楽にC'を
、 このようなことをする。C言語でのシフトレジスタのTheresの多くの例

頑張って。

BuriedCode。

psのです。感謝の助けを借り点'。私を助けることがうれしい。そして、もしあなた'は'苦労している。PICのRFモジュール、とにかくそれをする意味をしてきたと自分自身のシステムを私がありますリグ。私のコードは
、 アセンブリ内になりますが、同様の注釈付き。

 
可能¥な解決策は
、 北欧(www.nvlsi.com)チップ"nRF401"によって提供されます。あなたがモジュールを使用することができます
のFM - RXQ1 - 433ファーネル、またはRXQ1から433.9 TELECONTROLLI(www.telecontrolli.com)から。
最後の1つ(最大20ユーロ)が安くなります。

このモジュールは
、 デュアルバンドトランシーバですnRF401チップ上に基づいています。この主な利点
チップの任意のマンチェスタ符号化せずに動作する可能¥性がある(私もマンチェスターエンコーディングを知る
2による)は
、 データレートを削減します。

あなたはnRF401製品については
、 北欧のサイト上で有用なファイルをたくさん見つけることができます。

私は2002年以来
、 このモジュールを使用すると私は何の問題もありません。

 
こんにちはBuriedcode

あなたのためにBuriedcode、別のポイントをありがとうございます。ある一つのことは私は必要なビットを書き込む前に必ずする受信機のアルゴリズムを叩いています。

想像してみ:

私は
、 ビットを得る- 1111000

ときにロジックハイの冒頭になると、そこにしばらく滞在。どのようにマイクロコントローラは
、 ビットをハイに3回にご滞在知っている?

ため
、 私はそれ以上の処理は私のバッファ内のマンチェスター復号化などの各ビットを格納する必要があります。私は
、 割り込み
、 または他のsummatを実装するか?

あなたは私別の擬似コードでは
、 原料を提供してくださいできますか?

マーヴェリックマックス

 
マーヴェリックマックス

ロング古いスレッドはありませんが

<img src=¥"http://www.edaboard.com/images/smiles/icon_biggrin.gif¥" alt=¥"とてもハッピー¥" border=¥"0¥" />引用:

想像してみ:私は、ビットを得る- 1111000ときにロジックハイの冒頭になると、そこにしばらく滞在。
どのようにマイクロコントローラは、ビットをハイに3回にご滞在知っている?
 
Buriedcode書き込み:最後に、なぜ私は、受信側では、UARTを使用して提案したのか分からない。
Tx用その罰金が、これは、Rx干渉やノイズが多くなっている、それを受け取るには、UARTをトリガします。
 
陰と陽書き込み:やあBuriedcodeアウトcurosityの、あなたの以前のプロジェクトでこの問題を経験してきた?私はあなたのポストは非常にマンチェスターコーディングとビットバッシングについての興味深いデータが見つかりました。
場合は、線形符号とRSのような機能¥を備えた無線チップを購入しかし、時間の節約になる- 232?
これまで私にとっては、一匹狼の最大処理速度だろうとEDAboardの人々 。もし1つを得ることが可能¥である場合、任意の適切なRFチップを知っていますか?
陰と陽
 
こんにちはすべて、

多くのRFモジュールは、'は'透明性は、これらの独自のエラー補正、スペクトル、および他の多くの'鐘と広がって提供しているホイッスル'。私は実際に使用していない

<img src=¥"http://www.edaboard.com/images/smiles/icon_sad.gif¥" alt=¥"悲しい¥" border=¥"0¥" />

私は常に挑戦し
、 ゼロから物事をデザインが好きだ、それは私を学ぶことができますているので、すべてを完全に制御することを意味します。さらに、中古買いしたモジュールは
、 簡単な方法をされ

<img src=¥"http://www.edaboard.com/images/smiles/icon_biggrin.gif¥" alt=¥"とてもハッピー¥" border=¥"0¥" />ただし
、 いくつかの非常には
、 北欧のモジュール(が好きで、microlinearからのもの)は、2.4GHzの、500メートル、低消費電力comsuption、高速、FHSS)近年のいくつかの本当に安いものは、とされていません出てくる持っている高価なものだとはいえ、 、空想が
、 それは全体の多くのセットアップは
、 リンクしやすくなります。

http://www.lprs.co.uk/main/product.info.php?productid=152
http://www.lprs.co.uk/main/product.info.php?productid=153 433MHzの場合の

http://www.lprs.co.uk/main/product.info.php?productid=155
http://www.lprs.co.uk/main/product.info.php?productid=156 868/900Mhzてください。

上記の両方のシンプレックスリンク(片道)とRS232インターフェイス()が適切なレベルシフトを与えられた。しかし
、 直接UARTにマイクロ、コーディングのすべてのフォームをせずに、モジュール内のマイクロsdinceにインタフェースすることができますあなたのためにはありません。基本的にマーベリックは、マイクロコントローラが既に存在している。

また、もしあなたのアプリケーションは単に'を必要とするゲート制御などの制御'、、車の警報、セキュリティなどの..ようこそASICのは
、 汚れの格安され
、 すべての暗号化を行う、チャネルコーディングなどpacketingの負荷です。これらの一般的に送信することができない
、 実際のデータ'、にほんのスイッチのオン/オフ。

http://www.rentron.com/PicBasic/RemoteControl.htm

ただし
、 多分ビットの販売代理店(ファーネル)からの買いに比べて高価なこのサイトは
、 販売のため、スタッフのトンをしています。

chips.

私は 、Holtek
チップを見ている。一部では
、 いくつかのスイッチです(おそらく
、 車の警報
、 世界中で使用される)と一部のユーザーデータを送信するように構¥成することができます。もう一度、すべての複雑なものはあなたのために行われます。
マーベリック、これらは
、 あなたは、RFを使用することをお勧めするモジュールが

<img src=¥"http://www.edaboard.com/images/smiles/icon_biggrin.gif¥" alt=¥"とてもハッピー¥" border=¥"0¥" />ホープ
、 このことができます。と私は言ったそして、私は最初から物事を設計するように、私は
、 チップの多くを使用すると/モジュールが、上記の私の最新のプロジェクト4Mbので実行/秒、低遅延で、私はまだその場合は
、 チップを見つけなければならないチャネルの私のエンコーディングです。

BuriedCode。

 
やあ

http://www.rentron.com/ruf-bot.htm

このリンクは
、 男私のような同様のプロジェクトを行っているが
、 彼はマンチェスターコーディング、プリアンブルまたはNOTゲートを使用していない場合表¥示されます。彼はただのシリアル通信を使用します。

これまで私に対して私AT89C51とC言語を使用するとPICを16F84とBASIC langauge使用している知っている。他に何が?

マーヴェリックマックス

 

Welcome to EDABoard.com

Sponsor

Back
Top