summaryrefslogtreecommitdiff
path: root/examples/rp2/pio_1hz.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/rp2/pio_1hz.py')
-rw-r--r--examples/rp2/pio_1hz.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/examples/rp2/pio_1hz.py b/examples/rp2/pio_1hz.py
new file mode 100644
index 000000000..c18aa22fc
--- /dev/null
+++ b/examples/rp2/pio_1hz.py
@@ -0,0 +1,35 @@
+# Example using PIO to blink an LED and raise an IRQ at 1Hz.
+
+import time
+from machine import Pin
+import rp2
+
+
+@rp2.asm_pio(set_init=rp2.PIO.OUT_LOW)
+def blink_1hz():
+ # fmt: off
+ # Cycles: 1 + 1 + 6 + 32 * (30 + 1) = 1000
+ irq(rel(0))
+ set(pins, 1)
+ set(x, 31) [5]
+ label("delay_high")
+ nop() [29]
+ jmp(x_dec, "delay_high")
+
+ # Cycles: 1 + 7 + 32 * (30 + 1) = 1000
+ set(pins, 0)
+ set(x, 31) [6]
+ label("delay_low")
+ nop() [29]
+ jmp(x_dec, "delay_low")
+ # fmt: on
+
+
+# Create the StateMachine with the blink_1hz program, outputting on Pin(25).
+sm = rp2.StateMachine(0, blink_1hz, freq=2000, set_base=Pin(25))
+
+# Set the IRQ handler to print the millisecond timestamp.
+sm.irq(lambda p: print(time.ticks_ms()))
+
+# Start the StateMachine.
+sm.active(1)