Hallo, ich moechte von Matlab Daten zum Microcontroller (msp430) senden und habe dafuer an ein mm232r genommen. Leider scheint es, dass der uC nichts erhaelt im Rxbuffer. Ich weiss nicht ob ich moeglicherweise den mm232 falsch angeschlossen habe...ich habe nur die Rx und Tx pins an den uC angeschlossen nicht aber die handshaking pins...brauche ich die auch? Wie es scheint hat mein uC diese pins ja nicht...bin dankbar fuer jede hilfe. Danke, Daniel
>ich habe nur die Rx und Tx pins an den uC angeschlossen
Und wie siehts mit Masse aus?
Die beiden Geraete habe ich wie das Bild zeigt angeschlossen. Habe auch versucht den uC wegzunehmen und nur mit dem Oszilloskop den TX des mm232 anzuschauen, aber leider ist dort keine Aenderung des Signals zu sehen wenn ich mit dem tmtool aus matlab was sende.
Den MSP430 code den ich bis anhin benutzt habe: #include "msp430x26x.h" void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop Watchdog timer UCA0CTL1 = 0x1; // USCI logic held in reset state UCA0CTL0 = 0x26; // asynchronous mode, uart mode with // automatic baud rate, one stop bit, 8bit data, MSB, no parity P3SEL = 0x30; // P3.4 tx and P3.5 rx P3DIR = 0x10; UCA0CTL1 = 0x0; // USCI logic released for operation IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt __bis_SR_register(LPM0_bits + GIE); // Enter LPM0, interrupts enabled } #pragma vector=USCIAB0RX_VECTOR __interrupt void USCI0RX_ISR(void) { while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready? UCA0TXBUF = UCA0RXBUF; // TX -> RXed character }
Hm, die VCCIO ist auf 5V geklemmt, das verträgt der MSP430 nicht, sondern quittiert das mit einem defekten Port-Pin. Du müsstest Pin 4 an Pin 3 anklemmen.
>Du müsstest Pin 4 an Pin 3 anklemmen.
Um die Signale auf 3,3V zu bekommen, richtig!
Das erklärt aber noch nicht, warum der MM232R alleine ohne µC auch nicht
funktioniert!
Möglicherweise erwartet das tmtool / matlab ein Hardware-Handshaking.
Probier mal RTS und CTS miteinander zuverbinden, um dem Host
vorzugaukeln, er könne senden!?
Habe das gemacht (macht auch Sinn) nur leider muss es noch ein anderes problem geben. Habe auch mit hyperterminal versucht was auf den port zu schicken, aber der Rxbuffer erhaelt nichts und Oszilloskop zeigt nichts an...
Miss mal die Spannung an der Verbindung der VCCIO da....vielleicht liegt da ja gar nix an?
Spannung ist da. Habe pins 3 und 4 zusammengeklemmt und jetzt sehe ich mein Signal am Oszilloskop. Danke. Versuche jetzt mit dem uC zu kommunizieren...
>Habe auch mit hyperterminal versucht ...
Achtung, bei Hyperterminal ist Hardware Handshake standardmässig immer
an!
Ich kann jetzt zwar am Oszilloskop sehen, dass ein Signal gesendet wird, leider kann ich aber kein Echo (siehe code) sehen. Ich habe im tmtool das RequesttoSend auf off geschaltet und die pins RTS und CTS zusammengeklemmt, ebenso pins 3 und 4. Weiss jemand was ich noch falsch mache?
Hast du mal ein Code-Beispiel von TI direkt probiert? Da ist doch immer eins für ein einfaches Echo dabei. Das muss auf jeden Fall klappen.
Vielen Dank, aber leider funktioniert auch jenes program nicht...liegt wohl eher an der Art mit der tmtool sendet und weniger an der software oder uC. Ideen?
Nun ja, da heißt es Fehlersuche. Stimmt die Baudrate wirklich? Stimmen die sonstigen Einstellungen? 7/8 Bit, Parity usw.? Eventuell ist der Eingang auch kaputt, kannst du denn vom MSP430 an Hyperterminal was senden?
Ich habe beim tmtool folgende Einstellungen: baudrate 9600 LSB 8 data bits no parity bit 1 stop bit beim microcontroller verwende ich immer noch den oben angegebenen code.
Ok, nochmal von vorne. Nicht immer den 3. Schritt vor dem 1. machen. 1. Was für einen Quarz hast du wo am MSP430 angeschlossen? Ist da überhaupt einer dran? Wenn ja, funktioniert der richtig? 2. Probier doch bitte mal den Quelltext aus dem Code-Example Zip-File zusammen mit Hyperterminal. 3. Gewöhn dir bitte an, die Bits in den Registern so wie bei TI beim Namen zu nennen, mit einer 0x26 kann kein Mensch auf Anhieb was anfangen. 4. Was bedeutet die LSB Einstellung bei deinem Matlab Dingens? Etwa, dass das LSB zuerst gesendet wird?
Haha...es scheint zu funktionieren wenn man oversampling benutzt! Hat jemand eine Ahnung wieso? Sonst auch egal, Hauptsache es funktioniert! Nochmals allen vielen Dank!
1. nein habe keinen Quarz 2. das ist nicht gegangen 3. hast du recht, sorry 4. Ja LSB zuerst...habe aber bei beiden (matlab und uc) auf MSB umgestellt
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.