Hallo, für Debug-Zwecke, will ich die Werte vom A/D-Wandler MAX186 über den UART vom AVR an den PC übergeben. Soweit geht es auch. Nur wie stelle ich es an, das die Werte nicht fortlaufend hinereinander geschrieben werden, sondern die alten überschrieben werden? So eine Art Seitenrücksprung? Mfg Sascha
Einfach einen Cartridgereturn zum Rechner schicken ( 0d in Hexadezimal bzw. \r als Ersatzdarstellung in C )
Hi, habs damit ja schon probiert: printf("\r"); Ändert sich aber nichts daran, das die Werte fortlaufend sind. Mfg Sascha
Je nach Terminaleinstellungen kann es notwendig sein statt nur einem CR ein CR/LF zu schicken - also 0D 0A Sollte aber am Terminal auch einstellbar sein... Minicom kanns :)
Hi, auch dieses habe ich jetzt ausprobiert. Bringt auch keinen Erfolg. Weder by Hyperterminal oder bei Terminal. Mfg Sascha
Wenn nur CR (0x0d - Carriage Return) gesendet wird, sollte das Terminal zum Zeilenanfang (nicht Seitenanfang!) zurückspringen. Ein LF (0x0a - Line Feed) springt in die nächste Zeile, ohne die horizontale Position zu verändern. Beispiel: Nacheinander werden folgende Zeichen übertragen h a l l o <cr> n a s e Danach sollte auf dem Bildschim "naseo" zu lesen sein und der Cursor auf dem "o" stehen. Beispiel: Nacheinander werden folgende Zeichen übertragen h a l l o <lf> n a s e Danach sollte folgendes auf dem Bildschirm stehen: hallo nase Zum "Debuggen" von derlei Dingen ist ein Terminal hilfreich, das den empfangenen Hexcode darstellen kann; weder Hyperterminal noch das Win3.11-Terminal können das.
hatte auch schon derartige Probleme mit diversen Terminalprogramme. cr heisst eigentlich zum Anfang der Zeile zurückzukehren, die meisten Programme stellen sich aber so "schlau" an, dass sie meinen, dem dummen Benutzer unter die Arme greifen zu müssen, der meint mit cr schon eine neue Zeile :-) Was bis jetzt bei allen Programmen geholfen hat: vor der Ausgabe die entsprechende Anzahl backspaces zu senden (0x08). Wenn deine Anzeige also lautet: 15.654 musst du vor der Ausgabe 6 x 0x08 senden. Ändert sich die Länge des auszugebenden strings, bei der Ausgabe mitzählen (printf gibt auch einen Rückgabewert, wieviele Zeichen ausgegeben wurden), und das beim nächsten Mal mitverarbeiten.
Wenn printf verwendet wird, kann es auch sein, daß der C-Compiler dem Anwender unter die Arme greift und aus einem \n ein \x0d\x0a macht. Ein einzelnes \r sollte allerdings nicht übersetzt werden. Hilfreich ist - wie bereits gesagt - ein anständiges Terminalprogramm, das die empfangenen Hex-Codes anzeigen kann. Wenn ich mich recht irre, konnte das mal ein uraltes ProComm - aus der präkolumbianischen 16-Bit-Windows-Zeit.
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.