mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART Zeichen interpretieren und umwandeln


Autor: Matthias Nagel (mat81927)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

bevor jemand mich hierauf verweist
http://www.mikrocontroller.net/articles/AVR-GCC-Tu...
das habe ich mir durchgelesen.

Ich würde gerne die Zeichen, die mein UART mir auf meinen Rechner 
schickt interpretieren können. Neben mir liegt eine ASCII-Tabelle mit 
der ich leider keine übereinkunft bekomme. Ich schreibe mal ein 
Beispiel.

Ich sende als Dezimalzahl "48"
Im ASCII code wäre das das Zeichen "0"

erhalten tue ich die Dezimalzahl "32"
und kein Zeichen

Ich lese den empfangenen Wert in ein unsigned char array und schicke mir 
diese dann wieder zurück. Ich würde wirklich gerne verstehen, wie das 
abläuft.

Grüsse
Matthias

Autor: Matthias Nagel (mat81927)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So nun habe ich es hingekriegt, allerdings so richtich erklären geht 
nicht.
Habe im HT unter den Einstellungen die 7-Bit Ascii erkennung 
eingestellt. Musste die Baudrate auf 9600 stellen (arbeite auf der STK 
500). In einem andren Tool (HTerm) funktioniert es auch nur im 7-Bit 
Modus + 1 Stopbit.

Würde mir das gerne erklären können

Grüsse

Matthias

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matthias Nagel wrote:

> Ich würde gerne die Zeichen, die mein UART mir auf meinen Rechner
> schickt interpretieren können. Neben mir liegt eine ASCII-Tabelle mit
> der ich leider keine übereinkunft bekomme. Ich schreibe mal ein
> Beispiel.
>
> Ich sende als Dezimalzahl "48"
> Im ASCII code wäre das das Zeichen "0"
>
> erhalten tue ich die Dezimalzahl "32"
> und kein Zeichen

Wenn du in deine ASCII Tabelle schaust, dann siehst du,
dass der Code 32 (oder in Hex: 0x20) für das Leerzeichen steht.

> Würde mir das gerne erklären können
Wenn wir mal davon ausgehen, dass die Hardware funktioniert,
dann kann das 'Problem' eigentlich nur in deinem Programm
stecken. Da du das aber nicht zeigst, kann dir hier keiner sagen,
warum du am PC das Terminalprogramm auf 7 Bit setzen musst.


Autor: Matthias Nagel (mat81927)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Da ich in dem Programm HTerm nur bis 8-Bit Modus gehen kann, könnte es 
vielleicht sein, dass er bei 0 Bit anfängt zu zählen.

Auf jeden Fall ist hier mal mein Code.

Autor: Uwe Nagel (ulegan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bist du dir sicher, dass deine Verwendung von sprintf() richtig ist?
Soweit ich weiss, übergibt man erst den Zeiger auf den String, dann 
einen Formatstring und dann das, was man ausgeben will. Du übergibst den 
Zeiger, den auszugebenden String und dann die Länge!
Gut, wenn du "0" als Formatstring übergibst sollte er das auch senden... 
und Size ignorieren.
Leider fehlt die main(), mit der du testest.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was haben diese Funktionen mit deiner eingangs erwähnten
Aufganestellung zu tun?

Und ja: der sprintf ist wirklich 'nicht koscher'.

Dürfte ich vorschlagen dass du die UART Geschichte mal
mit dem allerinfachsten Testprogram (aus dem Tutorial)
testest, bevor du zu komplizierteren Strukturen übergehst.

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.