nac3embedded: RTIO LED blinking demo

This commit is contained in:
Sebastien Bourdeauducq 2021-09-25 14:17:11 +08:00
parent 7ab762a174
commit dd998c8afc
1 changed files with 36 additions and 1 deletions

View File

@ -54,15 +54,50 @@ class Core:
if now_mu() < min_now: if now_mu() < min_now:
at_mu(min_now) at_mu(min_now)
@kernel
class TTLOut:
channel: int32
target_o: int32
@kernel
def __init__(self, channel: int32):
self.channel = channel
self.target_o = channel << 8
@kernel
def output(self):
pass
@kernel
def set_o(self, o: bool):
rtio_output(self.target_o, 1 if o else 0)
@kernel
def on(self):
self.set_o(True)
@kernel
def off(self):
self.set_o(False)
@kernel
def pulse_mu(self, duration: int64):
self.on()
delay_mu(duration)
self.off()
@kernel @kernel
class Demo: class Demo:
@kernel @kernel
def run(self): def run(self):
core = Core() core = Core()
led = TTLOut(0)
core.reset() core.reset()
rtio_init() while True:
led.pulse_mu(int64(100000000))
delay_mu(int64(100000000))
if __name__ == "__main__": if __name__ == "__main__":