Erfahrungen UART TI Launchpad

Gast #1940460
Lesenswert?

Hallo,

Ich versuche nun schon seit geraumer Zeit den UART von meinem Launchpad 
zum laufen zu bringen.

Als Programm nutze ich das Temperatursensor Beispiel von TI:

http://processors.wiki.ti.com/index.php/MSP430_LaunchPad_(MSP-EXP430G2)?DCMP=launchpad&HQS=Other+OT+launchpadwiki#Complete_Projects

Als Entwicklungsumgebung nutze ich IAR Kickstart.
Compiler Optimierung ist auf "Low" gestellt.

Die virtuelle COM Schnittstelle lese ich via HTerm aus.
Einstellungen 2400,N,8,1

Das Problem ist das ich immer wenn ich ein Byte übertrage Rechnerseitig 
nur Nullen ankommen.
Ich hab auch mal eine Schleife durchlaufen lasse in denen ich TX Byte 
von 0-255 alle Werte übertragen lassen hab.
Aber auch dort bekomme ich immer nur Nullen.
Auch wenn ich eine LED zwischen TX und GND anhänge kann ich ein blinken 
erkennen. Ein Scope habe ich leider nicht da.

Außerdem hab ich festegestellt as wenn ich meine Compiler Optimierung 
auf "None" stelle, gar keine Bytes mehr bekomme auch keine Nullen mehr.

Auch habe ich versucht den COM Port zu wechseln also mal von COM3 auf 
COM9 umgestellt usw.
Dies brachte allerdings ebenso wenig Erfolg wie das Neuinstallieren der 
Treiber oder Neustarten des Rechners.

Nun hat hier schon jemand ähnliche Erfahrungen mit dem Application UART 
des Launchpad gemacht, oder weiß woran es liegen könnte. Oder ist 
eventuell TI's Beispielcode fehlerhaft?
Gast #1940544
Lesenswert?

Das Beispiel von TI sendet Zeichenfolgen, keine Ziffern und es 
funktioniert auch... wenn auch eher schlecht als recht. Die Beispiele 
sind insgesamt eher mau.

Du weißt aber schon das es auch ein entsprechendes Programm braucht um 
die Temperatur zu messen ? ist ebenso auf der TI WebSite. HTerm bringt 
dir da nicht viel.
Gast #1940550
Lesenswert?

Tag,

Ja es sendet immer einen Byte Hterm bringt mir da schon was ,da ich mir 
die Bytes auch als Hex bzw. Dezimalzahl anzeigen lassen kann.

Bzw würde es mir erstmal schon reichen wenn ich sehe das was anderes 
ankommt als Null.

Die TI GUI funktiniert bei mir gar nicht ab den Punkt wo ich den COM 
Port wählen muss ignoriert er meine Tastatureingaben.
Gast #1940556
Lesenswert?

Leg halt deinen Finger auf den MC und heiz den ein bischen auf... dann 
sollte auch ein anderer Buchstabe zu sehen sein. Ist ja schließlich ne 
Temperaturmessung :-)

Ansonsten baust du das Beispiel ein bischen um, Meßwert itoa z.B.
Gast #1940578
Lesenswert?

Dauerhaftes Senden mag keine clevere Idee sein, wie gesagt, der Code ist 
etwas schräg :-)

Anbei mal ein simples "Hello World" aber es funktioniert. Achtung, ist 
auch eher nur hingemurxt.

Ich kann dir gerne heute abend eine Temperaturmessung von mir 
bereitstellen, habe den Code leider nicht hier auf meinem Rechner.
Angehängte Dateien:
Gast #1940981
Lesenswert?

Tag,

Habe es mit deinem Code versucht.

Meine Einstellungen bei HTerm sind 9600,8,N,1

Ich bekomme jedesmal wenn ich den Button drücke ein Zeichen dieses ist 
aber Müll hab mal ne 7 bekomme mal das Zeichen für 1/2 aber jedes mal 
wenn ich drücke halt nur 1 Zeichen.

Ich glaube mittlerweile es ist entweder ein Treiberproblem werde das 
programm morgne mal an einem anderen Rechner ausprobieren, oder der TUSB 
Chip ist defekt oder etwas in der Richtung werde auch mal versuchen mir 
ein anderes Board auszuleihen und es damit auch nochmals zu probieren
Gast #1941232
Lesenswert?

So, habe noch ein bischen Zeit. Ich habe mir mal HTerm angeschaut und 
ich finde es nicht sehr praktisch... ist aber nett anzusehen.

http://www.heise.de/software/download/teraterm_pro/51776

Ich verwende für solche Tests TeraTerm und das funktioniert klaglos 
obwohl es durchaus weniger Optionen zu bieten hat. Ich würde an deiner 
Stelle mal ein anderes Terminal Programm verwenden.

Im Anhang findest du einen Screenshot mit beiden Programmen. Hier siehst 
du die Ausgabe einer ADC Messung welche ebenfalls auf dem Launchpad 
läuft.

Für die Temperaturmessung habe ich dir einen TestCode beigefügt. Der 
Code unterscheidet sich deutlich von dem TI Beispiel. Die Ausgabe 
erfolgt Terminal gerecht... will sagen, mit der TI Software hat das 
nichts mehr zu tun sondern die Ausgabe erfolgt direkt im Klartext auf 
das Terminal.
Angehängte Dateien:
Gast #1946951
Lesenswert?

Hey,

Bin jetzt dazu gekommen es wieder auzuprobieren bin jetzt allerdings 
noch mehr am verzweifeln.

Und zwar hat das Beispiel von TI was Standartmäßig auf dem Launchpad 
geflasht ist funktioniert hab ein noch verpacktes Launchpad bekommen und 
dieses getestet.

Anschließend hab ich selber ein Programm draufgespielt und nix 
funktioniert mehr auch nicht mit dem obigen Testprogramm.

Es ist also kein Treiberproblem, kein Hardwareproblem und an der 
Software kann es auch nicht liegen. Es kann also nur an den Compiler 
Einstellungen liegen und am Downloaden des Programms.

Ich benutze IAR Embedded Workbench und downloade das Programm mittels 
download and debug. Anschließen lass ich den Controller "rennen".
Auch nach ausstecken des Launchpads und anschließendem einstecken ist 
das Programm noch drauf kann es sein das hier schon ein Fehler ist?

Welche Entwicklungsumgebung nutzt du ?

Gruß Tobias
Gast #1947009
Lesenswert?

Tag,

Einstellungen sind:

Target Einstellungen:
Device MSP430G2231
Size of double 32 bits

Language Einstellugen:
Language: C
C dialect: C99
Language conformance: Standard with IAR extensions

Optimizations:

Low

Debugger
FET Debugger

FET Debugger:
Texas Instruments USB-IF
Spy-Bi-Wire

Das sind so die Hauptsächlen Einstellungen.

Gruß Tobias
Gast #1947095
Lesenswert?

Also... wenn ich dein Projektfile verwende bekomme ich die Fehlermeldung 
"broken Options" und der Optimizer steht immer noch auf low.

Also mal Schritt für Schritt:
- Im Workspacefenster ganz oben links dein Prokekt anklicken.
- Ist das Projekt eingefärbt dann Projekt / Options klicken
- General Options Targe ...G2231
- C Compiler Optimization High, Pulldown Size wählen

Der Rest sollte passen.
Gast #1947143
Lesenswert?

das Blink LED Programm funktioniert.
Habe anschließend das UART Programm von dir reingeladen und das 
funktinoniert wieder nicht.

Komisch...

kann man irgendwie ne .hex oder .bin file erzeugen und diese aufspielen.
Dann könnte man den Fehler weiter einkreisen ?

Gruß Tobias
Gast #1947146
Lesenswert?

Ich kann dir leider so nicht sagen was dein Problem ist, sorry.

Ich kann dir nur anbieten mal mit dem TeamViewer ne Session zu machen, 
du kannst mich einladen. Kanns dir dann vorführen und versuchen dahinter 
zu kommen.

http://www.teamviewer.com/de/download/index.aspx

Du brauchst die Software nicht mal installieren, nur die .exe ausführen 
und mich einladen. Dazu bräuchte ich dann deine Nummer.
Gast #1947332
Lesenswert?

Ups, viel zu lange selbst die verschiedenen Varianten ausprobiert und 
nicht gesehen, dass in der Zwischenzeit ein paar Beiträge dazugekommen 
sind.
Die Übertragung von 8-Bit Zeichen mit gesetztem höchsten Bit wird mit 
TXByte als char wohl nicht funktionieren.
Gast #1947721
Lesenswert?

Bernd,
bei mir funktioniert die Übertragung von 8-Bit Zeichen mit gesetztem 
höchsten Bit nicht wenn TXByte als char definiert ist.
Ich habe es mit deinem HelloWorld Programm vom 17.11. ausprobiert und 
nur den zu übertragenden String geändert.
Wenn ich ASCII 171 (1/2 Zeichen) sende kommt ein + Zeichen an.

Mit dem Problem des Threadstarters hat das aber wohl nichts zu tun.
Ich denke er hat die DCO Kalibrierungswerte gelöscht.

Wenn ich sein Projekt öffne erhalte ich ebenso wie du eine 
Fehlermeldung.
Wenn ich dann das richtige main.c auswähle und das Programm übersetze 
und starte sind bei mir auch die Kalibrierungswerte gelöscht.
Bei den Optionen sollte der Haken bei Debuger - FET Debugger - Download 
- "Allow erase/write acces to locked flash memory" wohl besser nicht 
gesetzt sein wenn unter Flash erase "Erase main and Information memory" 
ausgewählt ist.

Mit einem Launchpad mit aufgelötetem Uhrenuarz hat kann man mit dem "DCO
Calibration Constants Programmer" aus der Beispielprogrammsammlung
http://www.ti.com/lit/zip/slac080 die 1 MHz Kalibrierwerte zusammen mit 
den bei der Value Line Serie im Auslieferungszustand fehlenden Werten 
für 8, 12 und 16 MHz berechnen und ins Information Memory programmieren 
lassen.

Wenn man den Uhrenquarz bestückt sollt man vorher die beiden 0R
Widerstände/Brücken zwischen Quarzanschlüssen und der Steckerleiste
entfernen um einen störungsfreien Betrieb sicherzustellen.

Stefan
Gast #1947845
Lesenswert?

Mit TXByte als "unsigned char" oder uint8_t passiert genau das gleiche 
wie mit TXByte als char. Das ist aber auch so zu erwarten da die 
Optionen hier so gesetzt sind, dass plain 'char' unsigned ist.

Mit TXByte als "unsigned int" oder uint16_t werden 8-Bit Zeichen mit 
gesetztem höchsten Bit natürlich korrekt übertragen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren