USB UART Problem

Gast #1368001
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
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
Gast
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?
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.
Gast
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):
1
 nterrupt(USCIAB0RX_VECTOR) usart0_rx()
2
{
3
  if (uart_i == 0 && UCA0RXBUF == '\r')  
4
  {
5
    uart_in[uart_i] = '\0';        
6
  }
7
  else if (UCA0RXBUF == '\r' || UCA0RXBUF == '\b' || uart_i == MAXLINE-1 )
8
    {               
9
      uart_in[uart_i] = '\0';    
10
      uart_i = 0;          
11
      uart_r_tx = 1;        
12
                    
13
    }
14
    else if ((UCA0RXBUF >= 0x30) & (UCA0RXBUF <= 0x39))
15
      {             
16
        uart_in[uart_i++] = UCA0RXBUF;  
17
      }
18
      else
19
      {
20
        uart_in[0] = '\0';    
21
        uart_i = 0;        
22
        sprint("\r\nFehlerhafte Eingabe.\r\n\n");
23
      }
24
  //uart_in[uart_i++] = UCA0RXBUF;
25
  IFG2 &= ~UCA0RXIFG;                      
26
}
Angehängte Dateien:
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?
Gast
im Hauptprogamm werte ich uart_r_tx aus.
1
if (uart_r_tx == 1)      
2
{
3
      sprint(uart_in);
4
                        uart_r_tx = 0;      
5
}

ich hab mir das Zeichen aus schon ausgeben lassen, aber es wurde kein 
Zeichen angezeigt sondern war nur ein Return.
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.
Gast
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.