www.mikrocontroller.net

Forum: Compiler & IDEs USB UART Problem


Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe ein Problem mit der Kommunikation über den FTDI FT232RQ und 
HyperTerminal.
Mit RS232 und Pegelwandler (MAX232) klappt die Kommunikation 
einwandfrei. Schließe ich allerdings FT232RQ statt den MAX232 an klappt 
es nur bedingt. Denn im Normalfall wartet das Programm auf eine Eingabe 
meinerseits und läuft dann weiter aber im Fall wenn der FT dazwischen 
geschaltet ist läuft es direkt weiter. Es sieht so aus (auch 
messteschnisch nachgewiesen) das der FT selbstständig Zeichen sendet 
welches dann mein Programm weiter laufen lassen.
Ich habe auch schon wie im Forum gepostet eine Verbindung zwischen
RTS--CTS
gemachts was allerdings nichts bewirkte.
Im HyperTerminal habe ich auch schon "mit" Flusssteuerung als auch 
"ohne" eingestellt. Sonst habe ich dort 8N1 mit 9k6.

Danke.

Daniel

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, sehr interessant. Ich sehe etwas... sehr nebuloes... nein, doch 
nicht.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

also wenn ich einen FT232 hätte, der ohne mich zu fragen einfach Zeichen 
sendet, also dann... dann...
Na der könnte was erleben!

Zum Glück habe ich solche einen noch nicht gehabt, obwohl ich die Teile 
gern und oft benutze.

Gruß aus Berlin
Michael

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

Bewertung
0 lesenswert
nicht lesenswert
Peter Stegemann schrieb:
> Hm, sehr interessant. Ich sehe etwas... sehr nebuloes... nein, doch
> nicht.

Gib deine Glaskugel zum Service. Mit einem guten Fensterreiniger kann 
man da noch was machen.

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also ihr vermutet Chip kaputt?? oder kann es sein dass er irgend ein 
steuersignal o.ä. sendet, welches der Mikrocontroller falsch 
interpretiert?

Weliche Info könnte ich Euch noch geben, dass mir geholfen werden kann 
und die Glaskugl nicht unbedingt angeworfen werden muss?

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

Bewertung
0 lesenswert
nicht lesenswert
Daniel schrieb:
> also ihr vermutet Chip kaputt?? oder kann es sein dass er irgend ein
> steuersignal o.ä. sendet, welches der Mikrocontroller falsch
> interpretiert?
>
> Weliche Info könnte ich Euch noch geben, dass mir geholfen werden kann
> und die Glaskugl nicht unbedingt angeworfen werden muss?

zb. Schaltplan
zb. Program

Sollte eigentlich selbstverständlich sein.
Du gehst ja auch selbst zum Doktor, wenn du ein Problem hast, damit er 
sich die Sache in Natura ansehen kann.

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

Bewertung
0 lesenswert
nicht lesenswert
also mein Doktor... nein lassen wir das :)

Im Anhang hab ich den Schaltplan angehängt. Ist allerdings die billige 
Version aus dem Datenblatt des FTDI's. Die Leitungen RTS, und CTS habe 
ich auch schon wahlweise offen gelassen und die Bauteile mit n.b. sind 
mittlerweile wie im Datenblatt angegeben bestückt. RX und TX gehen an TX 
u. RX des MSPs

Meine Interrupt Routine sieht wie folgt aus(aber wie gesagt sie 
funktioniert mit Pegelwandler anstelle des FTDIs problkemlos):
 nterrupt(USCIAB0RX_VECTOR) usart0_rx()
{
  if (uart_i == 0 && UCA0RXBUF == '\r')  
  {
    uart_in[uart_i] = '\0';        
  }
  else if (UCA0RXBUF == '\r' || UCA0RXBUF == '\b' || uart_i == MAXLINE-1 )
    {               
      uart_in[uart_i] = '\0';    
      uart_i = 0;          
      uart_r_tx = 1;        
                    
    }
    else if ((UCA0RXBUF >= 0x30) & (UCA0RXBUF <= 0x39))
      {             
        uart_in[uart_i++] = UCA0RXBUF;  
      }
      else
      {
        uart_in[0] = '\0';    
        uart_i = 0;        
        sprint("\r\nFehlerhafte Eingabe.\r\n\n");
      }
  //uart_in[uart_i++] = UCA0RXBUF;
  IFG2 &= ~UCA0RXIFG;                      
}

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

Bewertung
0 lesenswert
nicht lesenswert
Und wie wertest du das ganze dann aus?
In der Interrupt Routine ist nicht wirklich irgendein Mechanismus 
erkennbar, der einer Hauptschleife mitteilen könnte: Jetzt ist eine 
Zeile vollständig vorhanden.

Edit:
Oder macht uart_r_tx diese Benachrichtigung?

Hast du dir die empfangenen Zeichen schon mal zur Kontrolle ausgeben 
lassen?

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
im Hauptprogamm werte ich uart_r_tx aus.
if (uart_r_tx == 1)      
{
      sprint(uart_in);
                        uart_r_tx = 0;      
}

ich hab mir das Zeichen aus schon ausgeben lassen, aber es wurde kein 
Zeichen angezeigt sondern war nur ein Return.

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

Bewertung
0 lesenswert
nicht lesenswert
Daniel schrieb:

> ich hab mir das Zeichen aus schon ausgeben lassen, aber es wurde kein
> Zeichen angezeigt sondern war nur ein Return.

Oder irgendetwas anderes.
Dort ist dein Punkt an dem du ansetzen musst.
Vergiss dein eigentliches Programm fürs erste, die Kommunikation 
zwischen FT und µC muss sicher klappen. Wenn dazu ein paar eigene 
Testprogramme notwendig sind, dann sind sie eben notwendig.

Einfaches Testprogramm:

  Zeichen empfangen
  Zeichen und Hex-Code vom Zeichen zum Terminal zurückschicken.

Solange du dort nicht alle Zeichen siehst und zwar so wie du sie 
eingegeben hast, ist was faul und dem muss man nachgehen. Baudraten 
könnten falsch sein, etc.

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok danke dir. Ich werde da nochmal ansetzten.
Wobei mich halt verwundert, dass wenn ich die RX u. TX Leitung an den 
Pegelwandler packe und ich direkt über RS232 an den Rechner gehe eine 
Komunikation über Hyperterminal problemlos mit dem gleichen Code 
funktioniert

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.