UART interrupt AT90CAN128

OP #1469500
Lesenswert?

Hallo,

ich habe ein Problem damit, bei einem AT90CAN128 die UART Kommunikation 
mit Interrupts zum laufen zu bekommen.
Die Fuse-Bit Falle mit dem 1/8-Teiler habe ich schon beseitigt und das 
normale Versenden von Zeichen über die Schnittstelle klappt.
Nur das Empfangen, bzw. Ausführen der ISR funktioniert nicht.

Der Quellcode zeigt die Initialisierung der UART-Schnittstelle:
1
/*************************************************************/
2
/* void USART0_INIT(unsigned int baud)                       */
3
/*                                                           */
4
/* Initialisiert die UART0-Schnittstelle                     */
5
/*************************************************************/
6

7
void USART0_INIT(unsigned int baud)
8
{
9
  UBRR0H = (unsigned char) (baud>>8);
10
  UBRR0L = (unsigned char) baud;
11
  UCSR0C = (0<<UMSEL0) | (0<<UPM0) | (1<<USBS0) | (3<<UCSZ0);
12
  UCSR0B = (1<<RXCIE0)|(1<<RXEN0)|(1<<TXEN0);
13
}
14

15
/*************************************************************/
16
/* uint8_t USART0_Receive(void)                              */
17
/*                                                           */
18
/* Empfängt die Daten von der UART0-Schnittstelle            */
19
/*************************************************************/
20

21
uint8_t USART0_Receive(void)  
22
{
23
  while ( !(UCSR0A & (1<<RXC0)) );
24
  return UDR0;
25
}

hier die ISR aus der main.c:
1
/*************************************************************/
2
/* SIGNAL( SIG_UART_RECV )                                   */
3
/*                                                           */
4
/* Löst Interrupt aus, wenn Zeichen empfangen wird           */
5
/*************************************************************/
6

7
ISR(USART0_RX_vect) 
8
{ 
9
  uart_puts("Test" CR);
10
}

Kann mir einer sagen, wo der Fehler liegt?

mit freundlichen Grüßen

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