USART - Ungelöst

Gast #1220275
Hi, ich habe ein Problem. Ich hab den AVR ATmega 644P mit 20Mhz Quarz 
Oszi. Ziel ist es, den USART zum laufen zu bringen.
Hier der Code (C):

#include <avr/io.h>



//  =================================
//  ===== USART initialisieren  =====
//  =================================

void init_usart ()
{
  //  Baudrate festlegen (Datenblattseite 190)
  UBRR0L = 129;

  //  USART auf senden und empfangen einstellen
  UCSR0B = (1<<RXEN0)|(1<<TXEN0);

  //  Stopbits einstellen. (USBSn auf 1 = 2 Stopbits - 0 = 1 Stopbit?
  UCSR0C = (1<<USBS0)|(3<<UCSZ00);

  //  8-bit Übertragung
  UCSR0C |= (1<<UCSZ01) | (1<<UCSZ00);
}


  // =================================
  // ===== USART-Sendefunktion =====
  // =================================

  void USART_Transmit( unsigned char data )
  {
    /* Wait for empty transmit buffer */
    while ( !( UCSR0A & (1<<UDRE0)) )
      ;
    /* Put data into buffer, sends the data */
    UDR0 = data;
  }

  // =================================
  // ===== USART-Empfangsfunktion =====
  // =================================

  unsigned char USART_Receive( void )
  {
    /* Wait for data to be received */
    while ( !(UCSR0A & (1<<RXC0)) )
      ;
    /* Get and return received data from buffer */
    return UDR0;
  }


int main(void)
{
  init_usart();

  while(1)
  {

    //USART_Transmit(USART_Receive());
    USART_Transmit('a');


  }
}

Der Schaltplan sieht so aus:
http://www.avr-praxis.de/forum/attachment.php?attachmentid=887
Bilder auf meinem Steckboard gibt es hier:
http://img25.imageshack.us/gal.php?g=img0196r.jpg
Spannungen an den Kondensatoren:
C3 = 8,40V
C4 = 8,90V
C5 = 4,47V
C6 = 8,90V
Phänomen:
(Hab einen USB-RS232-Dongle)
1. Stom an => Rote LED leuchtet
2. RSR232 Stecker auf die Buchse ohne USB-Eingesteckt!! => Blaue LED 
leuchtet schwach und Rote unverändert.
3. USB-Stecker an PC => Blaue leuchtet heller und während der Dongle 
erkannt wird (dieses Geräusch, wenn man ein USB-Gerät einsteckt) blinkt 
sie unregelmäßig am hellsten)
Gast
1
//  Stopbits einstellen. (USBSn auf 1 = 2 Stopbits - 0 = 1 Stopbit?
2
UCSR0C = (1<<USBS0)|(3<<UCSZ00);
3

4
//  8-bit Übertragung
5
UCSR0C |= (1<<UCSZ01) | (1<<UCSZ00);

Lies dir im Datenblatt den Abschnitt über "Accessing UBRRH/ UCSRC 
Registers" durch. Das geht so einfach nicht.

Für allererste Test hat es sich bewährt, die default-Einstellungen zu 
benutzen. Lass UCSR0C einfach in Ruhe, und stell deinen PC auf 8bit, 1 
stop bit, no parity.

Oliver

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.