Forum: Mikrocontroller und Digitale Elektronik Problem mit UART


von dieter kuhn (Gast)


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?
von Daniel V. (danvet)


Lesenswert?

Bitte kompletten Code posten. So kann man nur raten.
Interrupt nicht frei gegeben?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.