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?
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.
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.
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.
Es ist egal was ich sende(Wie gesagt hab schon ne While Schleife mit allen möglichen Werten durchlafuen lassen) es kommen nur Nullen an. Auch das mit dem Reiben hab ich schon ausprobiert.
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.
Hey, Dankeschön werde ich heute Abend einfach mal ausprobieren und über Erfolg oder Misserfolg hier berichten.
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
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.
Habe deinen Hallo Welt code auf HTerm und TeraTerm probiert. Kein Erfolg. Finde HTerm persönlich schöner weil ich mir die Daten in Hex anzeigen lassen kann.
Dann scheint deine Hardware defekt zu sein. Der 2te Code liefert auch keine Ausgabe ?
Tag, leider hab ich erst heute Abend Zeit eventuell sogar leider erst morgen den zweiten Code auszuprobieren. Gruß Tobias
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
Hast du auch das richtige Target ausgewählt ? Welche Einstellungen hast du denn vorgenommen ?
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
Hmm funktinoiert auch nicht. Du benutzt aber auch IAR oder Code Composer? Wie spielst du das Programm auf den Controller? Irgendwo muss ja ein Unterschied sein. Gruß Tobias
Download and Debug und dann auf Go, mehr mache ich auch nicht. Pack mal dein gesamtes Projekt und dann kann ichs hier ausprobieren.
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.
Kann ich dir nur noch TeamViewer anbieten :-) mehr fällt mir nicht ein.
oder du schickst mir mal deinen Projektordner und ich versuche es damit mal. Gruß Tobias
Anbei mal der LED blinky code, versuch mal ob das Projekt geht... wenn das schon nicht geht dann weiß ich es nicht. Sollte es funktionieren dann per cut & paste den anderen Code hineinwerfen.
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
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.
Hmm muss jetzt grade los. Also vllt ein ander mal hoffe du hast eventuell auch noch wann anders mal Zeit und Lust. Gruß Tobias
Tobias, für TXByte ist der Datentyp char nicht ausreichend, du willst ja inclusive Start- und Stopbit 10 Bit übertragen.
@ Stefan, das funktioniert, keine Sorge, siehe Screenshot. TXByte = (c |= 0x100); Bei den TI Blogs steht ne Menge falsches Zeug. Hast du ein Launchpad dann häng ich dir meine Variante gerne hier herein.
Hallo Stefan, du bringst mich immer wieder zum nachdenken :-) eigentlich hast du recht aber... anbei mal der original Code von TI mit Quarz. Mein Beispiel läuft nur mit dem internen DCO. Bring mal ein bischen Licht in die Sache :-)
Ich habe gerade mal txData |= 0x100; rausgeschmissen und es geht immer noch fehlerfrei :-)
Interessant, das funktioniert tatsächlich mit allen in diesem Thread angehängten Programmen. Die Zeile TXByte |= 0x100; kann man dann aber auch noch weglassen und es funktioniert immer noch.
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.
Moin, >> Die Übertragung von 8-Bit Zeichen mit gesetztem höchsten Bit wird mit >> TXByte als char wohl nicht funktionieren. Ja, funktioniert ebenso. Woher kommt das 9te BIT ?
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
> bei mir funktioniert die Übertragung von 8-Bit Zeichen mit gesetztem > höchsten Bit nicht wenn TXByte als char definiert ist. Und was passiert, wenn es als "unsigned char" bzw. korrekt als uint8_t definiert ist?
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.
Hallo Bernd, du hast in deinem Beispiel eine Möglichkeit zur Kalibrierung vorgesehen. Wie hast du kalibriert? den msp in eiswasser?
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.