- LiFePO4 Speicher Test         
Ergebnis 1 bis 3 von 3

Thema: USART Baudrate ändern, nur wie?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    02.09.2010
    Ort
    Magstadt
    Alter
    40
    Beiträge
    11

    USART Baudrate ändern, nur wie?

    Hallo alle zusammen,

    ich muss während des Programmlaufs die Baudrate vom USART ändern, doch
    leider funktioniert das nicht so ganz.
    Ich baue eine LIN Kommunikation auf (AT90CAN12 und um den Syncbreak zu
    senden, muss ich von 19200Baud auf 13000Baud runter gehen.

    Mit dem Debugger sehe ich auch das die Baudrate im Register richtig
    verändert wurde wenn ich einen Breakpoint zwischen den beiden "BAUD_Init" setze (auf 13000Baud) aber es wird trotzdem mit 19200Baud
    gesendet.
    Habe ich etwas übersehen oder muss ich irgendein Flag noch setzen damit
    die Übertragungsrate auch so übernommen wird ?

    Meine Funktion sieht wie folgt aus:

    Code:
    void LIN_Syncbreak()
    {
      // Baudrate von 19200Baud auf 13000Baud runtersetzen
      // um für >677µs Syncbreak zu senden
    
      BAUD_Init(SYNCB);  // Baudrate auf 13000 setzen
    
      lin_msg.syncbreak = 0x00;  // Daten für Syncbreak = 0x00
      uart_putc(lin_msg.syncbreak);  // Sende Syncbreak
    
      BAUD_Init(NORMB);  // Baudrate auf 19200 setzen
    }
    Gruß Andi

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    42
    Beiträge
    2.009
    Wie schaut denn die Funktion BAUD_Init() aus?
    Wenn ich bei meinen AVR den Inhalt von UBRRnH und UBRRnL veränder, dann tut sich da schon was.
    Notfalls noch kurz RXEN und TXEN "neu starten".
    #ifndef MfG
    #define MfG

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    02.09.2010
    Ort
    Magstadt
    Alter
    40
    Beiträge
    11
    Habe das Prob. gefunden... mit einem delay_ms(1) funktioniert es.
    Die Routine wird wohl zu schnell verarbeitet, so das es erst garnicht zu den 680µs senden kommt.

    Thx & danke
    Andreas

Berechtigungen

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

LiFePO4 Speicher Test