Archiv verlassen und diese Seite im Standarddesign anzeigen : Kann mir jemand den folgenden Code erklären?
Wer kann mir den nachfolgenden Code erklären was er macht, und warum das gerade so programmiert wurde.
do
{
uint8_t dummy;
(void) (dummy = UDR);
}
while (UCSRA & (1 << RXC));
der code stammt aus dem rn-wissen bereich
https://www.roboternetz.de/wissen/index.php/UART_mit_avr-gcc
Mfg
Daniel Fiedler
BlueNature
22.06.2006, 22:15
Servus,
der Code macht nichts anderes als solange zu waren bis der UART ein RXD-Interrupt ausgelöst hat, also ein Byte empfangen hat. Danach mußt den UART lesen und das Byte eben selber verkuddeln.
Grüße Wolfgang
SprinterSB
23.06.2006, 08:18
Der Code ist ein "Flush" des Empfangs-Puffers UDR. Wenn man den UART neu initialisiert kann es sein, daß er in einem undefinierten Zustand ist und seltsame Zeichen enthält. Daher wird der Puffer in der Initialisierung des UART erst mal leergeräumt wie im Handbuch empfohlen.
Um den Wert auszulesen wird die Variable dummy verwendet. Da diese nicht weiter verwendet wird und man dadurch evtl. eine Compiler-Warnung erhält, ist dem Ausdruck ein (void) vorgestellt (cast auf void).
Näheres zum Flush des Receive-Buffers findest du in den Manuals des jeweiligen AVRs unter UART bzw USART.
Mit Interrupts hat das nichts zu tun, weil UART-Interrupts an der Stelle nicht aktiviert sind (und auch später nicht verwendet werden.)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.