UART Interrupt

OP #4566682
Hallo zusammen,

ich habe einige Problemme bei den Interrupts mit UART. Ich benötige ein 
Empfangsinterrupt. Mein Problem ist jedoch, dass das Interrupt die ganze 
Zeit ausgelöst wird, auch wenn nichts empfangen wird. Kann mir jemand 
weiterhelfen?

Hier ists mein Code:

int main(void)
{
    init();

    UART1Config = USART_TX_INT_OFF & USART_RX_INT_ON & USART_ASYNCH_MODE 
&   USART_EIGHT_BIT & USART_BRGH_HIGH ;
    baud = 12;
    Open1USART(UART1Config,baud);

    RC1IF = 0; //reset RX pin flag
    RC1IP = 0; //Not high priority
    RC1IE = 1; //Enable RX interrupt
    PEIE = 1; //Enable pheripheral interrupt (serial port is a 
pheripheral)
    GIE=1;    //enable interrupts

    while(1)
    {

    }
}

void service (void)
{
    PORTE=255;

    if(PIR1bits.RCIF == 1)
    {
        rx = Read1USART();
        puts1USART(Msg);
        Write1USART(rx);
        RC1IF = 0; // clear rx flag
        PORTE=0;
        Delay100TCYx(150);
    }
}
Gast
Ich kenne deinen µC nicht, allerdings bin ich es gewohnt, dass amn in 
der ISR das Interrupt-Flag bzw. Received-Flag nicht zurücksetzten soll. 
Das machen die Controller von selbst. Der Delay in der ISR wirkt 
deplatziert.
Fragen über Fragen:

- Welcher Prozessor ist das?
- Was passiert in den verschiedenen benutzten Funktionen?
  (z.B. Read1USART(); puts1USART(Msg); Write1USART(rx);)
- Wo sind die Variablen deklariert?
- ... und formatier den Code mal richtig:
1
[c]C-Code[/c]

Gruß Dietrich
Stefan U. schrieb:
> Ich kenne deinen µC nicht, allerdings bin ich es gewohnt, dass amn in
> der ISR das Interrupt-Flag bzw. Received-Flag nicht zurücksetzten soll.
> Das machen die Controller von selbst.

denke ich auch

in der ISR wird doch normalerweise der zugehörige IRQ automatisch 
gelöscht wenn sie behandelt wurde, ich tippe mal durch dein "löschen" 
setzt du einen neuen IRQ manuell.

Konstanty K. schrieb:
> Mein Problem ist jedoch, dass das Interrupt die ganze
> Zeit ausgelöst wird,

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 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.