WAITUS/de

From MCS Wiki AVR
< WAITUS
Revision as of 00:11, 17 February 2013 by Admin (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Contents

Action

Hält die Programmausführung für die angegebene Zeit in Mikrosekunden an.

 

 

Syntax

WAITUS uS

 

 

 

Anmerkungen

uS

Wartezeit in Mikrosekunden (1-65535).

 

uS muss eine Konstante sein. Keine Variable.

Ab Version 1.12.x.x kann man auch Variable benutzen.

 

Ein genaues Timing ist mit WAITUS nicht möglich. Für genaue Zeiten sollte ein Timer verwendet werden.

Außerdem können Interrupts die Wartezeit verlängern.


 

Die minimale Wartezeit wird durch die Taktfrequenz bestimmt.

Zum setzen und Speichern von Registern werden 17 Zyklen benötigt.

Wenn als Parameter 1 geschrieben wird dann ist die minimale Wartezeit 21 uS. In diesem Fall ist es sinnvoller NOP zu schreiben wodurch ein Zyklus verbraucht wird.

Bei 4 MHz ist die minimale Wartezeit 5 uS. Ein WAITUS 3 ergibt ebenso 5 uS Wartezeit.

Bei größeren Werten werden die Wartezeiten genauer.

 

Wenn man eine genaue Wartezeit benötigt dann sollte man einen Timer verwenden.

Setzen Sie den Timer auf einen Startwert und pollen Sie bis das Overflow-Flag gesetzt ist. Der Nachteil ist, dass der Timer während dieser Hardware-Verzögerung nicht für andere Aufgaben benutzt werden kann.

 

Die Philosophie von BASCOM ist, dass nur Hardware-Ressourcen verwendet werden wenn es nicht anders geht.

WAITUS wird von einigen Befehlen intern verwendet.  

Die Genauigkeit der Wartezeit hängt von der Taktfrequenz ab. Eine höhere Taktfrequenz ergibt eine bessere Genauigkeit.

Bei einer Taktfrequenz von 1 MHz hat man eine Million Zyklen pro Sekunde. Eine NOP-Anweisung benötigt deshalb 1 Mikrosekunde.

Wenn man Register laden und Unterprogramme aufrufen muss dann benötigt man mehr Zyklen.

 

Bei 8 MHz wurden folgende Zeiten gemessen:

 

Mit einer Konstanten

1us  :   2.6 us

10us :  11.5 us

25us :  26.3 us

 

Mit einer Variablen

1us  :   1.4 us

10us :  10.2 us

25us :  25.0 us

 

 

Siehe auch

DELAY , WAIT , WAITMS

 

 

Beispiel


WAITUS 10 'wait for 10 uS
Print "*"

Languages   English Deutsch  
Personal tools
Namespaces
Variants
Actions
Navigation
In other languages
Language