UART Interrupt löst nicht aus

Gast #962161
Lesenswert?

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?
#962591
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren