- Labornetzteil AliExpress         
Ergebnis 1 bis 3 von 3

Thema: Kann mir jemand den folgenden Code erklären?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    15.06.2006
    Alter
    39
    Beiträge
    14

    Kann mir jemand den folgenden Code erklären?

    Anzeige

    Powerstation Test
    Wer kann mir den nachfolgenden Code erklären was er macht, und warum das gerade so programmiert wurde.

    Code:
        do
        {
            uint8_t dummy;
            (void) (dummy = UDR);
        }
        while (UCSRA & (1 << RXC));
    der code stammt aus dem RN-Wissen bereich
    https://www.roboternetz.de/wissen/in...RT_mit_avr-gcc


    Mfg
    Daniel Fiedler

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.08.2004
    Ort
    Stuttgart
    Alter
    49
    Beiträge
    851
    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

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    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.)
    Disclaimer: none. Sue me.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen