UART mit C

Gast #4681
Lesenswert?

Hallo Leute

Ich habe folgendes Problem:
Wenn ich das Programm (siehe Anhang) auf dem 8515 laufen lasse, empfange 
ich am Hyper Terminal etwa folgendes:
TsTsTsTtTtTtTtTtTtetetete!e!e!e!e!e!s!s!s!s!s!sTsTsTsTtTtTtTtTtTtetetete 
!e!e!e!e!e!s!s!s!s!s!sTsTsTsTtTtTtTtTtTtetetete!e!e!e!e!e!s!s!s!s

Bei einer höherem Baudrate (19200) gibt es weniger Fehler:
Tes!Tes!Tes!Tet!Tet!Tet!Tst!Tst!Tst!est!est!estTes!Tes!Tes!Tet!Tet!Tet!T 
st!Tst!Tst!est!est!est

Ich denke es liebt an der UDRE Abfrage.
Wenn ich anstelle von while(UDRE==0); while(UDRE!=1); schreibe passiert 
gar nix mehr.....

Kann mir jemand helfen?

Gruss PD
Angehängte Dateien:
Gast #4682
Lesenswert?

Hmm, weiß zwar nicht, welchen compiler du benutzt, aber wenns avr-gcc 
ist, ist die UDRE abfrage falsch. du holst udre ja gar nicht aus dem 
register raus, sondern checkst immer nur eine variable.

bei gcc müsste es heißen:

while (bit_is_clear(UCSRA,UDRE)) ;

wenn du allerdings codevision einsetzt siehts schon wieder anders aus. 
da kenn ich mich aber nicht aus...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren