- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 18

Thema: Einsteiger braucht UART Hilfe

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    19.11.2011
    Beiträge
    18

    Einsteiger braucht UART Hilfe

    Hallo Leute,

    sitze seit heute Mittag am UART (bin absoluter Neuling). Hab das Kapitel UART im Datasheet komplett abgearbeitet. Parallel dazu auch http://www.mikrocontroller.net/artic...orial/Der_UART hier reingeschaut (deutsche Übersetzung der Registerfunktionen). Nun alles angeschlossen Programmiert und es will einfach nicht funktionieren.

    meine Code:

    Code:
    /*
     * AVRGCC2.c
     *
     * Created: 20.04.2012 16:34:54
     *  Author: Administrator
     */ 
    #include <avr/io.h>
    #include <util/delay.h>
    
    
    
    
    #define F_CPU		16000000UL
    #define BAUD		9600UL
    
    #include <util/setbaud.h>
    
    
    int main(void)
    { 
    	//UART DEfinitionen
    	
    	UCSRB = (1<<TXEN);
    	UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
    	
    	UBRRL_VALUE;
    	UBRRL_VALUE;
    	
    	
    	int x;
    	
        while(1)
        {
    	    while (!(UCSRA & (1<<UDRE)))  /* warten bis Senden moeglich                   */
        {
        }
     
        UDR = 'x';                    /* schreibt das Zeichen x auf die Schnittstelle */
    	}
    }
    Als Hardware habe ich:
    RN-Control 1.4
    myAVR USBtoUART

    Software:
    AVRStudio
    HTerm

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Code:
        UBRRL_VALUE;
        UBRRL_VALUE;
    Das ist praktisch so, als würdest du schreiben:
    Code:
        42;
        42;
    Sieht irgendwie nicht wirklich sinnvoll aus, oder?
    MfG
    Stefan

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    19.11.2011
    Beiträge
    18
    Hoppla,
    da hat sich ein Tippfehler und ein Verständnisfehler eingeschlichen.

    Wollte schreiben:
    UBRRL_VALUE
    UBRRH_VALUE
    hatte es so verstanden, dass durch die gesetzte F_CPU und BAUD aus der setbaud.h mit den befehlen UBRRL_VALUE automatisch die richtigen Bits im Register gesetzt werden.

    Lange Rede kurzer Sinn, Danke für deine Hilfe

    LG
    Yunus

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    19.11.2011
    Beiträge
    18
    Hallo,

    also irgendwie will das immer noch nicht so funzen. Habe mittlerweile mittels Loopback die PC-Seite gecheckt, da scheint alles in Ordnung zu sein. Ausserdem habe ich erfahren, dass F_CPU vor dem delay.h header stehen soll, auch das habe ich geändert. Aber der µC sendet einfach nichts an meinen PC.

    Terminal: HTerm ist auf 8N1 9600Baud und Flow Control gestellt.



    #include <avr/io.h>
    #define F_CPU 16000000
    #define BAUD 9600

    #include <util/delay.h>
    #include <util/setbaud.h>



    int main(void)
    {
    //UART DEfinitionen

    UCSRA &= ~(1<<U2X);
    UCSRB = (1<<TXEN);
    UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);

    UBRRL = UBRRL_VALUE;
    UBRRH = UBRRH_VALUE;

    while(1)
    {
    while (!(UCSRA & (1<<UDRE))) /* warten bis Senden moeglich */
    {
    ;
    }
    UDR = 'x';

    }

  5. #5
    shedepe
    Gast
    Hey also als erstes musst du wissen welche Einstellungen du für den UART verwenden willst. Also wie viele Stopbits, Datenbits, Parity, Handshake usw.
    Die genauen Einstellungen findest du im Datenblatt zum verwendeten Atmega32 Controller, das Anfänger jedoch schnell erschlägt.
    Ich poste dir hier mal die Einstellungen die ich verwende:

    Code:
        UBRRH = ((F_CPU +BAUD*8 )/ (BAUD * 16L) - 1) >>8;
        UBRRL = ((F_CPU +BAUD*8 )/ (BAUD * 16L) - 1) & 0xFF;
    
        UCSRB = (1<<TXEN) | (1<<RXEN) | (1<<RXCIE);
        UCSRC = (1<<UCSZ0) | (1<<UCSZ1);
    Die Einstellungen schalten den Sender und Empfäger ein und schalten den Empfangsinterupt ein.
    Es sind 8 Datenbits eingestellt, Parität Disabled und ein Stopbit eingestellt.

    Die Baudrate musste du oben unter der F_CPU definition noch definieren.

  6. #6
    shedepe
    Gast
    PS. nur der vollständigkeit halber, hier noch das Datenblatt:
    www.atmel.com/Images/doc2503.pdf

    Die benötigten Informationen findest du ab Seite 159

Ähnliche Themen

  1. Einsteiger braucht Hilfe bei Motorenwahl
    Von patteb im Forum Motoren
    Antworten: 2
    Letzter Beitrag: 21.04.2010, 15:50
  2. Einsteiger braucht einen Rat!
    Von PanicGamer im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 2
    Letzter Beitrag: 16.12.2008, 18:22
  3. Antworten: 74
    Letzter Beitrag: 29.12.2006, 13:32
  4. Einsteiger braucht Expertenunterstützung
    Von Phil Connors im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 10.10.2006, 08:29
  5. Einsteiger braucht Hlfe
    Von bomberman_z im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 13
    Letzter Beitrag: 30.09.2006, 10:37

Berechtigungen

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

12V Akku bauen