UART Interrupt löst nicht aus

Gast #962161
Hallo

Ich will auf einem ATmega32 eine UART/RS232 Verbindung einrichten. Ich 
nutze die Lib von P. Fleury
Soweit alles schön und gut. Kann wunderbar Zeichen empfangen und auch 
Senden. Allerdings will ich jetzt mit einem Interrupt arbeiten.

Ich will erstmal erreichen, dass mir mein Mega32 beim Receive Complete 
Interrupt, also dann wenn er ein neues Byte im Buffer hat, in eine ISR 
springt.


Folgendes haben ich bisher gemacht:
1
int main(void)
2
{
3
...
4
  sei();
5

6
  UCSRB |= (1<<RXCIE);          // Activate UART receive complete interrupt
7

8

9
...
10

11
   return 0;
12
}
13

14

15
ISR(UART0_RECEIVE_INTERRUPT)
16
{
17
  set_leds(LED_RECEIVING,LED_ON);
18
  _delay_ms(1000);
19
}
20

21
[c]
22

23
Das Synonym "UART0_RECEIVE_INTERRUPT" ist in der uart.c von Fleury zu finden:
24

25
[c]
26
 #define UART0_RECEIVE_INTERRUPT   SIG_UART_RECV

Es ist also ein Synonym für den Interruptvector in der Mega32 
Headerdatei.


So, egal was ich nun dem AVR schicke, der geht partou nicht in diese ISR 
rein. Woran kann das liegen?
Gast
Hi

Stimmt, aber daran liegts nicht.
Soweit ich das im Kopf hab wird das von der Lib von P Fleury übernommen. 
Habs gerade auch "zu Fuß" probiert, ohne Ergebnis.
Christian L. wrote:
> Was habt ihr nur dauerns mit der delay-Routine?

Man verwendet kein delay in einer Interruptroutine (schon gar nicht in 
der Größenordnung). Interrupts sollen immer so kurz wie irgend möglich 
sein. Bei einem Test, ob der Interrupt überhaupt aufgerufen wird, ist es 
aber ok.
Gast
Das delay war auch nur zum Test da und kam danach auch wieder artig raus 
;-)

Ansonsten ist die delay-Routine schon extrem genau, da kann man nicht 
meckern ;-)
Gast
>Ansonsten ist die delay-Routine schon extrem genau, da kann man nicht
>meckern ;-)

Nur legt sie praktisch den µC lahm. Und da muss man meckern..
=> Timer

Antwort schreiben

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