Hi,

damaltor:
an der Frequenz liegt es nicht, da ich ja durch beschreiben des OCR2 Registers den Original Wert wiederherstelle. Wenn ich mir die Funktion allerdings so ansehe:
Code:
/* function for serial communication */
void SerWrite(unsigned char *data,unsigned char length)
{
	unsigned char i = 0;
	UCSRB = 0x08; // enable transmitter
	while (length > 0) {
		if (UCSRA & 0x20) { // wait for empty transmit buffer
			UDR = data[i++];
			length --;
		}
	}
	while (!(UCSRA & 0x40)); 
	for (i = 0; i < 0xFE; i++)
		for(length = 0; length < 0xFE; length++); 
}
liegt es also meiner Meinung nach "nur" an UCSRB (vgl. Datenblatt Mega8 Seite 140). Dachte das wäre unerheblich, argh.
Werde das morgen gleich mal ausprobieren. edit: keine Besserung, wenn ich nach SerWrite ein UCSRB = 0x00 mache :=(

linux_80:
Genau das scheint es zu sein.

Vielen Dank,

Hans

edit: keine Besserung, wenn ich am Anfang der SerWrite ein OCR2 = 0x91; DDRD &= ~(1 << PD1); mache und am Ende ein UCSRB = 0x00; DDRD |= (1 << DDD1);