www.mikrocontroller.net

Forum: Compiler & IDEs MSP430F2618 UART RX-Interrupt löst nicht aus?


Autor: Björn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

ich baue eine USB verbindung mit dem MSP430F2618 via HyperTerminal (HT) 
auf.
Daten vom µC werden im HT angezeigt. Nun will ich dort eine Eingabe 
machen (Zahlen) die dann den RX Interrupt auslösen sollen. Weiss der 
Kuku warum, aber es klappt nicht. Ich benutze den MSPGCC. Hier mal ein 
Teil vom Code:


void init(void)
{
   WDTCTL = WDTPW + WDTHOLD;       // Watchdog aus
   UCA0CTL1 |= UCSWRST;            // Software reste enable anschalten
   UCA0CTL1 |= UCSSEL_2;           // SMCLK aktiviert
   P3SEL = 0x30;                   // Secondary peripheral module 
funktion is selectet for P3.4 and P3.5 = USCI_A0 TXD/RXD

  UCA0BR0 = 0x4E;                  // 9k6 baud bei 12MHz aus Tabelle 
15-5, gültig wenn UCOS16 =1
  UCA0BR1 = 0x00;
  UCA0MCTL = UCBRF1 + UCOS16;
  UCA0CTL1 &= ~UCSWRST;          // Parameter übernehmen und 
Schnittstelle aktivieren

  IE2 |= UCA0RXIE ;            // RX  Interrupt anschalten
  IFG2 &= ~UCA0RXIFG;          // initales RX-Interrupt-Flag löschen
}




int main(void)
{
  //Initialisierungen
  init();          // Main Initialisierung
  init_DAC();    // DAC aktivieren
  hf_oszi();    // Kontrollfunktion ob der Oszillator richtig schwingt

 sprint("\r\n Bitte geben Sie den gewuenschten Daempfungswert in 0.5dB 
Schritten zwischen \r\n 0dB und 17dB ein\r\n");

//hier noch ein wenig Programm welcher Uninteressant ist
}



interrupt(USCIAB0RX_VECTOR) usart0_rx(void)
{
        led_fast();
}


So das ist mal der grobe Code. Ich habe ausserdem an XT1 und an XT2 
12MHz anliegen. Macht das evtl. schon Probleme? Zuerst lag nur an XT2 
die 12MHz an und da habe ich ihn nicht ans laufen bekommen und der 
einfachheithalber habe ich dann auch noch an XT1 die 12 MHz anschlossen.

Wenn ich auf der Tastatur tippe, sehe ich dies  dem Oszi.
Was habe ich übersehen? Wo liegt evtl. mein Fehler?

Mit sonnigen Grüßen

Björn

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Inituialisiere mal erst den Quarz und dann die UART. Wenn du den Takt 
einfach umschaltest, kann das komsiche Effekte verursachen.

Autor: Björn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe mal die reihenfolge geändert aber führte leider nicht zum Ziel.
In einem beispielcode konnte noch einen Zeile finden die den Genral 
Inerrupt
setzt.

__bis_SR_register(GIE);

und testweise auch

__bis_SR_register(LPM3_bits + GIE);

Danach löst er zwar einen Interrupt aus wenn ich eine Taste drücke, aber

- führt den Rest des Programms nicht mehr aus und wartet nurnoch auf den 
Interrupt

- und wenn ich einen Interrupt auslöse durch eingabe eines Zeichens 
wiederholt der meine Interrupt Routine immer wieder, als wenn der 
Interrupt
ständig ausgelöst wird, bzw nicht zurückgesetzt wird.

Ich habe mal den Befehl zum Rücksetzten des Interrupts in der Routine 
eingefügt
IFG2 &= ~UCA0RXIFG;
aber half auch nichts.

Vielleicht noch eine Idee?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du denn überhaupt eine Endlosschleife in deiner main()? Und laufen 
denn die Code-Beispiele von TI mit der UART? Das würde ich erst mal 
testen.

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.