LED blink using hardware counter
================================

.. image:: images/led_pocket_beagle.png
   :width: 598
   :align: center
   :height: 400
   :alt: LED blink using hardware counter

Code
----

.. code:: python

   while : true {
       start_counter();
       while : read_counter() < 200000000 {
           digital_write(P1_31, true);
       }
       stop_counter();

       start_counter();
       while : read_counter() < 200000000 {
           digital_write(P1_31, false);
       }
       stop_counter();
   }

-  Following code works on PocketBeagle, to use on other boards, please
   change the pins accordingly.

Explanation
------------

This code runs a never ending while loop, since it is ``while : true``.
Inside ``while`` it starts the counter, then in a nested while loop,
which runs as long as ``read_counter`` returns values less than
200000000, so for 200000000 cycles, HIGH is written to header pin P1_31,
and after the while loop ends, the counter is stopped.

Similarly counter is started again, which runs as long as
``read_counter`` returns a value less than 200000000, so for 200000000
cycles, LOW is written to header pin P1_31, and after the while loop
ends, the counter is stopped.

This process goes on endlessly as it is inside a never ending while
loop. Here, we check if ``read_counter`` is less than 200000000, as
counter takes exactly 1 second to count this much cycles, so basically
the LED is turned on for 1 second, and then turned off for 1 second.
Thus if a LED is connected to the pin, we get a endlessly blinking LED.