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);
Lesezeichen