Problem mit UART

Gast #2386043
Lesenswert?

Hi,

ich möchte zum Testen das Byte, das ich über UART an meinen ATMega16 
sende, direkt im RX-Interrupt wieder zurücksenden.

Hier ist der Code:
1
#ifndef F_CPU
2
#define F_CPU 6000000
3
#endif
4

5

6
#define BAUD 14400
7
#define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1)
8

9
void uart_init(void)
10
{
11
  uint8_t sreg = SREG;
12
    
13
  UBRRH = (unsigned char)(UBRR_VAL>>8);
14
  UBRRL = (unsigned char)UBRR_VAL;
15
  
16
  UCSRC |= (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); 
17
  UCSRB |= (1<<RXEN)|(1<<TXEN)|(1<<RXCIE);
18
  
19
        SREG = sreg;  
20
}

Inerrupt Service Request:
1
ISR (USART_RXC_vect)
2
{
3
    static uint8_t temp;
4
     
5
  temp=UDR;
6
  UDR=temp;
7
}

In meinem Terminal Programm ist auch die richtige Baudrate eingestellt. 
Wenn ich ein Byte sende kommt entweder nur 0x00 oder gar nichts zurück. 
Hat jemand eine Idee, wo der Fehler liegt?

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