Forum: Mikrocontroller und Digitale Elektronik RS 232 und ATMEGA 163 und STK500


von Heiss Michael (Gast)


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

von crazy horse (Gast)


Lesenswert?

gleiche Initialisierung PC/AVR
(Anzahl Datenbits, parität, Anzahl Stopbits)?

von Florian Pfanner (Gast)


Lesenswert?

Das empfangene Zeichen ist im ASCII-Code. Du must es in Dezimal-Wert
umrechnen.

Gruß, Florian

von Heiss Michael (Gast)


Lesenswert?

Mit dem STK 200 und dem 8515 hat es funktioniert (Nur USR.7)
Wie von ASCII Code in Dezimal Wert umwandeln?

Die Einstellungen sind identisch.

von Florian Pfanner (Gast)


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

von Heiss Michael (Gast)


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

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.