www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 MM232R


Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal die gesamte Schaltung und das Programm vom MSP430 posten, sonst kann 
dir keinder helfen.

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>ich habe nur die Rx und Tx pins an den uC angeschlossen
Und wie siehts mit Masse aus?

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
GND habe ich angeschlossen.

Autor: Daniel (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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
}

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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!?

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Miss mal die Spannung an der Verbindung der VCCIO da....vielleicht liegt 
da ja gar nix an?

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Habe auch mit hyperterminal versucht ...
Achtung, bei Hyperterminal ist Hardware Handshake standardmässig immer 
an!

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit Hyperterminal klappts?

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein leider auch nicht...der uC zeigt an dass er UCRXERR auf 1 hat.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Haha...es scheint zu funktionieren wenn man oversampling benutzt!
Hat jemand eine Ahnung wieso? Sonst auch egal, Hauptsache es 
funktioniert!
Nochmals allen vielen Dank!

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.