MSP430 Experten gesucht: Interrupt USCI - evtl. auch andere Controller

Gast #2176233
Hallo zusammen!

Ich hoffe, mir kann hier jemand helfen. Ich benutze einen MSP430F2418 
und habe auf diesem mehrere State-Machines laufen.

Ein USCI-Interrupt-Vektor wird dabei von zwei Quellen aufgerufen (ist 
hardwaremäßig so)

Also USCIAB0 sind zusammen (= USCI A 0 und USCI B 0)

Mein Handler sieht folgendermaßen aus:
1
// ########################################### USCI AB0 RECEIVE INTERRUPT-VECTOR
2
#pragma vector = USCIAB0RX_VECTOR
3
__interrupt void usci_ab0_receive( void )
4
{
5
  if( LCD_RX_IFG )
6
  {
7
    lcd_rx_sm();
8
    LCD_CLEAR_RX_IFG;
9
  }
10
  else if( ADC_EXT_RX_IFG )
11
  {
12
    adc_ext_rx_sm();
13
    ADC_EXT_CLEAR_RX_IFG;
14
  }
15
}
16
// =============================================================================

Die Frage ist jetzt: Muss ich das Flag explizit selber löschen? In den 
TI-Examples ist das nirgends so, aber wenn ich es nicht mache, dann 
funktioniert das ganze nicht mehr und wenn ich mir die Register 
anschaue, dann wird das Flag auch nicht gelöscht.

Dann noch: Muss ich in einem Handler die beiden Teile mit "else if" 
trennen? Kann quasi während der Abarbeitung bereits das nächste Flag 
gesetzt werden?

Hier geht nämlich irgendwas nicht - meine State-Machine hängt irgendwann 
in einem State fest, wo irgendwie ein Interrupt verloren gegangen ist, 
der die State-Machine in den nächsten Status schickt. Das passiert immer 
einfach irgendwann.

Hat einer nen Rat?
Gast
Das Flag UCxRXIFG wird automatisch gelöscht wenn der entsprechende 
Empfangspuffer UCxRXBUF gelesen wird.
In den Beispielprogrammen von TI wird wahrscheinlich immer der 
Empfangspuffer ausgelesen und es ist daher dort nicht notwendig das Flag 
explizit zu löschen.
Gast
Stefan schrieb:
> Das Flag UCxRXIFG wird automatisch gelöscht wenn der entsprechende
> Empfangspuffer UCxRXBUF gelesen wird.

Aso...jetzt erinnere ich mich auch irgendwie grad dran wo ich es höre - 
natürlich. Danke für den Hinweis.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.