LED blink using hardware counter#
Code#
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.