Forum: Mikrocontroller und Digitale Elektronik UART Bit UDRE


von Herbert (Gast)


Lesenswert?

ICh habe hier eine Schleife die zwei Bytes vom SPDR an den UART
rausgeben soll.
.
.
....
for(i=0;i<2;i++)
    {
    SPDR = 0x00;              //Byte zum Schieben
    while(!(SPSR&(1<<SPIF)));  //fertig geschoben?
                while(!(UCSRA&(1<<UDRE))); //UDR leer?
    UDR=SPDR;
}
....
.
.

Komischerweise geht das erste Byte via UART raus, das zweite jedoch
nicht. Da bleibt er im letzten while hängen.

Hab ich da ein Verständnisproblem? Wenn ich im AVR Studio (letzte
Version) das UDRE Bit setze, geht er auch nicht aus der Schleife raus.
Der Controller bleibt ebenfalls so hängen.

Hat jemand mal einen Tipp für mich? Ich möchte übrigens keinen INT
nutzen!

Herbert

von Christian S. (kriki)


Lesenswert?

Probiers mal mit

while(1) {
  if(UCSRA&(1<<UDRE)) {break;}
}

Weiss nicht genau obs so funktioniert, da ich normalerweile ASM
programmiere ...

von Herbert (Gast)


Lesenswert?

Nee ist geklärt. Das Problem lag woanders. Ich sage nur RTFM. Das UART
kann mit dem UDRE abgefragt werden, nur braucht es im Simulator z.B.
einige Steps bevor das Bit wieder gesetzt ist und es weitergeht.

Danke trotzdem.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.