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

@ -1,13 +1,29 @@
const std = @import("std");
pub fn sei() void {
pub fn sei() callconv(.Inline) void {
asm volatile ("sei");
}
pub fn cli() void {
pub fn cli() callconv(.Inline) void {
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 {
comptime {
asm (

Loading…
Cancel
Save