Forum: Mikrocontroller und Digitale Elektronik Frage zur UART des MSP430


von Aspire (Gast)


Lesenswert?

Hi zusammen,

Ich hätte da mal eine Frage zur UART. Mir ist das Prinzip nicht ganz 
klar wie das Senden und Empfangen einzelner Zeichen funktioniert. Wie 
die UART zu initialisieren ist sollte ja kein Problem sein.
1
 WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
2
  P3OUT &= ~(BIT4+BIT5);
3
  P3SEL = 0x30;                             // P3.4,5 = USCI_A0 TXD/RXD
4
  UCA0CTL1 = UCSSEL_1;                     // CLK = ACLK
5
  UCA0BR0 = 0x67;                           // 16MHz/9600 = 103
6
  UCA0BR1 = 0x00;                           //
7
  UCA0MCTL = UCBRS1 + UCBRS0;               // Modulation UCBRSx = 3
8
  UCA0CTL1 &= ~UCSWRST;                   // **Initialize USCI state machine**                  // **Initialize USCI state machine**
9
  IE2 = UCA0RXIE +UCA0TXIE;
10
11
  
12
  __bis_SR_register( GIE)

mein Problem ist eher die ISR zu entwerfen, damit ich ein Zeichen an den 
Pin 3.4 Senden kann. An diesem Pin habe ich ein Oszi angeklemmt, messe 
zur Zeit aber nur eine "1" egal was ich ins  UCA0TXBUF schreibe.

Eine kurze Beschreibung der Arbeitsweise de rUART würde schon 
weiterhelfen.

von Jörg S. (joerg-s)


Lesenswert?

>mein Problem ist eher die ISR zu entwerfen,...
Wie wäre es ohne ISR/Interrupts, oder ist das für dich zwingend 
notwendig?

von Christian R. (supachris)


Lesenswert?

Aspire wrote:

> mein Problem ist eher die ISR zu entwerfen, damit ich ein Zeichen an den
> Pin 3.4 Senden kann. An diesem Pin habe ich ein Oszi angeklemmt, messe
> zur Zeit aber nur eine "1" egal was ich ins  UCA0TXBUF schreibe.
>
> Eine kurze Beschreibung der Arbeitsweise de rUART würde schon
> weiterhelfen.

Die steht im User Guide, sogar ausführlich und für verschiedene 
Beispiele.

Hast du denn einen Quarz am ACLK dran? Mit dem Takt betreibst du nämlich 
deine UART.

von Aspire (Gast)


Lesenswert?

@Jörg S. :
Also mit Interrups wäre es schon eleganter finde ich aber wenn du ein 
paar tips zur Polligvariante hast bin ich natürlich ganz ohr. Bin für 
jede Lösung dankbar, die mir die UART etwas näher erläutert.


@ Christian R. :
Ja, habe einen Quarz dran, der schwingt auch. Also daran kann es nicht 
liegen. Sorry aber ich werd aus dem User Guide nicht so ganz schlau :( 
bzw. hättest du vielleicht eine konkrete Seite im Guide. Vielleicht 
schau ich einfach nur falsch :/

von Christian R. (supachris)


Lesenswert?

Welcher MSP430 ist das genau? Einer der 2XX-Reihe? Ich denke, es liegt 
einfach daran, dass du zu Beginn der UART-Initialisierung das SWRST Bit 
nicht setzt, das muss whärend der gesamten initialisierung gesetzt 
bleiben. Steht auch im User Guide, extra dick eingerahmt, dass die Init 
der USCI Schnittstelle nach einem ganz genau festgelegten Muster zu 
erfogen hat, sonst klappts nicht. Eventuell musst du auch das P3DIR 
Register entsprechend setzen, um den TXD AUsgang zu aktivieren, das ist 
immer mal widerspüchlich in der TI-Literatur....

von Aspire (Gast)


Lesenswert?

ja genau ich nutze einen MSP430F2XXX. Hab jetzt mal das Beispiel der 
IrDA zu Rate gezogen. Da passiert einiges das ich ersteinmal verstehen 
muss aber zumindest ändert sich der Wert am Pin 3.4 kurzzeitig. Werde da 
jetzt mal ein wenig nachhacken und euch auf dem laufenden halten. Die 
Init der UART werd ich mir auch nochmal genauer zur Brust nehmen.

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.