Forum: Mikrocontroller und Digitale Elektronik msp430 UART Empfang


von Timo P. (latissimo)


Lesenswert?

Hallo!
Folgenden code habe ich geschrieben:
1
received[60];
2
volatile signed char u = -1;
3
4
int main()
5
{
6
  for(;;)
7
  {
8
    uputs("received: ");
9
    uputs(received);
10
    uputs("\r\n");
11
  }
12
  return 0;  
13
}
14
15
#pragma vector=USCIAB0RX_VECTOR
16
__interrupt void USCI0RX_ISR(void)
17
{
18
  received[u++] = UCA0RXBUF;
19
  if (UCA0RXBUF == '\n' || UCA0RXBUF == '\r')
20
  {
21
    u = -1;
22
  }
23
}

keinen Plan, warum nichts empfangen wird...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Du schreibst ins Nirvana.

Was soll es, u mit -1 zu initialisieren?!

von Timo P. (latissimo)


Lesenswert?

Rufus t. Firefly schrieb:
> Was soll es, u mit -1 zu initialisieren?!

da ich received[u++] beschreibe,
wird das erste Zeichen (1.ISR-Aufruf) in received[0] geschrieben

von Stefan (Gast)


Lesenswert?

>Folgenden code habe ich geschrieben:
Aha?!
Wenn das alles ist, dann wundert mich nichts!
Watchdog noch am Laufen, UART gar nicht initialisiert...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> da ich received[u++] beschreibe,
> wird das erste Zeichen (1.ISR-Aufruf) in received[0] geschrieben

Nein, das wird es nicht. Der Postinkrement-Operator inkrementiert, 
nachdem die betreffende Operation durchgeführt wurde.

Du müsstest also den Präinkrement-Operator ++u verwenden ... oder gleich 
auf den ungewöhnlichen Ansatz verzichten.
Initialisiere u mit 0.

von Timo P. (latissimo)


Angehängte Dateien:

Lesenswert?

Stefan schrieb:
>>Folgenden code habe ich geschrieben:
> Aha?!
> Wenn das alles ist, dann wundert mich nichts!


siehe Anhang!

von Timo P. (latissimo)


Lesenswert?

initialisierung mit 0 hat nicht geholfen
empfangen wird nix :( zumindest nicht in meinen buffer
werde mal eroieren, ob die isr überhaupt kommt...

enabled ist sie:

IE2 |= UCA0RXIE;

von Jörg S. (joerg-s)


Lesenswert?

Häng den Source Code als c-Datei an, dann kann man sich den Code gleich 
mit dem Syntax Highlighter anschauen.

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.