mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART Senden/Empfangen RTS verwenden oder unnötig?


Autor: Studi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo allerseits

Ich verwende Matlab Simulink um serielle Daten vom Mikrocontroller zu 
senden und zu empfangen (siehe anhang).
Ich schaff es problemlos Daten von Matlab zum Controller zu senden, aber 
ich kriege es nicht hin, dass er daraufhin Daten wieder zurücksendet. 
Der ablauf sieht so aus:

Matlab sendet Daten --> Controller

Controller empfängt gültige Daten ---> sendet "OK" an Matlab zurück

Anstatt das "OK" zu erhalten, empfange ich nur daten, die ich gesendet 
habe.
Nun hab ich gelesen, dass man RTS verwenden muss, um zwischen Senden und 
Empfangen zu schalten.

Ich habe auch unter Matlab eine Option gefunden, um auf RTS zu schalten. 
Meine Frage ist, wie wird es auf der
Controllerseite gemacht? Gibt es dazu ein Register?
Oder ist RTS gar nicht nötig und muss nur vor dem Senden an Matlab das 
Empfangsregister deaktivieren?

Über eure Tipps wäre ich sehr dankbar!!

Grüsse

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RTS hat mit deinem Problem ziemlich sicher nichts zu tun.
CTS/RTS ist eine Handshake Methodik. Damit sagt der Empfänger dem 
Sender: "Hey nicht so schnell, ich komme nicht nach. Warte mal ein 
wenig"

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> CTS/RTS ist eine Handshake Methodik. Damit sagt der Empfänger dem
> Sender: "Hey nicht so schnell, ich komme nicht nach. Warte mal ein
> wenig"

Ja, das kommt noch aus den Urzeiten, wo die UARTs noch keine FIFO hatten 
und der PC noch mit 4,77MHz lief.
Heutzutage sind unter Windows 4kB FIFO üblich, das reicht in der Regel.
Und auf seinem MC sollte man auch nen FIFO einrichten, der der zu 
erwartenden Paketlänge entspricht.

Die zusätzlichen "Bremsleitungen" werden daher kaum noch verwendet.


Peter

Autor: Studi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

danke erstmal für die Info.
Ich verwende den Baustain MAX483 und dieser hat ein Enable Pin, welcher 
zwischen Senden und Empfangen schaltet (laut Datenblatt). Dieser Pin ist 
bei mir mit PD2 verbunden. Frage: Muss ich diesen Pin immer vor dem 
Senden auf High schalten und sofort danach wieder auf low in der Art:

Set Port PinD to High // enable sending
TransmitData(Data);
Set Port PinD to Low // disable sending

So hab ich es verstanden. Wird das so gemacht od. mach ich es mir wieder 
viel zu einfach? :P

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Kann das sein das du irgendwo eine Brücke zwischen Rx und Tx hast? Dann 
würden die Daten die du über Tx sendest sofort wieder über Rx Empfangen.

Gruß
Michael

Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://de.wikipedia.org/wiki/RS485

rtfm!!!

1. Es ist normal bei rs485 seine eigene Nachricht wieder zu empfangen

2. ja der enable pin ist anzusteuern

3. hast du überhaupt mal das Datenblatt gelesen und verstanden? 
geschweige die Texte über rs485?

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Muss ich diesen Pin immer vor dem Senden auf High schalten und sofort
>danach wieder auf low in der Art:...

Vorsicht. Die UART des ATMega8515 ist gepuffert. D.h. wenn du das Senden 
nicht unterbrechen willst, musst du abwarten, dis das letzte Byte raus 
ist
-> TXC-Bit in UCSRA auswerten.

MfG Spess

Autor: Studi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

ich verwende einen RS-485 Interface Konverter. Das Gerät hat 4 
Anschlusspins:

DCE/DTE....................Monitor
----------------------------------
Transmitter +V.............Receiver 1 +V

Transmitter -V.............Receiver 1 -V

Receiver -V................Receiver 2 -V

Receiver +V................Receiver 2 +V

Zurzeit sind jeweils Transmitter und Receiver gebrückt.
Wie müsste man die Pins richtig verschalten? Hat jemand erfahrung mit 
dem konverter?
Die Anleitung ist ziemlich mager, da steht kaum was drinen :(

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Receiver -V................Receiver 2 -V
>Receiver +V................Receiver 2 +V

????????

MfG Spess

Autor: Studi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo spess

das steht so im Manual. weiss auch nicht was die damit sagen wollen.

der konverter ist dieser hier 
http://shop.deinfo.net/p/43460522/aten-konverter-r...

von meinem kontroller kommen halt nur zwei drähte (Bus über MAX483) zum 
Konverter. wie ich die beiden bus-leitungen am konverter verschalten 
kann, steht da nicht drin. bei zwei drähten ist nur halb-duplex möglich. 
hab es so verstanden, dass zwischen senden und empfangen über das 
"Enable" geschaltet werden muss. Hab es auch so in meiner routine. Aber 
entweder schaff ich es nur zu senden oder nur zu empfangen :(

Hat denn och nie einer diesen komischen konverter bbenutzt?

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>von meinem kontroller kommen halt nur zwei drähte (Bus über MAX483) zum
>Konverter.

Nur 2? Du brauchst TX,RX und Masse.

MfG Spess

Autor: Studi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
nein, ich spreche von einem Bus. TX und RX gehen auf den MAX483 und die 
Ausgänge sind die beiden Bus-Leitungen ;)

µC (RX,TX, EnablePin für Senden/Empfangen) ----> MAX483 ---> 2 Leitungen 
(A, B) ----> Konverter ----> PC Monitor

Habe die Verdrahtung jetzt nach Halb-duplex umgeändert. Und ich schaffe 
es zwar zu senden ( RTS im Hyperterminal eingeschaltet).
Aber das empfangen auf dem hyperterminal geht gar nicht, trotz dass ich 
RTS ausschalte.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.