UART Bit UDRE

Gast #323008
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
Gast #323010
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.