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
gleiche Initialisierung PC/AVR (Anzahl Datenbits, parität, Anzahl Stopbits)?
Das empfangene Zeichen ist im ASCII-Code. Du must es in Dezimal-Wert umrechnen. Gruß, Florian
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.