@m.a.r.v.i.n & @damaltor
hmmm, ist ja interessant, das ihr auch schon Thread's vermisst. Ich habe zu Anfang meiner Besuche im Forum so alle Beiträge per Bockmark im Browser festgehalten. Es gibt da mindestens einen, den es definitiv nicht mehr gibt. Der Titel war "Was macht Ihr eigentlich beruflich, was studiert Ihr ?" und war unter Beitragsnummer 12654 zu finden.
Zur Warteschleife:
damaltor führt an, dass man ja auch über ein Register prüfen kann, ob das zu sendende Byte schon weg ist.
Aber genau das wird ja noch VOR der merkwürdigen doppelten for()-Loop gemacht. (Ist im Register UCSRA das Bit 6: TXC 'USART Transmit Complete')
Das UDR-Register ist im AVR doppelt angelegt. Es hat nur auf der Sende- und Empfangsseite den gleichen Namen, sogar intern die gleiche Adresse. Das wird im ATmega8-Handbuch auf Seite 150 recht gut erklärt.Code:while (!(UCSRA & 0x40)) // abwarten, bis das letzte Zeichen ; // uebertragen wurde. for (i = 0; i < 0xFE; i++) // warten auf irgendwas; keiner weiss for (length = 0; length < 0xFE; length++); // wofuer
Das zu sendende Byte kann somit nicht von einem empfangenen Byte übermangelt werden. Sonst könnte ein "Full Duplex Operation (Independent Serial Receive and Transmit Registers)" nicht funktionieren (Seite 130 im Handbuch auf der Asuro-CD)
Tut mir Leid, aber im Moment stehe ich noch auf meiner Vermutung, mit den Synchronisationsproblemen.
Lesezeichen