Betreibe gerade auf dem STK 500 ein kleines Programm, das nur h01 zum COM1 schickt. Takt =16Mhz Baud= 38400 mit einem Mega 32. Nur das komische ist: wenn ich im Terminalprogramm (habe verschiedene probiert) verbinde, kommen einmal lauter 01, es passt also. Dann trenne ich die verbindung, und wenn ich sie wiederherstelle, erhalte ich andere Werte, tue ich das 5 bis 6 mal so, dann erhalte ich wieder 01sen. Was kann hier falsch sein? Hier der Code .include"m32def.inc" .cseg .org 0 rjmp ini ini: ;; UART initialisieren ldi r16,0b00000000 out Ubrrh,r16 ldi r16,0b00011001 out Ubrrl,r16 ldi r16,0b00011000 out UCSRB,r16 ldi r16,0b10000110 out UCSRc,r16 ldi r16,$01 ;Wert laden trans: ;Übertragen sbis ucsra,udre rjmp trans out udr,r16 rjmp trans
gib mir doch einfach eine Antwort warum das Terminalprogramm immer verschiedene Werte ausgibt, das Tutorial habe ich schon einmal durchgemacht.
Hallo, 0x01 ist ein sogenanntes nichtdruckbares Zeichen in der ASCII-Tabelle, also ein Steuercode. Was ein Terminalprogramm damit macht, hängt von dessen eingesteller Emulation ab, ausführen oder wegwefen z.B. Warum schickst Du 0x01, was erwartest Du für ein Ergebnis im Terminalprogramm? Gruß aus Berlin Michael
@ POI (Gast) >gib mir doch einfach eine Antwort warum das Terminalprogramm immer >verschiedene Werte ausgibt, das Tutorial habe ich schon einmal >durchgemacht. Und warum nimmst du dann nicht den solden Quelltext aus dem Tutorial? Dein Qeulltext ist ziemlich schlecht. Die ganzen Binärwerte, vor allem zur Einstellung des UART kan kein Mensch lesen. Wie Michales bereits sagte sendest du den Wert 01, das ist kein lesbares Steuerzeichen. Um lesbaren Text bzw. Zahlen zu senden, musst du ASCII Codes senden. Siehe Link. > Dann trenne ich die >verbindung, und wenn ich sie wiederherstelle, erhalte ich andere Werte, >tue ich das 5 bis 6 mal so, dann erhalte ich wieder 01sen. Was kann hier >falsch sein? Das Problem ist, dass du ununterbrochen sendest. Damit hat der PC nach dem trennen und wieder anstecken keine Möglichkeit, sich auf den Anfange eines Bytes zu synchronisieren. Also musst du irgendwann mal eine Sendepause machen, die mindestens ein Zeichen lang ist. MFG Falk
Naja ich erwarte, dass er 01 anzeigt, das tut er ja auch wunderbar. Nur nach einmal trennen und wieder verbinden zeigt er mal 50 mal 40 mal A0 mal 0A mal 28 mal 14 an. Und zwar die ganze Zeit. Ich habe ihn einmal nur einmal 01 senden lassen und es hat prima funktioniert auch nach trennen und neu verbinden. In der Schleife hat er aber ein Problem. Es ist doch wirklich mehr als merkwürdig, dass er Zeichen immer wieder wechselt. Fuses gecheckt: all ok, Hardware auch.
Ich glaube das mit der Pause ist eine gute Idee, probiere ich dann mal aus, jetzt mache ich eine Pause nach ca 2 h debuggerei >Die ganzen Binärwerte, vor allem zur Einstellung des UART kan kein >Mensch lesen. Die sind zu 10000% richtig
@ POI (Gast)
>melde mich nach einigen h wieder, Grüße
Ist das eine Drohung? ;-)
MFG
Falk
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.