-         

Ergebnis 1 bis 9 von 9

Thema: UART/USART vom ATMega32 will einfach gar nicht

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

    UART/USART vom ATMega32 will einfach gar nicht

    Anzeige

    Hallo liebe Community,
    ich bin noch blutiger uController Anfänger und brauche langsam mal ein Erfolgserlebniss, vielleicht könnt ihr mir ja weiterhelfen. (Ja Google, Forum suche, etc. hab ich zu hauf schon durchwälzt)

    Erstmal Die Eckdaten
    - ATMega 32
    - STK 500
    - AVR Studio 4.x SP2
    - Hyperterminal
    - WINAVR für die Makefile

    Ich versuche dezeitig meinen uC mit Hyperterminal reden zu lassen. Auf den uC ist folgender c-Code (Geklaut^^) ich habe auch schon etwas selbstgeschriebenes probiert mit gleichem Nichterfolg:
    #include <avr/io.h>

    void USART_Init (void)
    {
    #if F_CPU < 2000000UL
    UCSRA = (1 << U2X);
    UBRRL = F_CPU / (8 * 9600UL) - 1;
    #else
    UBRRL = F_CPU / (16 * 9600UL) - 1;
    #endif
    /*Enable reciever and transmitter */
    UCSRB = (1<<RXEN) | (1<<TXEN) ;
    /*Set Frame format :8data, 2stop bit */
    UCSRC = (1<<URSEL) | (1<<USBS) | (3<<UCSZ0) ;
    }

    void USART_Transmit ( unsigned char data )
    {
    /*Wait for empty transmit buffer */
    while ( !(UCSRA & (1<<UDRE)) ) ;
    /* Put data into buffer, sends data */
    UDR = data ;
    }

    int main (void)
    {
    USART_Init();

    while(1)
    {
    USART_Transmit ("O");
    USART_Transmit ("K");
    }
    }
    Zu meinen Einsellungen. Beginnend mit dem Einfachsten.

    HT steht auf 9600 Boud mit 8Bits 2 Stops und ohne Parity und ich habe nur einen COM-Port

    STK500 uC sitzt drin ist programmierbar (ISP freq 54khz) und ISP6 auf SPROG3, RxD und Txd sind auf PD0 und PD1 gebrückt und ich steck das COM Kabel zum Ausleseversuch um.

    Jetzt zum AVR Studio, Programmieren (ISP Frq 57khz) etc funktioniert, unter dem reiter Fuses ist der Haken bei Ckopt gesetzt und bei Sut_Cksel steht auf 4 Mhz interner Oszi, da kein externer Oszi vorhanden. Unter dem Reiter Advanced steht unter Oscillator Calibration Byte 4 Mhz

    Tortz diverser Variationen sehe ich auf dem HT leider gar nix, bis auf wenn ich dem STK den Strom wegnehme und danach wieder gebe gibt er mir eine '00' aus. Wenn es wenisgtens 2 Zeichen wären könnte ich es ja auf die Frequenz oder ähnliches schieben, aber so bekomm ich rein gar nix. Irgendwo muss ich wohl einen grundlegenden Fehler machen, aber wo?
    Bitte helft mir mit all euren Anregungen und Ideen.

    Vielen Dank
    Bamboocha

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    Bei mir läuft es mit einer kleinen Änderung:
    USART_Transmit ('O');
    USART_Transmit ('K');
    USART_Transmit (' ');
    Keine Anführungsstriche in den Klammern.
    Wozu brauchst du WINAVR für das Makefile, das AVR-Studio macht sich das doch selbst.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    14.04.2010
    Beiträge
    10
    Mhh, hast recht es müssen ' und nicht " sein. aber er macht bei mir immer noch nix
    Muss ich den uC noch extra einrichten? Fehlt noch eine Initialisierung oder reicht die USART_Init?

    P.S. Jip makefile brauch ich hier wirklich nicht...danke nochmal

    Zur Zeit will er auf dem SDK500 nichtmal
    #include <avr/io.h>
    #include <util/delay.h>



    int main (void)
    {
    DDRA = 0xff; // Data Direction auf 1 -> PD0 - PD7 Ausgang


    while(1)
    {
    PORTA = 0x01;
    _delay_ms(2000);
    PORTA = 0x02;
    _delay_ms(2000);
    PORTA = 0x04;
    _delay_ms(2000);
    PORTA = 0x08;
    _delay_ms(2000);
    PORTA = 0x10;
    _delay_ms(2000);
    PORTA = 0x20;
    _delay_ms(2000);
    PORTA = 0x40;
    _delay_ms(2000);
    PORTA = 0x80;
    _delay_ms(2000);
    PORTA = 0xff;
    _delay_ms(2000);
    PORTA = 0x00;
    _delay_ms(2000);

    }
    return 0;
    }

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    Ich habe deinen Code bis auf die Änderung übernommen, also keine weitere Initialisierung.
    Hast du schon mal auf RxD und TxD eine Brücke gesteckt, dann sollte im HT ein Echo zurückkommen wenn du was eingibst.
    Oder auch nur mal den Stecker gedreht.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    14.04.2010
    Beiträge
    10
    Gebrückt habe ich schon, das Echo kommt auch an. Dabei ist mir nur aufgefallen, dass wenn ich mehr als 8 Zeichen schicke 1 davon als schwachsinn wieder zurückkommt.
    Ich bin mittlerweile soweit, dass wenn das Programm richtig ist und die R232 Verbindung bis auf das Board kommt, dass irgendwas mit der uC Verbindung zu den steckpins nicht stimmt, was denke ich durch das nicht funktionierende LED-Test Programm nur bestätig wird.
    Kann ich da etwas übersehen haben?

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.556

    Re: UART/USART vom ATMega32 will einfach gar nicht

    Zitat Zitat von Bamboocha
    Hallo liebe Community,


    Zu meinen Einsellungen. Beginnend mit dem Einfachsten.

    HT steht auf 9600 Boud mit 8Bits 2 Stops und ohne Parity und ich habe nur einen COM-Port


    Vielen Dank
    Bamboocha
    Hmm, üblich sind eher8,n,1..? und im Hyperterminal Flussteuerung !keine!wählen.
    Die Pins am Pord sollen nicht unbedingt gebückt werden, eher die auf den
    SDK 500. Der PC mit hyperterminal muß! mit der 2. com schnittstelle
    vom stk 500 verbunden werden, die 1. 232 ist nur zum Datentausch mit
    den STK 500 selber! Pd0/1 muss mit rdx/tdx vom stk 500 verbunden
    werden. Das Programm kann ich nicht nachvollziehen (Bascommnutzer).
    Habe aber mit diversen Prozessoren noch nie RS 232 Probleme gehabt.

    Gruß Richard
    [/quote]

  7. #7
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    Es könnte nur noch sein, das der Kontroller defekt ist glaube ich eher nicht, das die Taktfrequenz nicht stimmt.
    Im AVR-Studio hast du das aber im Klartext stehen.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    14.04.2010
    Beiträge
    10
    Suppa...es geht...gleiche Einstelllungen wie beim letzten mal und hatte gleich wirrwar über den USART bekommen. Dann noch festgestellt das die F_CPU auf 8 Mhz stand schnell die Baudrate auf 4800 runtergedreht und es funktioniert. Ich danke euch allen für eure Unterstützung. Bis zum nächsten Problem dann =D>

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892
    Was mir noch aufgefallen ist - Du hast UBRRH nicht gesetzt.
    Normalerweise ist der Wert ja 0, aber wenn da mal was drinstand, wird es nicht mehr geändert und dein Programm kann zicken machen.

Berechtigungen

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