www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik FT232BM empfängt echo im RxBuf[] von TxBuf[]??


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

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe mein µC mit nem Max485 am USB-RS485 verbunden und sende mit .NET 
mit nem simplem Dialog openport(), WriteFile(), ReadFile(),ClosPort() 
meine Daten. Die Kommunikation funktioniert soweit gut abei 115kBaud 
doch leider empfange ich im RxBuf auch meine gesendeteten Daten. Wenn 
ich die Verbindung mit dem µC trenne habe ich auch noch die gesendeten 
Daten aus meinem TxBuf am Anfang von RxBuf stehen.
Mit anderen Konvertern habe ich nicht das Problem!


I füge das Programm einfach mal an, welches nurt noch comliliert werden 
muss mit einem screenshot vom watch-fenster.

Hat jemand schon mal mit so einem Konvertor gearbeitet? Normalerweise, 
darf er die Kommunikation nicht beeinflussen und einfach den ComPort 
"spielen"!

Der Konverter ist ein FT232BM mit dem Treiber von:
http://www.ftdichip.com/Drivers/VCP.htm 2.04.06

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dir ist klar, daß RS485 eine Halbduplexverbindung ist und daß ein Sender 
am RS485 die eigenen gesendeten Daten "mithört"?

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

Bewertung
0 lesenswert
nicht lesenswert
Da es keine wirliche "RX" bzw "TX" Leitung gibt sondern A&B kann ich 
anhand /RE und DI erkenne ob ich sende oder im Empfangsmodus bin. Aber 
der Konverter muß sowas doch wissen bzw. mit der Entprechenden 
Pinbelegung aus dem Datenblatt genau diese Problem schlatungstechnisch 
intern Vermeiden, da er ja sonst mein Protokoll beeinflusst. Mein RS485 
sendet meinem µC ja auch nicht die vom µC gesendetetn Daten zurück... 
oder ist das etwa anders...
ich hänge das pdf von der Manual man an.

gruß

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ... Aber der Konverter muß sowas doch wissen bzw. mit der Entprechenden
> Pinbelegung aus dem Datenblatt genau diese Problem schlatungstechnisch
> intern Vermeiden, da er ja sonst mein Protokoll beeinflusst.
Nein, eben nicht!

Zur Erläuterung (und wie Rufus bereits sagte) hört sich ein 
RS485-Teilnehmer selber reden. Und das ist gut so, weil er dann erkennen 
kann, ob ein anderer Busteilnehmer gleichzeitig gesendet hat, was den 
Bus stört. Man muss dazu den Tx- mit dem Rx-Buffer vergleichen, nachdem 
das letzte Zeichen gesendet wurde.

FTDI verwendet in den AppNotes genau diese Schaltungsart und steuert 
soweit ich weiss /RE und DI getrennt an. Wenn du nicht hören willst, was 
du rauspustest, dann musst du /RE und DI mit dem gleichen Signal 
ansteuern.

Ralf

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das heist, dass ich beim öffnen des ComPort auch die Handshake-Signale 
DTR und RTS setzten / zurücksetzten muss, damit der Konverter weis, das 
er jetzt sendet und ich damit RE und DI setzte  zurücksetzte...  ich 
versuches mal...

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nix.... ich kann doch bestimmt mit DCB settings meinem Konverter sagen 
wnn ich sende oder wann ich empfangen soll, da intern villeicht ein 
Handshake wie beim rs232 geschieht oder? ...

in diesem Falle müsste mann mit folgenden Funktionen arbeiten:


z.B.: EscapeCommFunction(_hCom, SETRTS);

oder generell einstellen:

// CtsRtsFlowControl:
      dcb.fOutxCtsFlow = TRUE;
      dcb.fOutxDsrFlow = FALSE;
      dcb.fRtsControl = RTS_CONTROL_HANDSHAKE;
      dcb.fOutX = FALSE;
      dcb.fInX = FALSE;

    // CtsDtrFlowControl:
      dcb.fOutxCtsFlow = TRUE;
      dcb.fOutxDsrFlow = FALSE;
      dcb.fDtrControl = DTR_CONTROL_HANDSHAKE;
      dcb.fOutX = FALSE;
      dcb.fInX = FALSE;

  // DsrRtsFlowControl:
      dcb.fOutxCtsFlow = FALSE;
      dcb.fOutxDsrFlow = TRUE;
      dcb.fRtsControl = RTS_CONTROL_HANDSHAKE;
      dcb.fOutX = FALSE;
      dcb.fInX = FALSE;

  //DsrDtrFlowControl:
      dcb.fOutxCtsFlow = FALSE;
      dcb.fOutxDsrFlow = TRUE;
      dcb.fDtrControl = DTR_CONTROL_HANDSHAKE;
      dcb.fOutX = FALSE;
      dcb.fInX = FALSE;


Gibt es zusätzlich noch ein Byte was ich setzten muss umd wirlich nur 
ein Senden zu realisieren?
Gruß

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mir war eigentlich so, als ob die FTDIs das Umschalten über eine 
spezielle IO-Funktion unterstützen. Nix mit Umschalten per RTS/CTS oder 
DTR/DSR. Guck doch nochmal im Datenblatt nach, müsst mich arg täuschen, 
wenns nicht so ist.

Ralf

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Mir war eigentlich so, als ob die FTDIs das Umschalten über eine
> spezielle IO-Funktion unterstützen. Nix mit Umschalten per RTS/CTS oder
> DTR/DSR. Guck doch nochmal im Datenblatt nach, müsst mich arg täuschen,
> wenns nicht so ist.
Sorry, ich hatte recht und doch unrecht :)

Die könnens zwar, aber erst seit der R-Version. Okay, an meiner Aussage 
die Richtungsumschaltung mit dem gleichen Signal zu machen ändert sich 
dadurch aber nix. Damit stellst du den Treiber dann auf taub, wenn er 
sendet.

Ralf

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei FTDI Support sagte man mir, das ich je nachdam welchen Pin ich vom 
SUB-Stecker beschalte ECHO ON/OFF schalten kann. Natürlich íst es von 
Nutzen seine eigenen gesendetetn Daten zu sehen, aber bei einem Master 
und mehreren Slaves die Antworten, kann das besser SW-technisch 
ermöglicht werden, um somit die Datenrate zu reduzieren etc..

... leider habe ich von FTDI noch keine Anwort, welche Pins ich jetzte 
genau und wie beschalten muss...

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.