LED blink using hardware counter
Schematic
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.
Explaination
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.