WAITUS/de
(→Remarks) |
|||
(7 intermediate revisions by one user not shown) | |||
Line 1: | Line 1: | ||
− | + | = <span class="f_Header">Action</span> = | |
− | + | Hält die Programmausführung für die angegebene Zeit in Mikrosekunden an. | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
Line 17: | Line 17: | ||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | = <span class="f_Header"> | + | = <span class="f_Header">Anmerkungen</span> = |
<div style="padding: 0px; margin: 0px 0px 0px 4px;"> | <div style="padding: 0px; margin: 0px 0px 0px 4px;"> | ||
{| width="539" cellspacing="0" cellpadding="1" border="1" style="border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;" | {| width="539" cellspacing="0" cellpadding="1" border="1" style="border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;" | ||
|- style="vertical-align: top;" | |- style="vertical-align: top;" | ||
| valign="top" width="15%" style="width: 77px; border: 1px solid rgb(0, 0, 0);" | | | valign="top" width="15%" style="width: 77px; border: 1px solid rgb(0, 0, 0);" | | ||
− | + | uS | |
| valign="top" width="100%" style="width: 453px; border: 1px solid rgb(0, 0, 0);" | | | valign="top" width="100%" style="width: 453px; border: 1px solid rgb(0, 0, 0);" | | ||
− | + | Wartezeit in Mikrosekunden (1-65535). | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | uS muss eine Konstante sein. Keine Variable. | |
− | <span style="font-weight: bold;"> | + | <span style="font-weight: bold;">Ab Version 1.12.x.x kann man auch Variable benutzen.</span> |
|} | |} | ||
Line 45: | Line 45: | ||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | Die minimale Wartezeit wird durch die Taktfrequenz bestimmt. | |
− | + | Zum setzen und Speichern von Registern werden 17 Zyklen benötigt. | |
− | <span style="font-family: Arial;"> | + | <span style="font-family: Arial;"></span> |
+ | 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. | |
− | + | ||
− | + | ||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | 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. | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | 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: | |
| | ||
− | <span style="font-family: 'Courier New';"> | + | <span style="font-family: 'Courier New';">Mit einer Konstanten</span> |
<span style="font-family: 'Courier New';">1us : 2.6 us</span> | <span style="font-family: 'Courier New';">1us : 2.6 us</span> | ||
Line 93: | Line 91: | ||
<span style="font-family: 'Courier New';"> </span> | <span style="font-family: 'Courier New';"> </span> | ||
− | <span style="font-family: 'Courier New';"> | + | <span style="font-family: 'Courier New';">Mit einer Variablen</span> |
<span style="font-family: 'Courier New';">1us : 1.4 us</span> | <span style="font-family: 'Courier New';">1us : 1.4 us</span> | ||
Line 105: | Line 103: | ||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | = <span class="f_Header"> | + | = <span class="f_Header">Siehe auch</span> = |
[[DELAY]] , [[WAIT]] , [[WAITMS]] | [[DELAY]] , [[WAIT]] , [[WAITMS]] | ||
Line 113: | Line 111: | ||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | = <span class="f_Header"> | + | = <span class="f_Header">Beispiel</span> = |
<br/><source lang="bascomavr"> | <br/><source lang="bascomavr"> |
Latest revision as of 01:11, 17 February 2013
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
Beispiel
WAITUS 10 'wait for 10 uS Print "*"
Languages | English • Deutsch |
---|