Forum: Mikrocontroller und Digitale Elektronik MSP430 von zb Port1 auf Serielle Schnittstelle


von Stefan (Gast)


Lesenswert?

Hallo,
kann mir jemand einen Tipp geben, wie ich beim MSP430
von einem belieben Port, zb. P1 die Signale auf meine serielle 
Schnittstelle geben kann?
Ich möchte nämlich versuchen, die Signale auf meinen Computer 
darzustellen, doch ich hab im Forum noch nichts passendes finden können.
Wahrscheinlich ist dieses Thema schon einmal vorgekommen, doch kann ich 
es nicht finden.

Danke im Vorraus

von Christian R. (supachris)


Lesenswert?

Zuerst mal die serielle Schnittstelle einrichten, wie das geht, steht in 
den C-Demos von TI.

Dann einfach mit UTXBUF0 = P1IN; den wert des Port 1 auf den TX Buffer 
schicken und schon wird er an den Serialport geschrieben

So wie deine Frage allerdings gestellt ist, hast du noch nicht mal die 
Kommunikation zwischen PC und MSP430 überhaupt eingerichtet....schätze 
ich mal.

von Stefan (Gast)


Lesenswert?

Kann sein, ich habe das so gemacht:

  ME1 |= UTXE0 + URXE0;
  UCTL0 |= CHAR;
  UTCTL0 |= SSEL0;
  UBR00 = 0x03;
  UBR10 = 0x00;
  UMCTL0 = 0x4A;
  IE1 |= URXIE0 + UTXIE0;
  IFG1 &= ~UTXIFG0;


Ich bin mir aber nicht sicher, denn diese Einstellung habe ich von einem 
Beispiel Pogramm, mit welchem man anzeigen lassen kann, welche Taste man 
drückt.


Danke für die Lösung, doch habe ich anscheinend UTXBFU0 nicht definiert
==> Wie kann ich dann die Kommunikation einrichten???

Danke

von Stefan (Gast)


Lesenswert?

Sorry für den Doppelpost:


Wenn ich TXBFU0 eingebe, kann ich schon etwas an meinem Hyperterminal 
erkennen, nur sind es bis jetzt nur Smilys.

von Stefan (Gast)


Lesenswert?

Wie oben erwähnt, erhalte ich nun ein Signal
Nun hab ich noch etwas komplexeres:
Ich habe nämlich bei meinem Signal high und low, und möchte immer, wenn 
das Signal wechselt, ein Zeichen, oder so etwas ähnliches auf meinem PC 
ausgeben, doch hab ich in diesem Fall leider keinen Plan, wie ich es 
angehen sollte.

Danke wieder einmal im Vorraus

von Christian R. (supachris)


Lesenswert?

Dazu musst du eine Interrupt Service Routine schreiben, die den Port 
Interrupt auswertet.

Mit P1IE = 0xFF gibst du alle Pins an port 1 für Interrupts frei.
Über P1IES kannst du die Richtung der Flanke einstellen, auf die das 
Programm reagieren soll. 0 an der entsprechenden Bit-Position bedeutet 
steigende Flanke, 1 fallende Flanke.

Dann musst du noch global die Interrupts freigeben, mit EINT();

Und eine ISR schreiben. Wie die aussieht, hängt von deinem Compiler ab.

von Stefan (Gast)


Lesenswert?

Danke, ich habs hingebracht.

Herzlichen Dank für die Hlfe

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
Noch kein Account? Hier anmelden.