- LiFePO4 Speicher Test         
Ergebnis 1 bis 3 von 3

Thema: ATmega32 Problem UART Reihenfolge Register

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.09.2005
    Ort
    Osnabrücker Land
    Alter
    62
    Beiträge
    534

    ATmega32 Problem UART Reihenfolge Register

    Hallo !

    Ich hatte ein Problem mit der seriellen Schnittstelle. In Abhängigkeit
    der Reihenfolge bei der Initialisierung werden falsche Daten gesendet.

    Wenn ich folgende Reihenfolge bei der Initialisierung verwende,
    dann kommen nur 0-Byte am Comport raus:

    Code:
    * *uint16_t ubrr = (uint16_t) ((uint32_t) F_CPU / (16 * BAUDRATE) - 1);
    * *UBRRH * * * * = (uint8_t) (ubrr >> 8);
    * *UBRRL * * * * = (uint8_t) (ubrr);
    
    * *UCSRB * * * *|= (1 << RXEN) *| (1 << TXEN) *| (1 << RXCIE);
    * *UCSRC * * * *|= (1 << USBS) *| (1 << UCSZ1) | (1 << UCSZ0); // asyncron 8N1

    Wenn ich die Reihenfolge umdrehe, ist alles wie es sein sollte
    Code:
    * *UCSRB * * * *|= (1 << RXEN) *| (1 << TXEN) *| (1 << RXCIE);
    * *UCSRC * * * *|= (1 << USBS) *| (1 << UCSZ1) | (1 << UCSZ0); // asyncron 8N1
    
    * *uint16_t ubrr = (uint16_t) ((uint32_t) F_CPU / (16 * BAUDRATE) - 1);
    * *UBRRH * * * * = (uint8_t) (ubrr >> 8);
    * *UBRRL * * * * = (uint8_t) (ubrr);
    Anmerkung - die Codeschnipsel sind Bestandteil der Anfangsinitialisierung des atmega32, die Interrupts werden am Ende dieser mit sei(); aktiviert.

    Ich hefte das unter "Bug || unloesbares Raetsel" und "Info für alle" ab.

    Vy 73
    Vajk
    Ich kann mir keine Signatur leisten - bin selbständig!

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Ganz so mystisch isses auch nicht.
    Wenn du ins UCSRC schreiben willst, musst du URSEL setzen, sonst vernichtest du das UBRRH-Register.
    1) in der unteren reihenfolge schreibst du erst nachher in das UBRRH, somit reparierst du es gewissermassen.
    2) in der oberen Folge ist die letzte aktion die Zerstörung des UBRRH, und das bleibt dann.

    (lt. doku haben UCSRC u. UBRRH die gleiche physische adresse)
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.09.2005
    Ort
    Osnabrücker Land
    Alter
    62
    Beiträge
    534
    ooops, danke, das hatte ich bisher ueberlesen. Beim mega128 gibts das nicht ...
    Ich kann mir keine Signatur leisten - bin selbständig!

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad