MSP430G2231 USART letztes Zeichen kaputt

#2173526
Lesenswert?

Hallo Zusammen.
Ich möchte mit dem MSP430G2231 Analoge werte Wandeln und dann am Rechner 
über die RS232 empfangen.

Funktioniert auch fast.
Bei dem String den ich sende, ist das letze Zeichen immer kaputt.
Egal wie lang oder sonst was.

So sieht das aus was ich empfange. Das letze Zeichen sieht wie ein
Steuerzeichen aus oder so. Ein Viereckiges Kästchen halt.
Kennt von euch jemand den Fehler?
Code ist angehängt.
Danke schon mal für eure Hifle


817,265145  COM4: 339 strin
817,281668  COM4: 341 strin
817,301254  COM4: 344 strin
817,315144  COM4: 341 strin
817,331014  COM4: 343 strin
817,348599  COM4: 346 strin
817,365916  COM4: 346 strin
817,380860  COM4: 347 strin
817,398742  COM4: 346 strin
817,415290  COM4: 346 strin
817,433160  COM4: 342 strin
817,448573  COM4: 347 strin
817,465580  COM4: 344 strin
817,482698  COM4: 345 strin
817,499913  COM4: 340 strin
817,519638  COM4: 346 strin
817,532327  COM4: 350 strin
817,550665  COM4: 344 strin
817,566552  COM4: 346 strin
Angehängte Dateien:
#2173554
Lesenswert?

Danke für die schnelle Antwort.
Also wenn ich sie vor main setze bekomme ich folgenden Fehler

Severity and Description  Path  Resource  Location  Creation Time  Id
declaration is incompatible with "volatile unsigned int TACCTL0" 
(declared at line 389 of "C:/Programme/Texas 
Instruments/ccsv4/msp430/include/msp430g2231.h")  USART  USART_ADC.c 
line 25  1304700681906  1391
declaration is incompatible with "volatile unsigned int TACTL" (declared 
at line 388 of "C:/Programme/Texas 
Instruments/ccsv4/msp430/include/msp430g2231.h")  USART  USART_ADC.c 
line 26  1304700681906  1393
this declaration has no storage class or type specifier  USART 
USART_ADC.c  line 25  1304700681906  1390
this declaration has no storage class or type specifier  USART 
USART_ADC.c  line 26  1304700681906  1392



Wenn ich sie nur bei main rein setze macht er nichts mehr.

Es funzt nur wenn sie des im Unterprogramm drin ist.
Hast du noch eine Idee, oder habe ich was falsch gemacht?
Persönliche Seite #2173560
Lesenswert?

Die Zeilen können nicht außerhalb einer Funktion ausgeführt werden, 
also gehören sie sehr wohl in main().

Das Problem liegt vermutlich im Aufbau der gesendeten Strings - die 
fangen mit dem Steuerzeichen \n an, und das verwendete Terminalprogramm 
erwartet aber \r\n.

Üblich ist es außerdem, den Zeilenvorschub am Ende der Zeile anzufügen.

Ändere daher

  sprintf(string, "\n%d string", ADC10MEM);

zu

  sprintf(string, "%d string\r\n", ADC10MEM);
Gast #2173925
Lesenswert?

Nimm ein vernünftiges Terminalprogramm, dass nicht nur Buchstaben und 
Zahlen anzeigt, sondern auch alle anderen übertragenen Zeichen. Dann 
erscheinen keine komischen Kästchen und es ist leichter zu verstehen, 
was du mit deinem Programm sendest (z.B. HTerm).
MfG
#2174227
Lesenswert?

Dank für den Tipp hab jetzt HTerm benutzt.
Hier empfange ich
158<\r><\0>158<\r><\0>158<\r><\0>158<\r><\0>159<\r><\0>158<\r><\0>159<\r 
><\0>158<\r><\0>158<\r><\0>158<\r><\0>158<\r><\0>158<\r><\0>158<\r><\0>1 
58<\r><\0>158<\r><\0>158<\r><\0>159<\r><\0>158<\r><\0>159<\r><\0>158<\r> 
<\0>158<\r><\0>158<\r><\0>158<\r><\0>158

vergisster er hier /n oder wo ist das hin?
Kann sich jemand vorstellen wo bei dem anteren terminalprogramm der 
fehler liegen kann?
Das Programm ist von Michael Graphics RS232 Wizard. Hat mein Prof 
geschrieben kann gerne jeder kostenlos testen.

Dank für eure Hilfe

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