Hallo, ich habe hier eine kleine Routine mit der ich ein Zeichen auf der Uart0 ausgebe und die im wesentlichen aus diesen beiden Zeilen besteht: while (!(U0LSR & BIT5)); U0THR = character; Die while-Schleife wartet IMHO solange bis der FIFO-Kopf wieder frei ist und ich das nächste Zeichen in die FIFO schieben kann. Nun brauche ich aber eine Funktion die mir anzeigt, ob die gesamte FIFO leer ist. Hintergrund ist, dass ich den Arm gerne in den PowerDown Modus schicken möchte ohne das die laufende Uart Übertragung abgebrochen wird. Wenn ich vor dem powerDown noch ein while (!(U0LSR & BIT6)) {}; einsetze, schneidet er immer genau ein Zeichen ab, egal wie lang der String ist, den ich vorher ausgebe... Wie kann ich sicher gehen, dass die FIFO komplett leer ist, bevor ich in den PowerDown-Modus gehe? Danke, Heiko
Versucht, auf gesetztes THRE und TEMP zu warten? Ansonsten dürfte eine kleine Warteschleife mit 10*Bittime vor PowerDown nicht wirklich wehtun.
In dem unwahrscheinlichen Fall, dass Du die Emfangsfunktion des UARTs nicht benoetigst und auch den Pin nicht anderweitig benutzt, kannst Du das Signal zurueckspeissen und auf das Empfangsinterrupt-bit achten. Noch eine Hardwaremoeglichkeit ueber einen Timer und einen Interrupt. Beim 2387 sind sehr viele pins interruptfaehig, ich glaube wir haben ca. 60 definiert. Der Vorschlag lautet den transmit pin auf einen Interrupt pin zu legen. Bei jeder fallenden Flanke wird der Interrupt getriggert und dadurch ein Timer auf 0 gesetzt. Dieser Timer wuerde relativ langsam laufen, entsprechend der baudrate. Nehmen wir an ein bit waeren 10 Timer Increments. Dann wuerde vor dem schlafen gehen der Timer ausgelesen. Wenn der Timerstand groesser 100 ist, dann ist keine Uebertragung am laufen, wenn kleiner 100, warten bis >100. Timer Ueberlauf dauert sehr lange und muss nicht wirklich beruecksichtigt werden, denn im schlimmsten Fall wartet man mit dem schlafen gehen obwohl man nicht muesste. Ist alles etwas umstaendlich und ein "UART-busy Flag" waere viel eleganter aber vielleicht hilfts ja. Robert Teufel Partner in Silicon Valley gesucht? Ich stehe gerne zur Verfuegung. -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Meine ARM/Cortex Webseite: http://www.lpc2000.com
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.