Hey, hat schonmal jemand das "msp430xG46x_usart1_19200.c" Codeexsample von TI getestet? Das gibt doch eigentlich den empfangen Char zurück? Jetzt ist die Frage, ob ich meinen H-Term falsch eingestellt habe oder was sonst noch falsch sein kann, bei dem Verbindungsaufbau mit dem PC?! Denn bei mir kommt nix zurück :( Ein gekreuztes Serialkabel muss man da auch nicht nehmen?
Hast du denn auch nen Pegelwandler mit dabei für rs232 ? mfg Erik
wenn an RS232 dann entspricht logisch 1 -10Volt und Logisch 0 +10Volt also nie direkt anschließen / Pegelwandlung über AD232 bzw Max232 wenn an USB dann braucht du auch nen Adapter. zb If-USB2 mfg Erik
Ja, das hab ich schon mal gelesen. Hm. Aber ich hab meinen MSP430FG4618 auf dem Experimenter Board :) Meint ihr nicht, dass der µC dort abgesichert wurde? Ich hab das nun schon angesteckt :( Nicht die entsprechenden Teile abgeraucht sind. Also auch mit so einem Board einen Pegelwandler benutzen. Bzw. hab ich gelesen das man die Pegel auch Softwaretechnisch umdrehen kann. Hat da jemand ein Beispielcode? :)
Stefan M. schrieb: > Aber ich hab meinen MSP430FG4618 > auf dem Experimenter Board Und was exakt mag das sein?
Meinst du das ironisch, Rufus? :) Dann würde ich sagen, ein "verlängerter Arm" mit einer RS232 ohne Pegelwandler, wahrscheinlich. Nein, also im Ernst ... ist es ein Board auf dem man alle Funktionen des µC's testen kann ;)
Die Frage war durchaus ernstgemeint, denn es gibt von ziemlich vielen Herstellern ziemlich viele Boards, die irgendwas tun. "Das Experimenters Board" ist zu ungenau. Das von Dir verwendete Board nutzt eine durch Optokoppler galvanisch isolierte serielle Schnittstelle. Diese Schnittstelle nutzt den Signalpegel der Signalleitungen des PCs zur Speisung der dem PC zugewandten Seite, das bedeutet, sie funktioniert nur dann, wenn die Leitungen 3 (TxD) und 4 (DTR) sinnvollen Pegel aufweisen. TxD ist im Ruhezustand 1 (-10V), DTR muss daher auf 0 (+10V) gesetzt werden. Das muss Dein PC-Programm erledigen, d.h. Du musst bei H-Term dafür sorgen, daß auf DTR dieser Pegel ausgegeben wird.
Ok, das hilft mir schon um einiges weiter :) In H-Term kann man DTR ja direkt anklicken. In dem moment wo ich DTR aktiviere, erhalte ich auch ein 0x00 zurück. Dieses wird allerdings als Fehler markiert, wenn man sich die Fehler anzeigen lässt. Ist das normal? Weil es ja im Grunde kein gewolltes Zeichen ist, was ich da erhalten habe. Andere Zeichen ließen sich allerdings nicht senden :( hach ist das kompliziert mit dieser Schnittstelle . . .
Du könntest ein Oszilloskop verwenden, und Dir die vom MSP430 gesandten Daten auf der Seite vor dem Optokoppler ansehen. Auch könntest Du die Spannung an den beiden Elkos messen, die auf der PC-Seite der Optokoppler zu finden sind.
Ach ja, das Oszi :) Irgendwie denke ich da nie dran, wenn ich es verwenden könnte. Also ich hab jetzt an 3 Punkten gemessen. (siehe Bild rote Punkte) Vor der Diode D2 bzw. auch dahinter, habe ich -10 V wenn DTR deaktiviert und + V wenn DTR aktiviert ist. Wenn ich aber per Tastatur in H-Term irgend ein Zeichen sende, ist meine Spannnung vor bzw. nach R9 immer 0V. Sporadisch erschien mal ein peak. Aber das könnte wohl auch sonst was gewesen sein. Vor der Diode D3 erhalte ich auch solche Peaks. Allerdings auch nicht immer, aber schon häufiger beim Senden eines Zeichens. Kann es sein, dass ich nicht zu schnell hintereinander Zeichen senden darf. Aber das müsste die Schnittstelle ja alleine regeln können, wie ich gelesen habe. Wo genau könnte man noch messen.
Miss mal die Spannung am Punkt zwischen C4 und D3, die sollte die umgekehrte Polarität der Spannung am Punkt zwischen C3 und D2 haben. Nur wenn das so ist, bewirkt ein Ausgeben von Daten über UCA0TXD (R9-Q1), daß der Ausgang des Optokopplers U2 (Pin6) mit dem richtigen Pegel (umgekehrte Polarität zum Signal UCA0TXD) "herumwackeln" kann.
Also ... die Spannung zwischen C4 und D3 ist -7V und zwischen C3 und D2 + 10V. Vom PC gesendete Zeichen scheinen doch anzukommen, da ich nach einem ENTER an U1 PIN6 und PIN2 einen Peak erhalte. Ist nur fraglich, wieso das Zeichen nicht als Echo wiedergegeben wird. So sollte es ja der Code machen. Vielleicht schreib ich den Code einfach mal um, dass der µC permanent ein Zeichen sendet. Was hälst du davon? Wäre doch auch ein guter Schritt in die Richtung, wenn man Daten an den PC übertragen will, oder? :)
Stefan M. schrieb: > Vom PC gesendete Zeichen scheinen doch anzukommen, da ich nach einem > ENTER an U1 PIN6 und PIN2 einen Peak erhalte. Für den Empfang durch den MSP430 sind die von mir angesprochenen Spannungspegel auch nicht relevant, die sind nur wichtig, damit der MSP430 an den PC senden kann. Damit der PC Daten empfangen kann, müssen diese mit (halbwegs) korrektem RS232-Signalpegel an der RxD-Leitung des PCs anliegen. Also muss die Optokoppler-Mimik irgendwie diese Pegel erzeugen können, da sie aber keine dedizierte Versorgungsspannungsquelle hat, werden hier Signalpegel genutzt, die der PC liefert, um diese Versorgungsspannungsquelle nachzubilden. Und also müssen die "missbrauchten" PC-Leitungen den jeweils richtigen Pegel haben, damit das funktionieren kann. Wesentlich einfacher wäre die Angelegenheit für Dich, wenn Deine Testplatine statt einer galvanischen Trennung mit Optokopplern einen normalen RS232-Leitungstreiber mit integrierten Pegelwandlern à la MAX232 verwenden würde, denn dann würde die Testplatine auch dann korrekte Pegel senden können, wenn gar keine Gegenstelle angeschlossen ist. Stefan M. schrieb: > Vielleicht schreib ich den Code einfach mal um, dass der µC permanent > ein Zeichen sendet. Was hälst du davon? Auf jeden Fall!
Hi, ich habe jetzt mal den Beispiel Code "msp430xG46x_usart1_uart_2400.c" versucht umzuschreiben. Aber irgendwie kommt bei meinem H-Term nichts an. Die Einstellungen seht ihr im anghängten Bild. Die 3 Zeichen die empfangen wurden, sind durch das betätigen von dem DTR Button entstanden. Hab ich irgendwas in meinem Code übersehen? Das das TXBUF1 ready ist, sehe ich ja auch an meinem P5.1 Port an dem eine rote LED hängt, die leuchtet bzw. blinkt, nur eben so schnell das man es nicht sieht ^^ Dennoch sehe ich den Buchstaben der vorher eigentlich übermittelt werden soll nicht bei H-term. Wo ist denn da mein Fehler?
Hallo Stefan, ganz sicher bin ich mir nicht . laut dem Experimentierhandbuch sind die Seriellen am Port 2 dran .Seite18 UCA0RDX ist P2.5 du definierst sie am Port 4 . mfg Erik
Moin moin, leider liegt es nicht daran. Hab die Zeile mal Versuchsweise in P2SEL |= 0x30; geändert, was aber keine Auswirkungen hat. Im Datenblatt Datasheet.SLAS508H - msp430fg4618.pdf steht: P2.4/UCA0TXD --> USCI_A0/UART or IrDA mode P2.5/UCA0RXD --> USCI_A0/UART or IrDA mode P4.1/URXD1 --> receive data in - USART1/UART mode P4.2/UTXD1 --> transmit data out - USART1/UART mode Diese Information deckt sich auch mit den Angaben aus dem Datenblatt des Experimentersboard auf Seite 18. Es muss also woanders liegen. Mein RS232 Kabel ist auf jedenfall das richtige, dass hab ich gestern nochmal druchgemessen. Und beim betätigen von dem DTR Button in H-Term erhalte ich ja auch ein undefinierbares Zeichen im Empfangsfenster von H-Term. Von daher besteht ja irgend eine Verbindung. Und die Baudrate von 2400 stimmt auch. Habe diese nochmal mit dem Userguide auf Seite 17-16 überprüft. Was könnte es noch sein?
Es wird nach wie vor der inkorrekte Pegel der Handshakeleitungen sein, der dafür sorgt, daß die Optokopplermimik nicht richtig funktioniert. > Mein RS232 Kabel ist auf jedenfall das richtige, dass hab ich gestern > nochmal druchgemessen. Das machst Du jetzt woran fest? Das muss ein 1:1-Kabel sein, kein "Nullmodemkabel". Hast Du denn zwischenzeitlich > Vielleicht schreib ich den Code einfach mal um, > dass der µC permanent ein Zeichen sendet. mal umgesetzt? Hast Du mal ein Oszilloskop an die schon vor längerer Zeit besprochenen Anschlüsse gehalten und dem dauernden Senden zugesehen?
>> Mein RS232 Kabel ist auf jedenfall das richtige, dass hab ich gestern >> nochmal druchgemessen. > > Das machst Du jetzt woran fest? Das muss ein 1:1-Kabel sein, kein > "Nullmodemkabel". Hab das Kabel mit einem Durchgangsprüfer durchgemessen. Pin 2 kommt auch auf Buchsenloch 2 und Pin 3 kommt auf Buchsenloch 3 an. Den umgesetzten Code, dass der µC nur ein Zeichen sendet, habe ich im Anhang vom Beitrag mit dem Datum 28.03.2011 17:03. (3 Beiträge weiter oben ;)) Mit diesem Code erhalte ich beim Senden über den PIN 4.0/UTXD1 ein Signal, welches man im Bild USART_permanent_Sending.jpg sehen kann. Der Pegel an den Messpunkten zwischen C4 und D3 ist -6V. Zwischen C3 und D2 liegen nur -3,5V an. Vor D2, also zum RS232 Connector hin, habe ich -10V.
Stefan M. schrieb: > Hab das Kabel mit einem Durchgangsprüfer durchgemessen. Pin 2 kommt auch > auf Buchsenloch 2 und Pin 3 kommt auf Buchsenloch 3 an. Gut. Und was ist mit Pin 4, gibt es den auch? Wie sieht das Oszillogramm aus, wenn Du direkt an Pin 2 der DB-9-Buchse misst (bei Oszilloskop-Masse an Pin 5)?
Pin 4 ist auch an der Buchse an 4. Stelle. Pin 2 zur Masse Pin 5 hat -50mV DC ... Hm, ist es vielleicht doch so, wie Erik sagte, dass UTXD1 nicht zu meiner RS232 Verbindung auf meinen Board führt. Je länger ich mir den plan betrachte aus dem Userguide des Experimenters Board, um so logischer erscheint es mir, dass UTXD1 nur ein offener PIN zum Senden ist, aber nicht an meine RS232 Schnittstelle führt.
Wie der von Dir in Beitrag "Re: msp430xG46x_usart1_19200.c "tested"?" gepostete Schaltplan zeigt, werden UCA0TXD und UCA0RXD genutzt.
Ja, korrekt. Hab das Programm jetzt auch mal komplett auf UCA0TXD umgeschrieben und siehe da, ein Zeichen nach dem anderen kommt im Terminal an. Allerdings nicht das, welches eigentlich übertragen werden sollte. Wer ahnt denn auch, dass TI Beispielprogramme für einen offenen Pin erstellt ^^ Aber wer lesen kann, ist klar im Vorteil. Danke dir Rufus und auch ein Danke an Erik ;) Wieso aber erhalte ich im H-Term nur "00" ? Wollte eigentlich ein "H" haben :D Anbei mein umgeschriebender Code.
Hi Stefan, sag mal, funktioniert der von dir gepostete Code eigentlich? Kann man damit mit der RS232 Buchse am Experimenters Board und dem PC kommunizieren? Sitze derzeit genau an dieser Stelle fest. (sorry fürs ausgraben, aber ich wurde so nett von einigen Forenmitgliedern auf diesen Thread hingewiesen ;-) )
Hi, also das Programm funktioniert so wie ich es in dem letzten Post beschrieben habe. Er sendet und empfängt, jedoch gibt mit H-Term immer eine 0 aus...sprich irgendwo in der Übertragung ist noch ein Fehler. Hab das Programm auch schon erweitert, bei dem eine Übertragung von mehreren Zeichen gemacht wird. Das klappt so einigermaßen, bringt aber auch manchmal noch kauderwelsch beim übertragen hervor :) Probier mal den Code im Anhang. Aber wie gesagt, manchmal haperts noch. Woran das liegt weiß ich nicht. Arbeite momentan auch nicht weiter dran. Von daher, viel Erfolg ;)
Hi, vielen Dank für die schnelle Antwort in diesem doch etwas älterem Thread. Ich werde dein Snippet morgen mal testen und dann berichten :-) Ciao, Roland
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.