- Labornetzteil AliExpress         
Ergebnis 1 bis 4 von 4

Thema: USART am XMEGA32A4U wird im Simulator von Studio 7 nicht angesprochen

  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.214

    USART am XMEGA32A4U wird im Simulator von Studio 7 nicht angesprochen

    Anzeige

    Praxistest und DIY Projekte
    Hallo
    Ich möchte über einen ATXMEGA32A4U Daten über den USART E0 versenden.

    Ich muss dazu sagen, das sind meine ersten Gehversuche mit einem ATXMEGA Controller.

    Am Original Controller kann ich leider noch nicht testen, deshalb behelfe ich mir mit dem Simulator des AVR Studio 7 ( Version: 7.0.1417 - ).

    Der Controller ist auf 32MHz konfiguriert.
    Code:
    void clock_init (void)
    {
        OSC.CTRL |= OSC_RC32MEN_bm;
        while(!(OSC.STATUS & OSC_RC32MRDY_bm));
        CCP = CCP_IOREG_gc;
        CLK.CTRL = CLK_SCLKSEL_RC32M_gc;
    }
    Der USART wurde mit folgendem Code Initialisiert:
    Code:
    void init_usart (void)
    {
        //Baudrate ( 115200 )
        USARTE0.BAUDCTRLA = 1047 & 0xFF;
        USARTE0.BAUDCTRLB = ((1047 & 0xF00) >> 0x08);
        //Scale Faktor für 115200
        USARTE0.BAUDCTRLB |= ((-6 & 0x0F) << 0x04);
        //Sender aktivieren
        USARTE0.CTRLB = USART_TXEN_bm;  // | USART_RXEN_bm für Empfänger Aktivierung
        //8Bit
        USARTE0.CTRLC = USART_CHSIZE_8BIT_gc;
        //Port E TX als Ausgang
        PORTE.DIR |= (1<<3);
    }
    Die Sendung der Bytes im Main Loop schaut so aus:
    Code:
    while(!(USARTE0.STATUS & USART_DREIF_bm))
                {
                    USARTE0.DATA = midibuffer[send_pointer++];
                    if(send_pointer > bufferlen)
                    {
                        send_pointer=0;
                    }
                }
    Die while Bedingung wird zwar angesprungen, aber der dahinter stehende Code nie ausgeführt.
    Der Grund ist, das im Simulator das Data Register Empty Flag des USART immer auf 1 steht ( USARTE0.STATUS Register Bit 5 ).
    Es lässt sich auch nicht manuell ( per Mausklick ) auf 0 setzen.

    Ist das ein Bug des Simulators, oder hab ich da irgendwo was falsch initialisiert?

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Geändert von Siro (10.02.2019 um 08:41 Uhr)

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.06.2011
    Ort
    Dresden
    Beiträge
    219
    while(!(USARTE0.STATUS & USART_DREIF_bm));
    fehlt mindestens 1 Semikolon, wenn das Data Register Empty Flag gesetzt ist, kann das DATA Register beschrieben werden.
    mfg
    Achim

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.214
    Habs gefunden.
    Das DREIF Bit ist gesetzt wenn das DATA Register zur Aufnahme eines Bytes bereit ist.
    Deshalb musste der Code lediglich wie folgt geändert werden:
    Code:
    while(USARTE0.STATUS & USART_DREIF_bm)
    Also die nicht Anweisung ( ! ) entfernt werden.
    Das war in der Beschreibung die Ich hatte leider auch falsch.
    Und der Codewizzard von CodeVision AVR macht es leider auch falsch.

    Die Rettung war der Link von Siro - Danke dafür!
    Geändert von wkrug (10.02.2019 um 09:30 Uhr)

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 15.01.2014, 19:46
  2. ALL AVR Programmer wird von Bascom und AVR Studio nicht erkannt
    Von 128er im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 3
    Letzter Beitrag: 07.10.2011, 10:31
  3. Unterscheiden zw. AVR-Studio Simulator und echter Hardware?
    Von Jaecko im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 31.12.2009, 19:43
  4. AVR Studio Simulator - Frage zu Variablen Watch
    Von orbi im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 05.06.2006, 02:20
  5. Portanzeige beim AVR-Studio-Simulator
    Von felack im Forum AVR Hardwarethemen
    Antworten: 1
    Letzter Beitrag: 12.10.2005, 17:06

Berechtigungen

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

12V Akku bauen