-
        

Ergebnis 1 bis 2 von 2

Thema: UART-Verbindung -- TXC oder UDRE -Atmel 8535

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    16.07.2005
    Ort
    Neubeckum
    Alter
    37
    Beiträge
    110

    UART-Verbindung -- TXC oder UDRE -Atmel 8535

    Anzeige

    Hi ich habe folgende Frage:

    Ich lese mit meinem AVR über den internen ADC alle 2 Sekunden einen Wert ein und möchte Ihn dann über die serielle Schnittstelle an den PC senden. Der 2 Sekunden-Takt habe ich durch eine ISR realisiert, in der dann auch der Wert vom ADC geholt wird und die Daten gesendet werden. Ich sende eine 3Stellige Zahl stellenweise.

    Nun meine Fragen zum senden:

    Ich schreibe die Daten in das UDR-Register.

    Dann warte ich bis das Bit UDRE im USR-Register High wird. So funktioniert alles perfekt...

    Warum funktioniert es nicht, wenn ich Warte bis das TXC-Bit im USR-Register High wird. Ist das nicht eigentlich das gleiche? Wenn ich es so löse sendet er immer nur das erste Zeichen...

    Anbei auch mal der Code:


    Code:
    void send_ist(int ist)
    {
    eins=ist/100;
    hilfe=ist%100;
    zwei=hilfe/10;
    drei=hilfe%10;
    
    UDR=eins+48;
    while(!(USR&BIT(UDRE)));
    UDR=44;
    while(!(USR&BIT(UDRE)));
    UDR=zwei+48;
    while(!(USR&BIT(UDRE)));
    UDR=drei+48;
    while(!(USR&BIT(UDRE)));
    UDR=86;
    while(!(USR&BIT(UDRE)));
    UDR=95;
    while(!(USR&BIT(UDRE)));
    }
    DANKE schonmal...
    - Phantasie ist wichtiger als Wissen - - www.uni-soest.de -

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,

    TXC zeigt an, das alle Daten auch wirklich gesendet wurden,
    das Bit ist dann gesetzt.

    UDRE zeigt an, dass das DatenRegister leer ist, und wieder neu beschrieben werden kann. Das Bit ist gesetzt, wenn das Register leer ist.

    Es ist nicht das gleiche, aber es sollte doch gehen, wenn man auf TXC prüft.
    Das Bit wird nur automatisch zurückgesetzt, wenn eine ISR aufgerufen wird.

    Jetzt kommts drauf an wie der UART teil initialisiert wurde.

    Vor dem ersten Byte würde ich schon überprüfen, ob das Register leer ist, damit nix überschrieben wird.

Berechtigungen

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