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:
liegt es also meiner Meinung nach "nur" an UCSRB (vgl. Datenblatt Mega8 Seite 140). Dachte das wäre unerheblich, argh.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++); }
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);







Zitieren

Lesezeichen