- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 9 von 9

Thema: USART Initialization ATmega644 8MHz

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    18.03.2011
    Ort
    Stuttgart
    Alter
    39
    Beiträge
    6
    Danke für die hinweise, ich habe jetzt mein Programm geändert und hab's so eingestellt, wie ihr es empfohlen habt. Hier mein Code

    Code:
    /* 
      UART-Init: 
    Berechnung des Wertes für das Baudratenregister 
    aus Taktrate und gewünschter Baudrate
    */
     
    #ifndef F_CPU
    
    #warning "F_CPU war noch nicht definiert, wird nun nachgeholt mit 8000000"
    #define F_CPU 8000000UL  // Systemtakt in Hz - Definition als unsigned long beachten 
                             // Ohne ergeben sich unten Fehler in der Berechnung
    #endif
     
    #define BAUD 9600UL      // Baudrate
     
    // Berechnungen
    #define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1)   // clever runden
    #define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1)))     // Reale Baudrate
    #define BAUD_ERROR ((BAUD_REAL*1000)/BAUD) // Fehler in Promille, 1000 = kein Fehler.
     
    #if ((BAUD_ERROR<990) || (BAUD_ERROR>1010))
      #error Systematischer Fehler der Baudrate grösser 1% und damit zu hoch! 
    #endif 
    
    #include <avr/io.h> 
    #include <avr/interrupt.h>
    
    
    
    void USART_Init( unsigned int baud )
    {
    /* Set baud rate */
    UBRR0H = (unsigned char)(baud>>8);
    UBRR0L = (unsigned char)baud;
    /* Enable receiver and transmitter */
    UCSR0B = (1<<RXEN0)|(1<<TXEN0);
    /* Set frame format: 8data, 1stop bit */
    UCSR0C = 3<<UCSZ00;
    }
    
    int main (void) {
    
    USART_Init( BAUD_REAL ) ;
    
    
    
        while (!(UCSR0A & (1<<UDRE0)))  /* warten bis Senden moeglich                   */
        {
        }
     
        UDR0 = 'x';                    /* schreibt das Zeichen x auf die Schnittstelle */
    
     }
    Im Endeffekt hat sich nichts geändert als Hardware verwende ich ein stk500 und ein USB to RS232 Adapter.

    Danke für eure Hilfe
    Geändert von AT90S1200 (20.03.2011 um 13:09 Uhr)

Berechtigungen

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

Labornetzteil AliExpress