www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega162 USART sendet nur 7 Bit


Autor: Sebastian Girstl (sepp123)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Erstmal danke an alle, die jemals ein Problem hatten und das hier lösen 
konnten, hat mir oft sehr weitergeholfen :-).

Für das folgende Problem habe ich allerdings im Internet keine Lösung 
gefunden:

Wenn ich mit dem Windows Hyperterminal zu meinem Atmel verbinde klappt 
alles, d.h. ich lass vom Atmel in einer Endlosschleife 'A' senden und es 
wird alles korrekt empfangen.

Mit anderen Terminalprogrammen empfange ich allerdings immer meine 
gesendete Zahl + 128. Ab 128 empfange ich alles korrekt. Schalte ich auf 
7 Datenbits klappt auch alles korrekt.

Habe mir das ganze mal am Oszi angeschaut und bemerkt, dass immer nur 7 
Datenbits gesendet werden. Als 8. Datenbit erkennt das Terminal Programm 
dann einen 0-Pegel, d.h. logische 1, entspricht 128. Das Windows Hyper 
Terminal schaltet anscheinend automatisch auf 7 Datenbits, das wäre 
zumindest meine Erklärung für das Verhalten.

Beispiel:
Ich sende 51 (0011 0011)
Zu erwarten:
-__--__--__________
S01234567..........

Auf meinem Oszi:
-__--__-___________
S0123456...........

Hab auch schon probiert am Atmega 9 Datenbits einzustellen, aber nichts 
ändert sich. Meine Baudraten stimmen (am Oszi nachgemessen). Ich benutze 
einen 3,6864MHz Quarz, funktioniert auch (ebenfalls per CKOUT am Oszi 
nachgemessen).

Hier meine UART initialisierung:
  UBRR1H = (uint8_t)(baud>>8);
  UBRR1L = (uint8_t)baud & 0xff;
  UCSR1A = (1 << U2X1);
  UCSR1C = (1 << URSEL1) | (3 << UCSZ01);
  UCSR1B = (1 << RXEN1) | (1 << RXCIE1) | (1 << TXEN1);

baud = 47 (9600 baud)

Mit anderen Baudraten funktioniert es ebenfalls nicht.

Ich hoffe Ihr könnt mir helfen, sonst dreh ich bald durch :)

Gruß

Sebastian

Autor: Jörg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> UCSR1C = (1 << URSEL1) | (3 << UCSZ01);
Sieht aus wie ein Zahlendreher...
Probier mal :
UCSR1C = (1 << URSEL1) | (3 << UCSZ10);
;)

hth. Jörg

Autor: Sebastian Girstl (sepp123)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du wüsstest, wie viele Stunden mir dieser s..... Dreher gekostet 
hat :)

Funktioniert, danke!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.