Hallo, ich versuche gerade ine Kommunikation zwischen meinem MSP430 und dem PC herzustellen. Ich habe mich da erst einmal an die Anleitung von mathar.com gehalten. Leider bekomme ich das ganze nicht ans Laufen. Die Verdrahrung dürfte richtig sein, mehrfach überprüft. Als Terminalprogramm hab ich mal ZOC installiert. IC denke oder hoffe, dass es nur an der Einsellung von ZOC liegt. Kann mir da mal jemand weiterhelfen und sagen, wie ich das Programm konfigurieren muss? Vielen Dank schonmal. Gruß Rolf
Poste doch mal dein Programmcode, speziell die Initialisierung der UART. Hast du einen Quarz dran, oder benutzt du den DCO mit eingebautem oszillator? Wenn letzteres, dann ist es Glückssache, dass das Timing stimmt....
Hmmm, sieht alles ganz gut aus. Hast Du es mal mit dem Hyperterminal probiert? Kannst ja auch erstmal vom MSP aus ein Zeichen senden, um erst mal diesen Zweig zu prüfen.
habs mal mit dem hyperterminal probiert, aber weiß irgendwie nicht, welche einstellungen uch da vornehmen muss. habs auch schon mit zoc probiert, aber irgendwie bekomme ich es nicht ans laufen.
Na ja das Gegenstück zu de´m, was du in deinen µC gebrannt hast: // 8 Data Bits, 1 Stop Bit, no parity (8N1) // 9600 baud aus 32.768 kHz erzeugen Wenn die Kommentare stimmen: 9600 Baud, 8 Bits, 1 Stop Bit, keine Parität. Hast du schon mal deine Hardware überprüft? Wenn du den Prozessor mal abklemmst und den Tx Pin mit dem Rx Pin verbindest, dann müsste jeder Tastendruck am PC ein entsprechendes Echo erzeugen. Damit hast du die ganze Verbindungskette vom PC über das Kabel über die RS232 Umsetzer und zurück geprüft.
Hmmm, mit den im Anhang gezeigten Einstellungen beim Hyperterminal muesste es gehen (ich habe nur noch COM3 frei, bei Dir isses wahrscheinlich COM1).
P3DIR muss noch gesetzt werden, sonst kann der MSP nix senden. Die Richtung muss auch bei der Zweitfunktion des Ports richtig gesetzt werden. (MSP430-Praxisbuch, S. 178) Irgendwie fehlt das meist in den Demoprogrammen bei TI. Einzige Ausnahme ist meines Wissens die SPI Schnittstelle.
hallo, ich habe die pins 2 und 3 vom com1 einfach mal gebrückt. dann funktioniert alles mit dem hyperterminal. meine schaltung funktioniert aber noch nicht. kann man irgendwie messen, ob der max232 defekt ist. ich habe ihn schon getauscht, aber könnte ja sein. P3DIR habe ich jetzt auf P3DIR = 0x10; gesetzt.
Hiho, nun ist die Zeit für einen Oszi gekommen, denke ich. Wenn Du einen Dein Eigen nennst, würde ich wie folgt vorgehen: 1. Überprüfung des Pfades PC-RS232-MSP Hyperterminal mit den genannten Parametern öffen, Tasten betätigen,Pegel am MSP-RxD messen 2. Überprüfung des Pfades MSP-RS232-PC Programm dahingehen ändern, dass der MSP ständig Zeichen schickt, z.B. im main TXBUF0 befüllen und in der ISR weiter senden. Hier insbesonder mal die Bitzeit ausmessen. Wenn beides o.k. erscheint und trotzdem nix läuft, dann erstmal ein Bier trinken, schlafen gehen und morgen nochmal probieren.
> ich habe die pins 2 und 3 vom com1 einfach mal gebrückt. dann > funktioniert alles mit dem hyperterminal. meine schaltung > funktioniert > aber noch nicht. > > kann man irgendwie messen, ob der max232 defekt ist. ich habe ihn > schon getauscht, aber könnte ja sein. Nein ich meinte, du setzt die Brücke direkt am µC! Damit muss das Signal vom PC durch das Kabel, durch den MAX232, wird dann dort von deiner Brücke wieder durch den MAX232 und das Kabel zurückgeschickt.
Ein normaler MAX232 wird am MSP430 nicht funktionieren, der arbeitet nicht bei 3,3V. Da musst du schon einen MAX3232 o.ä. nehmen
Hallo, ein Oszi habe ich nicht zur Hand. Das muss ausfallen. Ich habe jetyt mal die Bruecke am MSP geschlagen und festgestellt, dass anscheinend nix durch den max durchkommt. Entweder funktioniert das Ding nicht richtig oder ich habe da einen Feher bei der Beschaltung des max gemacht. ICh w[rde sagen die Beschaltung ist richtig, wenn ich so in das Datenblatt schaue. Werde mir dann wohl erst einmal einen anderen Max besorgen muessen. Gru- Rolf
Hallo, leider habe ich mein Problem noch nicht gelöst. Hatte es erst einmal beiseite gelegt und ruhen lassen und wollte mich jetzt nochmal damit beschäftigen. Ich habe direkt am Mikrocontroller die pins gebrückt. Nun müsste ja die taste, die ich am Rechner drücke einfach wieder zurückgegeben und im hyperterminal angezeigt werden. Es wird auch was angezeigt. Leider aber nicht die gedrückte Taste. Es werden irgendwelche Zeichen angezeigt. Hat jemand eine Idee, woran das liegen könnte? Im Anhang ist nochmal mein Programm. Gruß Rolf
Hi Rolf, dumme Frage vorneweg: Welchen MSP430 hast du? Ich verwende den MSP430F437, dessen TxD-und RxD-Pins liegen an Port 2 und nicht an Port 3, wie im Mathar-Tutorial beschrieben. Habe den MAX232 an meinem MSP430F437 laufen, in der Hinsicht muss ich also SupaChris widersprechen. Natürlich musst du den MAX mit 5V speisen, die Schaltpegel liegen aber unterhalb 3,3V, passt also. Ich habe auch einige Zeit gebraucht, den UART zum Laufen zu bringen. Ganz wichtig ist es, im Hyperterminal die Flusssteuerung auszuschalten, also KEIN Xon/Xoff oder was auch immer, sonst geht mal garnix. Probier doch testweise mal, den UART ohne Interrupt zu betreiben. Kommentier also zunächst mal die Zeilen IE1 |= URXIE0 + UTXIE0; und _BIS_SR(LPM3_bits + GIE); aus. Schreib dann irgendein Zeichen in TXBUF0 und frag das Interrupt-Flag ab, bevor du weiteren Code ausführst: TXBUF0 = 'H'; while ((IFG1 & UTXIFG0)==0); ... Jetzt solltest du einfach das Zeichen "H" im Hyperterminal sehen. Wenn das funktioniert, kannst das Programm schrittweise erweitern. Viel Glück & Grüße Thorsten PS: Welchen Compiler verwendest du? Ich verwende den Compiler von IAR Embedded Workbench, dort lautet der Status-Register-Befehl __bis_SR_register(...) und nicht __bis_SR(...);
Zumindest gibt es __bis_SR() in dem "MSP430 IAR C/C++ Compiler Reference Guide" (März 2006) nicht. Das Kommando selbst hab ich nie ausprobiert. Aber ist ja auch egal, daran wird es wohl nicht liegen... Gruß Thorsten
hallo, meinte ja auch nicht das Problem daranliegen könnte, wollte nur darauf hinweisen, das es funktioniert... __BIS_SR() ist noch eine Intrinsic aus der IAR Version 1.x (nachzulesen im Migration Guide), und wird über die in430.h mit eingebunden... BIS_SR_register ist das Äquivalent aus der der IAR Version 2.x, beide ausdrücke bewirken das gleiche... Gruß ehde76
aber leider nicht das problem vom rolf... ich lasse zuerst ein ganz simples echo vom uC senden und lasse zusätzlich noch eine led toggel, um sehen das die verbindung auch wirklich i.o. ist und das der interrupt auch ausgelöst wird...
1 | #pragma vector=UART0RX_VECTOR
|
2 | __interrupt void usart0_rx (void) |
3 | {
|
4 | while (!(IFG1 & UTXIFG0)); // wait until Transmit Buffer is ready |
5 | TXBUF0 = RXBUF0; // copy Receive to Transmit Buffer |
6 | P1OUT ^= 0x01; // Toggle Port 1.0 |
7 | }
|
@SupaChris da muss ich auch in einem punkt wiedersprechen P3DIR muss nicht gesetzt werden, das wird automatisch durch die auswahl als peripheral geregelt, probier es aus... gruß
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.