Hallo, dnake erstmal.
Es lag daran, dass es getrennt geschrieben werden muss.
jetzt habe ich es mal mit makros (wenn sie denn so heißen) versucht.
das klappt auch aleees aber es gibt ein problem.
Das Zeichen wird nicht gesendet.
die kontroll LED leuchtet auch nicht.
Was kann da falsch sein?
Code:
#include <avr/io.h>
#include <stdlib.h>

#ifndef F_CPU
#warning "F_CPU war noch nicht definiert, wird nun nachgeholt mit 1000000"
#define F_CPU 1000000UL  // Systemtakt in Hz - Definition als unsigned long beachten 
                         
#endif
#define BAUD 9000UL      // Baudrate
#define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1)   // clever runden
#define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1)))     // Reale Baudrate
#define BAUD_ERROR ((BAUD_REAL*1000)/BAUD) // Fehler in Promille, 1000 = kein Fehler.
 
#if ((BAUD_ERROR<990) || (BAUD_ERROR>1010))
  #error die abudratenerrror ist zu stark;
#endif  





void main (void)
{
DDRC = 0xff; //nur für LED 

UCSRB |= (1<<TXEN);                           // UART TX einschalten
UCSRC = (1<<URSEL)|(1 << UCSZ1)|(1 << UCSZ0); // Asynchron 8N1  

UBRRH = UBRR_VAL >> 8;
UBRRL = UBRR_VAL & 0xFF;
while (1)
{
    if (!(UCSRA & (1<<UDRE)))  
    {
    
    PORTC = (1 << DDC0) | (1 << DDC1) | (1 << DDC2) | (1 << DDC3) | (1 << DDC4);//Pins mit LED

    UDR = 'x';   
	}                 


}
}
mfg
Olaf