uart flushing and signed Zahl anzeigen

Gast #1429515
Lesenswert?

Hi Zusammen,

bin jetzt dabei mich in die Welt der Microcontroller einzuarbeiten. Habe 
bis jetzt auch alles soweit.

Aber jetzt ist es doch so weit.

1.Also ich habe ein kleine Programm geschrieben welches mir nur 
Testweise
ein 16-Bit Wert (-65535...65535)senden soll.

Beim druck taste.1 dekrementiert mein Wert
Beim druck taste.2 Inkrementiert mein Wert

Nur merkt ich das mein wert sich zwischen (0...65535) ändert obwohl dass 
ich Es als signed deklariert habe.

Frage:
Wie kann ich auch die negative Zahlen im ASCII gut darstellen?


2. Meine Anzeige im Hterm funktioniert super, nur das ich immer auf den 
selbe stelle die neue Werte schreiben will. Also den alte angezeigt Wert 
muss gewichen werden und der neue angezeigt
dafur habe ich mir diese code gedacht:
1
while(1) 
2
{ 
3
  utoa( wert, s, 10 ); 
4
  Puts( s );
5
  unsigned char dummy;
6
  while ( UCSRA & (1<<RXC) ) dummy = UDR; //flushing the receiver
7
}

Frage:
wie kann ich meine Werte immer auf den selbe stelle schreiben?
das heisst:
anstatt:                  sonst
65535                     65531
65534
65533
65532
65531
....

uart flushing

Danke im voraus
Gruß
Aaroon
#1429523
Lesenswert?

> Also den alte angezeigt Wert
> muss gewichen werden und der neue angezeigt
> dafur habe ich mir diese code gedacht:
> while(1)
> {
>   utoa( wert, s, 10 );
>   Puts( s );
>   unsigned char dummy;
>   while ( UCSRA & (1<<RXC) ) dummy = UDR; //flushing the receiver
> }

Um Text zu positionieren könntest du:
Kein Line-Feed schicken, sondern nur einen Carriage Return. Je nachdem, 
wenn das Terminal richtig eingestellt ist, macht es dann keinen 
Zeilenvorschub, sondern der Cursor wird nur an den Anfang der Zeile 
gestellt.
Du könntest auch die Ausgabe insofern 'rückgängig' machen, indem du mit 
entsprechend vielen Backspace (ASCII Code 0x08) den Cursor um die 
gewünschte Anzahl an Zeichen nach links schiebst.
Du könntest aber auch die VT100 Escape Sequenzen nehmen um den Cursor 
direkt an bestimmte Positionen am Schirm zu schicken. Natürlich nur, 
wenn im HTerm die VT100-Emulation auch eingeschaltet ist.

Aber was auch immer du tust, bedenke dabei immer, dass du einmal 
ausgegebenen Text nur überschreibst. Wenn du einzelne Zeichen nicht 
überschreibst (weil zb der neue Text kürzer ist), dann bleibt vom 
vorhergehenden Text etwas sichtbar.
Gast #1431372
Lesenswert?

>2. Meine Anzeige im Hterm funktioniert super, nur das ich immer auf den
>selbe stelle die neue Werte schreiben will. Also den alte angezeigt Wert
>muss gewichen werden und der neue angezeigt
>dafur habe ich mir diese code gedacht:

einfach:
1
while(1) 
2
{ 
3
  utoa( wert, s, 10 ); 
4
  Puts( s );
5
  USART_Puts("\r");
6
}

und ist gelöst

danke an alle
viele grüsse

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