PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Terminalausgabe tunen



niemalsaufgeben
24.12.2005, 14:48
Hallo Miteinand

Ich messe mit meinem ATMEGA eine Temperatur, dies geschieht so schnell er laufen kann, da er auch entsprechend schnell reagieren soll. Nicht ganz so schnell kann ich den Bildscirm ablesen.
WIe kann ich es realisieren dass mein Wert entweder immer an der selben Stelle auf dem Terminal aktualisiert wird oder nur alle z.B. 2 Sekunden neu geschriben wird?
Also entweder den Zeilenvorschub ausschalten oder über Timer eben. Mit dem Timer hab ich leider noch garnicht gearbeitet, außer WAITMS .. wenn man das dazuzählen kann. Wenn da jemand ein paar Zeilen COde für mich hätte....
Wäre echt klasse...

Weihnachtliche Grüße niemalsaufgeben

Torsten_G
24.12.2005, 14:58
Du kannst ja auch die Wertausgabe davon abhängig machen, ob sich der Wert verändert hat, z. B. so:

If Messwert <> Messwert_old then
Messwert_old = Messwert
Print Messwert
end if

Ansonsten bleibt wirklich nur ein timer-gesteuerter Interrupt.
Wie schnell der Timer durchläuft, ist abhängig von Taktfrequenz, Prescaler und Preset-Wert, dazu gibt´s hier ein Berechnungstool, den Link weiß ich jetzt grade nicht... :-k

Die Programmierung ist aber eigentlich recht simpel, in der Bascom-Hilfe findest Du alle notwendigen Erklärungen.

In etwa so geht das, ohne Gewähr, ist nur so runtergetippt:


Presetwert=(???)

Config Timer1 = Timer , Prescale = (???)
On Timer1 Wert_drucken
Enable Interrupts
Timer1=Preset_Wert
Enable Timer1

Do
'Hier steht Dein Hauptprogramm
loop

Wert_drucken:
Timer1=Presetwert
Print Messwert
return

Die mit (???) zugewiesenen Werte müsstest Du gemäß dem Berechnungstool mit Leben füllen.

Bei jedem Overflow von Timer1 wird dann die Subroutine Wert_drucken ausgeführt.

Frohe Weihnachten und viele Grüße

Torsten

niemalsaufgeben
24.12.2005, 16:34
Oh ja. Das sieht gut aus. Es muss die Timervariante werden, da der Wert sich eigentlich ständig ändert, und auch noch zum Teil sehr schnell.
Ich suche mal ein wenig nach der Berechnung.

Danke

Torsten_G
24.12.2005, 19:13
Hab´s gefunden, klickst Du hier:

https://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=169

Wahrscheinlich wirst Du bei einem 2-sekunden-Takt einen 16-Bit-Timer nehmen müssen, oder du erzeugst Dir einen 10ms-Impuls und zählst den bis 200 hoch...

Grüße

Torsten

PicNick
25.12.2005, 12:23
WIe kann ich es realisieren dass mein Wert entweder immer an der selben Stelle auf dem Terminal aktualisiert wird oder nur alle z.B. 2 Sekunden neu geschriben wird?

Schau dich da mal um bei "ANSI"
https://www.roboternetz.de/wissen/index.php/Terminals