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

Thema: Baudrate für UART angeben.

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.09.2009
    Ort
    Geilenkirchen
    Beiträge
    419
    Hallo, dnake erstmal.
    Es lag daran, dass es getrennt geschrieben werden muss.
    jetzt habe ich es mal mit makros (wenn sie denn so heißen) versucht.
    das klappt auch aleees aber es gibt ein problem.
    Das Zeichen wird nicht gesendet.
    die kontroll LED leuchtet auch nicht.
    Was kann da falsch sein?
    Code:
    #include <avr/io.h>
    #include <stdlib.h>
    
    #ifndef F_CPU
    #warning "F_CPU war noch nicht definiert, wird nun nachgeholt mit 1000000"
    #define F_CPU 1000000UL  // Systemtakt in Hz - Definition als unsigned long beachten 
                             
    #endif
    #define BAUD 9000UL      // Baudrate
    #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 die abudratenerrror ist zu stark;
    #endif  
    
    
    
    
    
    void main (void)
    {
    DDRC = 0xff; //nur für LED 
    
    UCSRB |= (1<<TXEN);                           // UART TX einschalten
    UCSRC = (1<<URSEL)|(1 << UCSZ1)|(1 << UCSZ0); // Asynchron 8N1  
    
    UBRRH = UBRR_VAL >> 8;
    UBRRL = UBRR_VAL & 0xFF;
    while (1)
    {
        if (!(UCSRA & (1<<UDRE)))  
        {
        
        PORTC = (1 << DDC0) | (1 << DDC1) | (1 << DDC2) | (1 << DDC3) | (1 << DDC4);//Pins mit LED
    
        UDR = 'x';   
    	}                 
    
    
    }
    }
    mfg
    Olaf

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.09.2009
    Ort
    Geilenkirchen
    Beiträge
    419
    Hallo,
    Weiß keiner, was da Falsch ist?

    Gruß
    Olaf

  3. #3
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    #define BAUD 9000UL // Baudrate
    9000 Baud? Ich glaube kaum, dass du diese Baudrate wirklich haben willst.

    Code:
        if (!(UCSRA & (1<<UDRE)))
           {
              PORTC = (1 << DDC0) | (1 << DDC1) | (1 << DDC2) | (1 << DDC3) | (1 << DDC4);//Pins mit LED
          UDR = 'x';
            }
    Was hier steht, ist: "wenn KEIN Platz in UDR ist, dann schreibe 'x' hinein". Macht irgendwie keinen Sinn, oder?
    MfG
    Stefan

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.09.2009
    Ort
    Geilenkirchen
    Beiträge
    419
    Hallo Stefan,
    danke erstmal jetzt leuchtet die LED.
    Also bei if (!(UCSRA & (0<<UDRE)))
    Oh ja, das Ausrufezeichen Grummel.

    Jedenfalls das Zeichen kommt noch immer Nicht bei hterm an.
    Wie du schon sagst wird es vermutlich an der Baudrate liegen.
    Aber welche wäre die Richtige?
    Aus den ganzen Tabellen im Netz werde ich einfach nicht schlau.
    Ich habe eienn Atmega mit Internem Oszi 1mhz.

    mfg
    Olaf

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.12.2007
    Beiträge
    280
    Für die serielle Schnittstelle solltest du auf jeden Fall einen externen Quarz hernehmen. Du kannst ja mal bei hterm show errors einschalten. Wenn da Fehler angezeigt werden, weist du schonmal, dass Signale ankommen. Sollte da nichts angezeigt werden, dann solltest du die Konfiguration nochmal überprüfen und die hardware. Wenn was angezeigt wird, dann würde ich einen externen Quarz probieren.

    Sollte auch das nicht klappen, kannst du ja mal zum Test einen erprobten Quellcode benutzen: http://www.mikrocontroller.net/artic...orial/Der_UART

    Der funktioniert sicherlich.

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.09.2009
    Ort
    Geilenkirchen
    Beiträge
    419
    Hallo Martin,
    Ich bekomme leider keine Fehler angezeigt.
    Den code benutze ich doch in leicht veränderter Version.

    Gruß
    Olaf

Berechtigungen

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

LiFePO4 Speicher Test