Forum: Mikrocontroller und Digitale Elektronik Serielle Verbindung zeigt nur die Hälfte an


von dr.prof.schlau (Gast)


Lesenswert?

Hallo,
meine serielle Schnittstelle zeigt mir nur das untere Nibble an.
BAUD-Rate, Stoppbits, etc und Kommunikation ist alles OK, aber:
Im Programmauszug sieht man, wie ich den Wert in die Variable 
'send_this' einlese und dann der ser. Schnittstelle übergebe.
Im AVR-Studiosimulator wird in der USART-UDR genau dieser Wert (0x35) 
angezeigt. Lese ich den Wert über ein Terminalprogramm im PC aus, wird 
mir nur das untere Nibble (in dem Fall nur die 5) ausgegeben.
Was mache ich falsch?
Gruß
Michael
1
...  
2
    ldi     send_this, 0x35
3
    rcall   serout                               
4
    rjmp    loop
5
6
serout:
7
    sbis    UCSRA,UDRE                  ; Warten bis UDR für das nächste
8
                                        ; Byte bereit ist
9
    rjmp    serout
10
    out     UDR, send_this
11
    ret                                 ; zurück zum Hauptprogramm

von Karl H. (kbuchegg)


Lesenswert?

Dein Terminal zeigt keine Werte an, sondern Zeichen. Jedes Zeichen hat 
einen Code, den ASCII Code.

Und zufällig ist der ASCII Code von '5' nun mal 0x35.

Wenn du am Terminal 35 dort stehen haben willst, dann must du 2 Zeichen 
senden. Eines für die '3' und eines für die '5'.

von istdochwurst (Gast)


Lesenswert?

dr.prof.schlau schrieb:
> Was mache ich falsch?

Du verwechselt was, typischer Anfängerfehler.

0x35 ist der ASCII-Code für das Zeichen 5, genau wie 0x41 für das große 
A steht. Wenn du alos 0x35 an den PC sendest zeigt dir dein 
Terminalprogramm eine 5 an.

2 Möglichkeiten:
- Ein Terminalprogramm nutzen was die empfangenen Rohdaten anzeigt (also 
0x35 bzw. 53);
- Die Zahl in ASCII-Zeichen zerlegen: Statt 0x35 zu senden sendest du 
den ASCII-Code von 0, dann den von x, den von 3 und den von 5.

Übrigens: In der Informatikwelt steht die Schreibweise 'Zeichen' für 
dessen ASCI-Code, 'A' ist also 65 und '0' 48.

von dr.prof.schlau (Gast)


Lesenswert?

Hallo Karl-Heinz,

Ohh man, manchmal steht man aber auch so etwas auf dem Schlauch...
So passt das natürlich. Besten Dank!
Gruß
Michael

von istdochwurst (Gast)


Lesenswert?

Ach Mann, jetzt war dieser Moderator schon wieder schneller. :-( ;-)

von Nephtamuk (Gast)


Lesenswert?

>Und zufällig ist der ASCII Code von '5' nun mal 0x35.
Nun, ob das so ein Zufall ist? :-)

von dr.prof.schlau (Gast)


Lesenswert?

Hallo istdochwurst,

macht ja nix. Das zeigt wieder, wie rasant dieses Forum ist. Respekt!

von istdochwurst (Gast)


Lesenswert?

dr.prof.schlau schrieb:
> Hallo istdochwurst,
>
> macht ja nix.
War ja auch nicht ganz ernst gemeint...

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.