Commit Graph

14066 Commits

Author SHA1 Message Date
Daniel Schaefer
637fce7232 lotus: Enable all effects
Signed-off-by: Daniel Schaefer <dhs@frame.work>
2023-01-31 17:02:46 +08:00
Daniel Schaefer
455ecb6777 lotus: Debug row 5 and 6 on ANSI keyboard
Signed-off-by: Daniel Schaefer <dhs@frame.work>
2023-01-19 22:37:59 +08:00
Daniel Schaefer
9c57fcece9 lotus: Fix keyscanning on gridpad
WORKS!!!

Signed-off-by: Daniel Schaefer <dhs@frame.work>
2023-01-19 17:27:27 +08:00
Daniel Schaefer
759198c65f lotus: Fix factory HID when via is disabled
Signed-off-by: Daniel Schaefer <dhs@frame.work>
2023-01-19 17:25:32 +08:00
Daniel Schaefer
68b622cf8a lotus: Disable mouse mode
It's not a mouse

Signed-off-by: Daniel Schaefer <dhs@frame.work>
2023-01-19 17:24:19 +08:00
Daniel Schaefer
e721465ce2 lotus: Enable internal pull-up on ADC input
Signed-off-by: Daniel Schaefer <dhs@frame.work>
2023-01-19 14:51:04 +08:00
Daniel Schaefer
738be6b515 lotus: DEBUG ADC
Signed-off-by: Daniel Schaefer <dhs@frame.work>
2023-01-19 11:51:58 +08:00
Daniel Schaefer
c471bf4677 lotus: Fix MUX
Needs to be pulled low to enable

Signed-off-by: Daniel Schaefer <dhs@frame.work>
2023-01-19 11:50:39 +08:00
Daniel Schaefer
7d86ccce03 lotus: Fix BOOT_DONE
Must be pulled low when we're done.

Signed-off-by: Daniel Schaefer <dhs@frame.work>
2023-01-19 11:47:48 +08:00
Daniel Schaefer
a1480478f8 fixup! lotus: Clean up serial number code 2023-01-17 13:48:56 +08:00
Daniel Schaefer
924ddf3296 lotus: Clean up serial number code
More close to upstreaming ready.

Signed-off-by: Daniel Schaefer <dhs@frame.work>
2023-01-17 11:29:52 +08:00
Daniel Schaefer
24f6dbc4a9 lotus: Use dummy serial number if flash was erased
Signed-off-by: Daniel Schaefer <dhs@frame.work>
2023-01-16 22:06:28 +08:00
Daniel Schaefer
84e018fecf lotus: Read serial number from flash
Signed-off-by: Daniel Schaefer <dhs@frame.work>
2023-01-16 17:56:52 +08:00
Daniel Schaefer
3f5388f97f Read serial number from flash
Write there with OpenOCD and GDB:

```
(gdb) monitor flash write_bank 0 serial.bin 0x00ff000
Writing 18 bytes starting at 0xff000
wrote 18 bytes from file serial.bin to flash bank 0 at offset 0x000ff000 in 0.206887s (0.085 KiB/s)
```

Signed-off-by: Daniel Schaefer <dhs@frame.work>
2023-01-16 17:01:55 +08:00
Daniel Schaefer
c97f3cd6d8 lotus: Avoid using floats
RP2040 doesn't have hardware floats. Software floats are slow.

Signed-off-by: Daniel Schaefer <dhs@frame.work>
2023-01-13 17:17:24 +08:00
Daniel Schaefer
dc0f2a6afa lotus: Print matrix scan frequency
Signed-off-by: Daniel Schaefer <dhs@frame.work>
2023-01-13 17:10:32 +08:00
Daniel Schaefer
2ce52c5b54 lotus: keypress command just does RGB handling
Signed-off-by: Daniel Schaefer <dhs@frame.work>
2023-01-10 17:58:39 +08:00
Daniel Schaefer
e7061ed797 lotus: Update matrix to use NO_LED
Clearer than magic number.

Signed-off-by: Daniel Schaefer <dhs@frame.work>
2023-01-10 17:53:33 +08:00
Daniel Schaefer
5b4f836e8c lotus: Fix Key Matrix to LED Index
Now the key press based animations work!

Signed-off-by: Daniel Schaefer <dhs@frame.work>
2023-01-10 16:26:09 +08:00
Daniel Schaefer
78e762028f lotus: Remove factory commands that overlap with VIA
Can use qmk_hid for those now, yay!

Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-10 11:29:40 +08:00
Daniel Schaefer
30328f6f57 lotus: Enable RGB effects that react to keypress
Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-10 10:18:35 +08:00
Daniel Schaefer
920b502077 lotus: Reduce sleep before ADC read
5us seems enough sleep. Still works

Also need to measure delay not between each ADC scan but between each
matrix scan! That's what matters to the user.

Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-07 22:49:16 +08:00
Daniel Schaefer
8d392644b0 lotus: Remove pins that we don't use
Now if you grep GP0 through GP29 they'll all only show for the exact
uses we need them for.

Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-07 22:25:27 +08:00
Daniel Schaefer
48deca2b32 lotus: Add host SLEEP# detection
Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-07 22:17:19 +08:00
Daniel Schaefer
50136360e7 lotus: Auto start ADC conversion
Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-07 21:58:51 +08:00
Daniel Schaefer
b192ff0c3e lotus: Fix print_float
Would print 3.09 as 3.9. Need to add leading 0.

Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-07 21:53:35 +08:00
Daniel Schaefer
1413dfa26e lotus: Add some comments
Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-07 21:47:46 +08:00
Daniel Schaefer
e37039c23e lotus: Add two missing columns
Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-07 21:35:35 +08:00
Daniel Schaefer
12c192c323 lotus: Integrate ADC reading into matrix logic
Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-07 21:35:16 +08:00
Daniel Schaefer
72247be69f lotus: Clean up ADC code a bit
Should now work on non-pi and prints:

```
...
Framework Computer Inc:Lotus Keyboard:1: scan
Framework Computer Inc:Lotus Keyboard:1: 5 ms (200 Hz)
Framework Computer Inc:Lotus Keyboard:1: Temperature: 18.71
Framework Computer Inc:Lotus Keyboard:1: ADC Voltage: 0.1
Framework Computer Inc:Lotus Keyboard:1: scan
Framework Computer Inc:Lotus Keyboard:1: 6 ms (166 Hz)
Framework Computer Inc:Lotus Keyboard:1: Temperature: 18.24
Framework Computer Inc:Lotus Keyboard:1: ADC Voltage: 0.1
Framework Computer Inc:Lotus Keyboard:1: scan
Framework Computer Inc:Lotus Keyboard:1: 6 ms (166 Hz)
...
```

Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-07 20:58:38 +08:00
Daniel Schaefer
37aae1748e lotus: Implement quick ADC reading
Has to be started manually:
hidapitester --vidpid 32ac/0012 --usagePage 0xFF60 --usage 0x0061 -v --open -l33 --send-output 0,11,3

Will print:

```
Framework Computer Inc:Lotus Keyboard:1: After handle_samplescan
Framework Computer Inc:Lotus Keyboard:1: prev: 959345
Framework Computer Inc:Lotus Keyboard:1: curr: 959352
Framework Computer Inc:Lotus Keyboard:1: 7 ms
Framework Computer Inc:Lotus Keyboard:1: 142 Hz
Framework Computer Inc:Lotus Keyboard:1: letsgo
Framework Computer Inc:Lotus Keyboard:1: adc_end_callback
Framework Computer Inc:Lotus Keyboard:1: After adcConvert
Framework Computer Inc:Lotus Keyboard:1: Raw ADC samples: 1004, 892, 1003, 892
Framework Computer Inc:Lotus Keyboard:1: Temp: 19.64
Framework Computer Inc:Lotus Keyboard:1: ADC Voltage: 0.80
```

Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-07 19:49:24 +08:00
Daniel Schaefer
e1997affa0 lotus: Fix non-pico build and GPIOs
Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-07 17:01:33 +08:00
Daniel Schaefer
877e2f9ace lotus: Implement ADC on correct pin
Verified with potentiometer knob. Voltage goes from 0.1V to 3.1.

Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-07 16:52:28 +08:00
Daniel Schaefer
4eb191c845 lotus: Add ifdef for pico variant
Pico doesn't expose all the pins so it'll be a bit different.
Just for prototyping.

Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-07 13:34:25 +08:00
Daniel Schaefer
8990a17d32 fixup! lotus: Add RGB factory commands 2023-01-07 13:31:44 +08:00
Daniel Schaefer
229d5eebe2 fixup! lotus: Add RGB factory commands 2023-01-06 18:26:10 +08:00
Daniel Schaefer
e61c85c212 lotus: Add RGB factory commands
Example to enable RGB:

```
hidapitester --vidpid 32ac/0012 --usagePage 0xFF60 --usage 0x0061 \
  --open -l32 --send-output 0,11,4
```

Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-06 18:11:39 +08:00
Daniel Schaefer
aef9c8a91b lotus: Fix RGB LED order
This makes them work with the correct x/y position.

Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-06 18:02:55 +08:00
Daniel Schaefer
dd1de24050 lotus: Update gridpad LED positions
New schematic!

Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-06 17:05:23 +08:00
Daniel Schaefer
f56d8cf742 lotus: Fix RGB
Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-06 15:41:11 +08:00
Daniel Schaefer
02a496cad2 fixup! lotus: Configure I2C 2023-01-06 09:43:48 +08:00
Daniel Schaefer
f0d6021e84 lotus: Enable RGB effects
Same as Keychron Q1. Can adjust.

Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-06 08:30:37 +08:00
Daniel Schaefer
15def1ac4b lotus: RP2040 UART driver isn't ready yet
https://github.com/qmk/qmk_firmware/issues/17744

Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-06 08:29:48 +08:00
Daniel Schaefer
80b4bc533a lotus: Enable MUX on init
Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-05 21:09:18 +08:00
Daniel Schaefer
c7f8acb4ce lotus: Configure I2C
Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-05 21:02:13 +08:00
Daniel Schaefer
f7f339c414 WIP: Dummy serial number
Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-05 16:08:12 +08:00
Daniel Schaefer
3ea4ec2a9c lotus: Update USB PIDs
Different PID for each layout so that VIA can tell them apart.

Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-04 17:30:38 +08:00
Daniel Schaefer
b23e075e19 fixup! Add analog support for RP2040 2023-01-04 15:50:46 +08:00
Daniel Schaefer
116a4af371 lotus: Need to define ADC IRQ priority
Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-04 15:40:57 +08:00
Daniel Schaefer
42db647ce6 lotus: Add ADC reading code
Trigger with:

```
hidapitester --vidpid 32ac/0012 --usagePage 0xFF60 --usage 0x0061 \
  --open -l32 --send-output 0,11,3
```

Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2023-01-04 14:01:45 +08:00