RS 232 und ATMEGA 163 und STK500

Gast #47153
Lesenswert?

Zervus

Also ich habe folgendes Problem:Ich will Daten vom PC an den uP senden
und diese dann mit Hilfe der Leds anzeigen lassen
Testeweise mache ich das mit CAvr von CodeWizard. Wenn ich jetzt mit
dem Terminal "0" als Hex Zahl schicke wird auf den Leds 128
(10000000)
statt alles Nullen angezeigt. Der Wert weicht immer um 128 vom dem Wert
ab den ich schicke.
Was mache ich falsch?

Code:
while(1)
{
  if (UCSRA.7==1) //Daten wurden empfangen
  {
     char Temp;
     Temp=getchar();
     PORTB=Temp;
  }
}
Bsp:
Gesendet 0-> angezeigt wird 128
Gesendet 1-> angezeigt wird 129
usw..

Mfg DarkMarine
Gast #47157
Lesenswert?

Das zeichen 0 wird im ASCII-Code mit 00110000 dargestellt. Diese Zahl
must du wieder in den Dezimalen wert umrechnen. Hier ergibt das 48. Ich
verstehe nur nicht warum bei dir 128 herauskommt...

was auch noch denkbar ist, dass getchar() auf irgend ein Register
zugreift.
versuch mal: Temp=UDR;


Sonst weiß ich auch nicht weiter.

Gruß, Florian
Gast #47158
Lesenswert?

Hab die Lösung ;)

Ich habe die Baudrate von PC und uP von 9600 auf 115200 angehoben.
Jetzt funktioniert es.(Ist zwar unlogisch aber was solls)

Das mit dem 0=48 im ASCII Code war mir schon klar, aber bei mir war die
verschiebung ja ein bischen größer.
Naja egal.

Aber Danke für eure Hilfe!

Mfg DarkMarine

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren