diff options
author | Clyne Sullivan <clyne@bitgloo.com> | 2024-10-06 16:20:14 -0400 |
---|---|---|
committer | Clyne Sullivan <clyne@bitgloo.com> | 2024-10-06 16:20:14 -0400 |
commit | 0491a3f6af9e318b9e3774c34fe4923a67376829 (patch) | |
tree | ccdf581faee3e37c3efb7c0172fa8036665b8c25 | |
parent | f4bf5658970543f26f25816b9123ecfd258bdd42 (diff) |
better tick interface
-rw-r--r-- | src/main.zig | 8 | ||||
-rw-r--r-- | src/timer.zig | 7 |
2 files changed, 8 insertions, 7 deletions
diff --git a/src/main.zig b/src/main.zig index 99cb451..346ca56 100644 --- a/src/main.zig +++ b/src/main.zig @@ -20,12 +20,8 @@ pub fn main() void { gpioc.set_mode(13, .input); while (true) { - //asm volatile("svc 0"); - gpioa.toggle(5); - const next = tick.ticks() + 1000; - while (tick.ticks() < next) { - asm volatile("nop"); - } + asm volatile("svc 0"); + tick.delay(500); } } diff --git a/src/timer.zig b/src/timer.zig index b30cfcf..00fd6ba 100644 --- a/src/timer.zig +++ b/src/timer.zig @@ -33,10 +33,15 @@ const driver = struct { self.lld.initialize(freq); } - pub fn ticks(self: driver) u32 { + pub fn count(self: driver) u32 { _ = self; return @atomicLoad(u32, &ticks_raw, .acquire); } + + pub fn delay(self: driver, ticks: u32) void { + const now = self.count(); + while (self.count() - now < ticks) {} + } }; pub const systick = driver { .lld = @ptrFromInt(0xE000E010) }; |