www.mikrocontroller.net

Forum: Mikrocontroller und Elektronik MSP430: Zeichen über USART ausgeben

Autor: Harald K. (Gast)
Datum: 26.03.2008 09:54
Dateianhang: test.c (1,7 KB, 68 Downloads) | formatierter Code

Hallo!

Ich habe ein MSP430-149 auf einem Olimex-Developer-Board (zudem im
Einsatz mspgcc). Das Beispiel von mathar.com unter Verwendung von
Interrupts funktioniert bei mir. Nun möchte ich ein einzelnes Zeichen
ausgeben - sobald ich aber "SendUSART0c('x')" absetzen will bleibt die
Abarbeitung hängen.

Wo liegt mein Fehler?

Danke im Vorraus
Harry
Autor: Stefan (Gast)
Datum: 26.03.2008 10:03

Du hast die Interrupts (RX und TX) noch aktiviert.
Insbesondere der TX-IRQ "bricht Dir das Genick", weil die ISR
angesprungen wird und dabei UTXIFG0 zurückgesetzt wird. Deshalb wird
while (!(IFG1 & UTXIFG0));
zu einer Endlosschleife!
Autor: Harald K. (Gast)
Datum: 26.03.2008 10:17

Okay, so etwas in die Richtung dachte ich mir schon. Aber wie komme ich
denn sonst zu meinem Ziel? Verzichte ich auf die Aktivierung der
Interrupts oder auf
while (!(IFG1 & UTXIFG0));"
 wird dennoch das Char nicht gesendet.
Danke schonmal.
Autor: Christian R. (supachris)
Datum: 26.03.2008 10:59

Ist der Uhrenquarz dran? Wo sendest du überhaupt hin? zum PC? Ist da der
MAX3232 richtig angeschlossen? Wie merkst du, dass nix gesendet wird?
Autor: Harald K. (Gast)
Datum: 26.03.2008 11:14
Dateianhang: test.c (2,4 KB, 55 Downloads) | formatierter Code

Ah, ich bin bedeutend weiter. Ich bekomme endlich meine Zeichenkette
ausgegeben. Allerdings muss ich händisch warten. Wie kann ich denn etwas
geschickter abwarten (Flag-Abfrage?) bis mein Char verschickt ist?
Autor: Stefan (Gast)
Datum: 26.03.2008 11:41

>Allerdings muss ich händisch warten. Wie kann ich denn etwas
>geschickter abwarten (Flag-Abfrage?) bis mein Char verschickt ist?
Na so wie's vorher war:
while (!(IFG1 & UTXIFG0));

Du musst halt die IRQ's deaktivieren, die benutzt Du doch eh nicht!
Autor: Christian R. (supachris)
Datum: 26.03.2008 12:08

Du hast doch immer noch den TX-Interrupt drin. Schreibfehler? Nimmer mal
die Zeile, in der IE1 beschrieben wird, komplett raus, dann klappts
auch.
Autor: Harald K. (Gast)
Datum: 26.03.2008 12:42

Perfekt, war der Meinung das schon einmal so gemacht zu haben, aber
Hauptsache es funktioniert jetzt :)

Interrupt-Flag raus, while wieder rein.

Dankeschööön!

Antwort schreiben

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

Wichtige Regeln - erst lesen, dann posten!

  • Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
  • Aussagekräftigen Betreff wählen
  • Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
  • JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
  • Schaltpläne, Screenshots usw. als PNG oder GIF anhängen

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel






webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net