@@ -67,14 +67,14 @@ pub const Pin = struct {
6767 usb_conf0 .DM_PULLDOWN == 0 );
6868 }
6969
70- GPIO .ENABLE_W1TS .write (.{ .ENABLE_W1TS = @as (u17 , 1 ) << self .number , .padding = 0 });
70+ GPIO .ENABLE_W1TS .write (.{ .ENABLE_W1TS = @as (u26 , 1 ) << self .number , .padding = 0 });
7171 }
7272
7373 pub fn reset (self : Pin ) void {
7474 IO_MUX .GPIO [self .number ].write_raw (0x00 );
7575 GPIO .FUNC_OUT_SEL_CFG [self .number ].write_raw (0x00 );
7676 GPIO .PIN [self .number ].write_raw (0x00 );
77- GPIO .ENABLE_W1TC .write (.{ .ENABLE_W1TC = @as (u17 , 1 ) << self .number , .padding = 0 });
77+ GPIO .ENABLE_W1TC .write (.{ .ENABLE_W1TC = @as (u26 , 1 ) << self .number , .padding = 0 });
7878 }
7979
8080 pub fn set_output_enable (self : Pin , enable : bool ) void {
@@ -120,11 +120,12 @@ pub const Pin = struct {
120120 }
121121
122122 pub fn write (self : Pin , level : Level ) void {
123+ // Assert that the pin is set to output enabled
123124 std .debug .assert (GPIO .FUNC_OUT_SEL_CFG [self .number ].read ().OEN_SEL == 1 );
124125
125126 switch (level ) {
126- Level .low = > GPIO .OUT_W1TC .write (.{ .OUT_W1TC = @as (u17 , 1 ) << self .number , . padding = 0 }),
127- Level .high = > GPIO .OUT_W1TS .write (.{ .OUT_W1TS = @as (u17 , 1 ) << self .number , . padding = 0 }),
127+ Level .low = > GPIO .OUT_W1TC .write (.{ .OUT_W1TC = @as (u26 , 1 ) << self .number }),
128+ Level .high = > GPIO .OUT_W1TS .write (.{ .OUT_W1TS = @as (u26 , 1 ) << self .number }),
128129 }
129130 }
130131
@@ -135,7 +136,7 @@ pub const Pin = struct {
135136 }
136137
137138 pub fn read (self : Pin ) Level {
138- std .debug .assert (IO_MUX .GPIO [self .number ].FUN_IE == 1 );
139+ std .debug .assert (IO_MUX .GPIO [self .number ].read (). FUN_IE == 1 );
139140
140141 return @enumFromInt (GPIO .IN .raw >> self .number & 0x01 );
141142 }
@@ -175,9 +176,10 @@ pub const instance = struct {
175176 pub const GPIO18 : Pin = .{ .number = 18 };
176177 pub const GPIO19 : Pin = .{ .number = 19 };
177178 pub const GPIO20 : Pin = .{ .number = 20 };
179+ pub const GPIO21 : Pin = .{ .number = 21 };
178180
179181 pub fn num (instance_number : u5 ) Pin {
180- std .debug .assert (instance_number < 21 );
182+ std .debug .assert (instance_number < 22 );
181183 return .{ .number = instance_number };
182184 }
183185};
0 commit comments