-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: USART - Atmega8 Problem...

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    09.01.2010
    Beiträge
    10

    USART - Atmega8 Problem...

    Anzeige

    Servus,
    hab ein Problem mit meinem Atmega8 Usart!
    Ich möchte mal zu Beginn ganz simple Zeichen per RS232 mithilfe eines MAX232 an meinen PC schicken und mit dem HTerm empfangen.

    Verwende dazu diese MAX232-Schaltung:
    http://sodoityourself.com/wp-content...ircuit_232.jpg

    und das ist mein Code:
    Code:
    #include <avr/io.h>
    #include <avr/delay.h>
    
    #define F_CPU 12000000L
    #define BAUD 9600L
    
    #define UBRR_VAL ((F_CPU+BAUD * 8)/(BAUD*16)-1)      //clever runde
    #define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1)))         //reale Baudrate
    
    #define BAUD_ERROR ((BAUD_REAL*1000)/BAUD-1000)      //Fehler in Promille
    
    #if ((BAUD_ERROR>10)||(BAUD_ERROR<-10))
    #error Systematischer Fehler in der Baudrate größer 1% und damit zu hoch!
    #endif
     
    
    int main(void)
    {
       
       UBRRH = UBRR_VAL >> 8;
       UBRRL = UBRR_VAL & 0xFF;
       
       
       UCSRB = (1<<RXEN)|(1<<TXEN);      			//UART TX einschalten
       UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);     //Asynchron 8N1
       
       
    
       while (!(UCSRA & (1<<UDRE)))      //warten bis Senden möglich
       {
       }   
    
    
       UDR = 'x';                     //schreibt das Zeichen x auf die Schnittstelle
       _delay_ms(100);
    
    
       return 0;                     
    }
    Einstellungen HTerm:
    Baud: 9600
    Data: 8
    Stop: 2
    muss ich im HTerm weitere Einstellungen tätigen?

    Hab am TX-Pin am µC eine ständige Spannung von 3,26V und sobald ich das Programm starte geht sie kurz auf 0V runter.

    Am HTerm kommt nichts an.

    Danke für eure Hilfe!
    LG

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    05.04.2008
    Beiträge
    40
    Hallo

    also zu deinem Code:

    UCSRC = (3<<UCSZ0);

    Ich weiß nicht ob das so geht...

    Ich würde es vielleicht so versuchen:

    UCSRC = (1<<UCSZ1) | (1<<UCSZ1);

    Und warum verwendest du 2 Stoppbits? Einfach nur so, oder bringt das irgendwie Vorteile?

    Und hier nochmal mein erster Code, den ich mal irgendwann im Internet gefunden hab. Auf meinem Atmega16 funktioniert er, vielleicht kannst du damit deine Schaltung testen.

    Code:
    #include <avr/io.h>
    #include <inttypes.h>
    
    // Sollte schon im Makefile definiert sein.
    // In dem Fall hier einfach löschen.
    #define F_CPU       16000000UL
    
    #define BAUD        9200UL
    #define UBRR_BAUD   ((F_CPU/(16UL*BAUD))-1)
    
    // USART initialisieren
    void uart_init(void)
    {
        // Baudrate einstellen (Normaler Modus)
        UBRRH = (uint8_t) (UBRR_BAUD>>8);
        UBRRL = (uint8_t) (UBRR_BAUD & 0x0ff);
    
        // Aktivieren von receiver und transmitter
        UCSRB = (1<<RXEN)|(1<<TXEN);
    
        // Einstellen des Datenformats: 8 Datenbits, 1 Stoppbit
        UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
    }
    
    int main(void)
    {
        uint8_t buffer;
    
        // USART initialisieren
        uart_init();
    
        while (1)
        {
            // Warten bis Daten empfangen wurden
            while ( !(UCSRA & (1<<RXC)) )
                ;
    
            // Empfangsregister auslesen
            buffer = UDR;
    
            // Warten bis der Sendepuffer frei ist
            while ( !( UCSRA & (1<<UDRE)) )
                ;
    
            // Daten in den Puffer schreiben und damit senden
            UDR = buffer;
        }
    }
    mfG

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    Hast du schon probiert ob HTerm und die Leitungen funktionieren?
    Dazu den Mega8 aus dem Sockel nehmen und zwischen RX und TX eine Brücke stecken.
    Wenn du dann am HTerm etwas eingibst solltest du es als Echo zurück bekommen.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    09.01.2010
    Beiträge
    10
    Danke für den Tipp, habs jetzt mal so getestet.
    Kam nichts an, wird wohl am Max232, HTerm oder an meinem RS232/USB Converter liegen.
    Wie teste ich am Besten um die Möglichkeiten einzuschränken?

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    Ich würde beim USB-Konverter anfangen, dort mal RX/TX kurzschließen, wenn es funktioniert, dann Schritt für Schritt Richtung Board.
    Hast du am HTerm auch die richtige COM angegeben?
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    09.01.2010
    Beiträge
    10
    Danke, scheint am Konverter zu liegen.
    COM definitiv richtig gewählt!
    Werd mir einen neuen besorgen und mich dann nochmal melden!
    Schönes Wochenende!

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    09.01.2010
    Beiträge
    10
    Neuer RS232-USB Converter funktioniert,
    durch den MAX232 kommt allerdings nichts durch!
    Machts nen Sinn, wenn ich die Spannungswerte der MAX-Pins poste?

  8. #8
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    Kannst du dem MAX232 aus dem Sockel nehmen?
    Wenn ja, dann mal auf den Pin 13,14 eine Brücke und HTerm Echotest.
    Spannungen mit angestecktem Kabel zum PC messen.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    09.01.2010
    Beiträge
    10
    ohne MAX232: Brücke(PIN13/14) Pin 13/14: -6,6V gegen Masse

    mit MAX232:

    PIN1: 5,5 16: 3,7
    2: 7,1
    3: 2,0 14: -7
    4: 3,7 13: 0
    5: -3,3 12: 3,7
    6: -6,9 11: 3,7
    7: -6,9 10: 2,75
    8: 0 9: 3,7

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    09.01.2010
    Beiträge
    10
    @ Hubert, was sagst du zu den Spannungswerten?

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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