aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClyne Sullivan <clyne@bitgloo.com>2024-10-06 16:20:14 -0400
committerClyne Sullivan <clyne@bitgloo.com>2024-10-06 16:20:14 -0400
commit0491a3f6af9e318b9e3774c34fe4923a67376829 (patch)
treeccdf581faee3e37c3efb7c0172fa8036665b8c25
parentf4bf5658970543f26f25816b9123ecfd258bdd42 (diff)
better tick interface
-rw-r--r--src/main.zig8
-rw-r--r--src/timer.zig7
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) };