Ports over sbi, cbi to avr5.zig.

wch-ch32v003
Felix (xq) Queißner 3 years ago
parent 284d19814d
commit 1aad7b52f6

@ -42,18 +42,11 @@ pub const gpio = struct {
} }
pub fn setOutput(comptime pin: type) void { pub fn setOutput(comptime pin: type) void {
asm volatile ("sbi %[port], %[pin]" cpu.sbi(regs(pin).dir_addr, pin.pin);
:
: [port] "I" (regs(pin).dir_addr),
[pin] "I" (pin.pin)
);
} }
pub fn setInput(comptime pin: type) void { pub fn setInput(comptime pin: type) void {
asm volatile ("cbi %[port], %[pin]" cpu.cbi(regs(pin).dir_addr, pin.pin);
:
: [port] "I" (regs(pin).dir_addr),
[pin] "I" (pin.pin)
);
} }
pub fn read(comptime pin: type) u1 { pub fn read(comptime pin: type) u1 {
@ -65,25 +58,13 @@ pub const gpio = struct {
pub fn write(comptime pin: type, state: u1) void { pub fn write(comptime pin: type, state: u1) void {
if (state == 1) { if (state == 1) {
asm volatile ("sbi %[port], %[pin]" cpu.sbi(regs(pin).port_addr, pin.pin);
:
: [port] "I" (regs(pin).port_addr),
[pin] "I" (pin.pin)
);
} else { } else {
asm volatile ("cbi %[port], %[pin]" cpu.cbi(regs(pin).port_addr, pin.pin);
:
: [port] "I" (regs(pin).port_addr),
[pin] "I" (pin.pin)
);
} }
} }
pub fn toggle(comptime pin: type) void { pub fn toggle(comptime pin: type) void {
asm volatile ("sbi %[port], %[pin]" cpu.sbi(regs(pin).pin_addr, pin.pin);
:
: [port] "I" (regs(pin).pin_addr),
[pin] "I" (pin.pin)
);
} }
}; };

@ -1,13 +1,29 @@
const std = @import("std"); const std = @import("std");
pub fn sei() void { pub fn sei() callconv(.Inline) void {
asm volatile ("sei"); asm volatile ("sei");
} }
pub fn cli() void { pub fn cli() callconv(.Inline) void {
asm volatile ("cli"); asm volatile ("cli");
} }
pub fn sbi(comptime reg: u5, comptime bit: u3) callconv(.Inline) void {
asm volatile ("sbi %[reg], %[bit]"
:
: [reg] "I" (reg),
[bit] "I" (bit)
);
}
pub fn cbi(comptime reg: u5, comptime bit: u3) callconv(.Inline) void {
asm volatile ("cbi %[reg], %[bit]"
:
: [reg] "I" (reg),
[bit] "I" (bit)
);
}
pub const startup_logic = struct { pub const startup_logic = struct {
comptime { comptime {
asm ( asm (

Loading…
Cancel
Save