aboutsummaryrefslogtreecommitdiffstats
path: root/source/lang/api/delaymicroseconds.rst
blob: 24a8286f24d97377e7cde6ff0e805e486a238c1b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
.. highlight:: cpp

.. _lang-delaymicroseconds:

delayMicroseconds()
===================

Pauses the program for the amount of time (in microseconds)
specified as parameter. There are a thousand microseconds in a
millisecond, and a million microseconds in a second.

Library Documentation
---------------------

.. doxygenfunction:: delayMicroseconds


Example
-------

The following example configures pin number 8 to work as an output
pin, and sends a train of pulses with a period of roughly 100
microseconds::

    int outPin = 8;

    void setup() {
      pinMode(outPin, OUTPUT);      // sets the digital pin as output
    }

    void loop() {
      digitalWrite(outPin, HIGH);   // sets the pin on
      delayMicroseconds(50);        // pauses for 50 microseconds
      digitalWrite(outPin, LOW);    // sets the pin off
      delayMicroseconds(50);        // pauses for 50 microseconds
    }


Caveats and Known Issues
------------------------

The longest time ``delayMicroseconds()`` can delay is bounded by its
argument type and the STM32 clock rate to be (2^32 - 1) / 12
microseconds, or less than 6 minutes.  For longer pauses, use of
:ref:`lang-delay` is possible.

Arduino Compatibility
---------------------

While we have made every effort we could to ensure that the timing of
delayMicroseconds is as accurate as possible, we cannot guarantee it
will behave as the Arduino implementation down to the microsecond,
especially for smaller values of ``us``.

See Also
--------

-  :ref:`millis <lang-millis>`
-  :ref:`micros <lang-micros>`
-  :ref:`delay <lang-delay>`




.. include:: cc-attribution.txt