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
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.
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.
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 | }
|
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?
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.
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.