mikrocontroller.net

Forum: Compiler & IDEs UART - Senden


Autor: Kiwi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Moin Leute!
Ich hab da ein kleines Problem beim Senden von Daten mit Hilfe der UART
bei einem ATmega8 - Controller. In diesem ganz einfachen BSP soll in
Anlehnung an das Tutorial einfach die BIN-Zahl 0b00000000 an den PC
gesendet werden. Im Anhang befindet sich das C-Program, indem auf
Tastendruck das Zeichen übersendet werden soll. Die Gesendeten Daten
werden mit HTerm empfangen. Leider erhalte ich immer wieder falsche
Zeichen (statt der binären 0b00000000 immer wieder 0b11111011 bzw.
0b11111010). Trotz langen durchsuchen der Foren und lesen des Tutorials
konnte ich nichts hilfreiches finden.

Über eine schnelle Hilfe würde ich mich freuen!

Was ich schon getan habe:
* int./ext. Clock mit FuseBit setzen/ansteuern
* Baudraten variiren

Autor: Falk Willberg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sieht fast invertiert aus. Wie kommst Du vom Controller zum
seriellen Port des PC?

Autor: Kiwi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit Hilfe eines MAX232 und eines Modem-Kabels, wie es ja auch im
Tutorial beschreiben wird. Tja.... invertiert ist es ja leider nicht,
daran hab ich auch schon gedacht.

Wenn noch jemand ne Idee hat immer her damit.... sitze hier schon fast
den ganzen Tag und zerbreche mir den Kopf. Bin für jede Hilfe und
Anregung dankbar!!!

Autor: pebisoft (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
winavr-c kennt kein biteingabe sondern nur hex.
wenn du dieses eingeben tust "0x00000000" also ein "x" statt ein
"b", meckert der compiler auch nicht und er setzt eine hexzahl.
dieses "b" wertet er auch als hexeingabe.
mfg pebisoft

Autor: Kiwi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meines Wissens nach ist das vom Comiler bzw. im zweifelsfall von der
Version des verwendeten WinAVRs abhängig. Hab aber auch schon
verschiedene Eingabemöglichkeiten ausprobier (binär, dezimal, hex,
ASCII) aber nix führte zum Erfolg.

Mir würde es auch helfen, wenn jemand bestätigen könnte, dass der
Quellcode funktioniert. Somit wüsste ich, dass ich hier nicht mehr auf
Fehlersuche gehen muss.

Autor: Andreas W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probiers mal mit:
UCSRC = (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1);

URSEL muss immer gesetzt sein wenn du in UCSRC schreiben willst. Sonst
schreibst du in UBRRH.

Autor: Kiwi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SUPER SACHE!!!!! Das war es! Vielen Dank!

Ich hatte das zwar im Datenblatt gelesen, ging aber immer davon aus,
dass wenn ich URSEL einmal setze es auch gesetzt bleibt. Und wenn ich
ehrlich bin, so sehe ich den Unterschied der beiden Codefragmente auch
nicht wirklich. Ich dachte immer, die von Andreas benutze schreibweise
wäre nur eine Kurzform von der meinigen. Könnte mich in dieser hinsicht
jemand vielleicht noch etwas mehr beleuchten????

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> URSEL muss immer gesetzt sein wenn du in UCSRC schreiben willst.
Sonst
> schreibst du in UBRRH.

Für die Standardversion "8n1" kann man sich es auch komplett sparen,
UCSRC anzufassen, die Voreinstellung ist just diese.

Autor: Andreas W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei deiner Variante schreibst du ja nacheinander. Du musst aber bei
jedem schreiben in UCSRC auch URSEL setzen.

Gehen würde auch:
  UCSRC |= (1 << UCSZ1) | (1<<URSEL);
  UCSRC |= (1 << UCSZ0) | (1<<URSEL);

Autor: Kiwi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aha! Das muss ich mir dann jetzt mal merken. Danke! Ihr habt mir sehr
gut weitergeholfen.

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.