Forum: Mikrocontroller und Digitale Elektronik Zeichen auswerten per UART


von TOM (Gast)


Lesenswert?

HAllo,

ich habe eine Mega128 und habe nun die UART so programmiert, dass diese 
die Empfangenen Zeichen in ein Array speichert.
Wenn 3 Zeichen empfangen sind sollen diese ausgewertet werden.
Jenachdem welche Zeichen empfangen wurden soll der uC etwas tun.
Soweit funktioniert das auch empfangen --> speichern --> prüfen.

Ich möchte nur eine Zeichenfolge 012 senden.
Laut Ascii Tabelle sieht das ja so aus:

Zeichen       Hex Wert       empfangene Werte uC
 0              0x30              0x03
 1              0x31              0x13
 2              0x32              0x23

Wenn ich nur die Werte im Arry vergleiche ist das Ergebnis ja falsch da 
die empfangen Werte mit den zu prüfenden Werte ja nicht übereinstimmen.

Wo liegt mein Denkfehler komme nicht dahinter.

Danke

TOM

von Magnus Müller (Gast)


Lesenswert?

> Zeichen       Hex Wert       empfangene Werte uC
>  0              0x30              0x03
>  1              0x31              0x13
>  2              0x32              0x23
>
> Wenn ich nur die Werte im Arry vergleiche ist das Ergebnis ja falsch da
> die empfangen Werte mit den zu prüfenden Werte ja nicht übereinstimmen.
>
> Wo liegt mein Denkfehler komme nicht dahinter.

Wie kommst du darauf, dass der µC die Werte als 0x03, 0x13 und 0x23 
empfängt?!?

von Chrisi (Gast)


Lesenswert?

Faszinierend... mit was sendest Du die Zeichen? Wie findest Du den 
falschen Wert heraus?

von TOM (Gast)


Lesenswert?

@Magnus

da ich die empfangene Wert mit
1
 Input[counter] = UDR0;
in das Array schreibe und dann den Arrayinhalt mit
1
 PORTC = Input[counter];
auf dem Port anzeigen lasse und dieser zeigt nach dem senden von einer 
'0' den Wert 0x03 an

Gruß

TOM

von TOM (Gast)


Lesenswert?

@Chrisi,

sende mit Realterm

Register Send und dann  Button 'Send ASCII'

Hat mit meinem alter 08C517A immer funktioniert

Gruß

von Magnus Müller (Gast)


Lesenswert?

Versuch doch mal an Port C gezielt ein 0x00 auszugeben
1
PORTC = 0;

Was passiert dann?
...
Und was passiert, wenn du an Port C gezielt ein 0x5A ausgibst?
1
PORTC = 0x5A;

Gruß,
Magnetus

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.