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
Setzt die Zeilen mal vor main und nehm sie dort wo sie stehen heraus. CCTL0 = OUT; // TXD Idle as Mark TACTL = TASSEL_2 + MC_2; // SMCLK, continuous mode
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?
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);
Bei mir funktioniert das Programm. Ohne das "\r" gibt wegen des fehlenden Wagenrücklaufs Treppenstufen in der Ausgabe, aber das ist ja normal. Ich vermute das Problem liegt auf der PC Seite.
Sorry, was ich meinte war hinter: BCSCTL1 = CALBC1_1MHZ; // Set range DCOCTL = CALDCO_1MHZ; // SMCLK = DCO = 1MHz
@Rufus Τ. Firefly es scheint wohl damit zusammen zu hängen. Jetzt ist allerdings das kästchen vor dem ganzen Text. erwartet er da noch irgendwas?
Wie sieht es aus wenn du das \n Steuerzeichen weglässt?
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
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
Jetzt habe ich noch was gefunden. Ich habe den log jetzt als RAW gespeichert und bekam 1 5 9 "Kästchen" zu sehen. Kann mir das jemand erklären? Danke
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.