naja .... es hat aber BISHER immer auf anhieb funktioniert , aber selbst auf 9600Baud gehts nicht!!! ich versuch mal das proggi zu kopieren, aber mein laptop mag meinen memostick nicht

Code:
#include <avr/io.h>
#include <avr/interrupt.h>
volatile unsigned char TmOt1A;
volatile unsigned char TmOt1B;
volatile unsigned char Settings[2];
volatile unsigned char* Pos;
volatile unsigned char* End;
volatile unsigned int Time32k;
volatile unsigned char ServoVal;
volatile unsigned int ImpVal;


#define ADC0 0
#define ADC1 1
#define ADC2 2
#define ADC3 3
#define ADC4 4
#define ADC5 5
#define ADC6 6
#define ADC7 7

ISR(SIG_UART_DATA)
{
	UDR = 100;//*(Pos); //nach dem nur 0 rauskam hab ich mal 100 verwendet
	Pos++;
	if (Pos > End) {
		UCSRB &= ~(1<<UDRIE);
		Time32k = 0;
		TCNT0 = 0;
		TIMSK |= (1<<TOIE0);
	}
}

ISR(SIG_OVERFLOW0)
{
	if(Time32k++ > 17 && ~(PIND & (1<<PD2))) // 18 Timerclocks sind etwas mehr als UART 2 Byte (sendepause für das easyradio-modul) ausserdem Busy-leitung an PD2
	{
		TIMSK &= ~(1<<TOIE0);
		Pos = Settings;
		*(Pos) = ServoVal; 
		Pos++;
		*(Pos) = (unsigned char)(ImpVal>>2);
		Pos = Settings;
		UCSRB |= (1<<UDRIE);
	}
}

//**** [unwichtig] 
ISR(SIG_OUTPUT_COMPARE1A)
{
	switch(TmOt1A){
	case(1):  TCCR1A |= (1<<COM1A1); break;//DDRB |= (1<<PB1); break;
	case(2):  TCCR1A &= ~(1<<COM1A1); break;//DDRB &= ~(1<<PB1); break;
	case(4): TmOt1A = 0; break;
	}
	TmOt1A++;
}

ISR(SIG_OUTPUT_COMPARE1B)
{
	switch(TmOt1B){
	case(1):  TCCR1A |= (1<<COM1B1); break;
	case(2):  TCCR1A &= ~(1<<COM1B1); break;
	case(4):  TmOt1B = 0; break;
	}
	TmOt1B++;
}

void Timeout32k(unsigned int Tout)
{
	Time32k = 0;
	while (Time32k < Tout);
	return;
}

//***** [/unwichtig]

int main(void)
{
	Time32k = 0;
	End = &(Settings[1]);
	Pos = Settings;
	TmOt1A = 0;
	TmOt1B = 0;
	ICR1 = 999;
	OCR1A = 200;
	OCR1B = 200;
	DDRB    = (1<<PB2)   | (1<<PB1);
	ADMUX   = (1<<REFS0);
	ADCSRA  = (1<<ADEN)  | (1<<ADPS2) | (1<<ADPS1);
	TCCR1A  = (1<<WGM11);// | (1<<COM1A1) | (1<<COM1B1);
	TCCR1B  = (1<<CS10)  | (1<<CS11)   | (1<<WGM13) | (1<<WGM12);
	TCCR0 = (1<<CS02);
	TIMSK = (1<<OCIE1A);// | (1<<OCIE1B);
	
	TCCR1A |= (1<<COM1B1) | (1<<COM1B0);
	
	PORTD |= (1<<PD2);

	UBRRH = 0;
	UBRRL = 51; // 51 ist 9600, was auch nciht geht sonst 12 für 38400
	UCSRB = (1<<TXEN);
	UCSRC  = (1<<UCSZ1) | (1<<UCSZ0);

//*********** Init ADC circuitry
	ADCSRA |= (1<<ADSC) | (1<<ADIF); // start conversion (init ADC)
	while (!(ADCSRA & (1<<ADIF)));      // wait for very 1st conversion
//*********** Enable Interrupt
	sei();
//*********** Start Timing Routine
	TCNT0 = 0;
	Time32k = 0;
	TIMSK |= (1<<TOIE0);
//*********** Main Loop
	while(1) {
//*********** Conversion A
		ADMUX = (ADMUX & 0xF0) + ADC0;   // set ADMUX
		ADCSRA |= (1<<ADSC) | (1<<ADIF); // start conversion
		while (!(ADCSRA & (1<<ADIF)));   // wait for 1st conversion
		ADCSRA |= (1<<ADSC) | (1<<ADIF); // discard 1st result
		while (!(ADCSRA & (1<<ADIF)));   // wait for 2nd conversion
		ServoVal = ((unsigned int)(ADC>>2)*200/255);
		OCR1A = 120 + ServoVal;  // write channel A result
//*********** Conversion B
		ADMUX = (ADMUX & 0xF0) + ADC1;
		ADCSRA |= (1<<ADSC) | (1<<ADIF);
		while (!(ADCSRA & (1<<ADIF)));
		ADCSRA |= (1<<ADSC) | (1<<ADIF);
		while (!(ADCSRA & (1<<ADIF)));
		ImpVal = ADC;
		OCR1B = ImpVal;  // write channel B result
	}
	return 0;
}

EDIT: selbst mit 16Mhz Quarz passiert nix, UBBR hab ich auf 103 geändert um 9600 Baud beizubehalten immernoch 0x00