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
Probiers mal mit while(1) { if(UCSRA&(1<<UDRE)) {break;} } Weiss nicht genau obs so funktioniert, da ich normalerweile ASM programmiere ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.