Compile information about Ergodox EZ for your future self.
- What is this?
- Keyboard with published schematics and firmware
- Teensy USB Development Board
- Atmega32U4
- Separate right and left hands, I2C for communication between them
- Physically connected with a 4-pole stereo cable.
- I think the schematic shows SCL, SDA, and VCC as 1 to 1, but I haven’t verified it yet.
- VCC is 5V
- I2C expanders on both sides
source
Build Guide https://github.com/qmk/qmk_firmware/blob/master/docs/BUILD_GUIDE.md :
$ cd /home/nishio/ergodox/qmk_firmware/keyboards/ergodox
$ make nishio
2C related - keyboards/ergodox/ez/i2cmaster.h - keyboards/ergodox/ez/twimaster.c
schematic
- https://github.com/ErgoDox-EZ/docs/
- The Ergodox EZ board I bought is 2260.
- I opened it up and checked inside.
- To open the inside, remove the sticker on the back.
- I opened it up and checked inside.
- The Ergodox EZ board I bought is 2260.
farm-reading comprehension
- I'm calling `matrix_scan();` all over the place in
- matrix_scan
- https://github.com/qmk/qmk_firmware/blob/master/keyboards/ergodox/ez/matrix.c#L174
- I’m trying to challenge the connection to see if the keyboard on the left side is connected. c
-
init_mcp23018
-
deley’s way of doing things c
-
debug console
- https://github.com/tmk/tmk_keyboard/wiki/FAQ#debug-console
- CDC
- http://www.recursion.jp/prose/avrcdc/driverj.html
- R232C runs on top of USB
- debug console
- Device not found
- If you read the source, hid = rawhid_open_only1(0, 0, 0xFF31, 0x0074); then read.
- Here’s the implementation of this
- If you read the source, hid = rawhid_open_only1(0, 0, 0xFF31, 0x0074); then read.
-
LED Debugging
- ergodox_right_led_1_on();
- ergodox_led_all_off();
- ergodox_led_all_set(LED_BRIGHTNESS_HI);
-
Right side only, half of 1 is attached in normal connection
- 1 disappears when the cable is unplugged.
- Then it doesn’t come back.
- 1 disappears when the cable is unplugged.
-
Start only on the right side, and when the breadboard is inserted, 1 disappears. c
- TRRS
- Grand seems to be right.
- Four buses with branches have been verified to have correct continuity to four
- I put them in TRRS order, green-black-green-black, with stickers on 1 and 2.
- It will not function as an I2C bus with only VCC and GND connected to the LEDs.
- GND seems to be right.
- When VCC is pointed to 3, the bus will not function.
- Returns when pulled out.
- When pointed to 2, it stops functioning and does not come back when unplugged.
- The bus functions when pointed to 1.
- One step forward!
- I’ve kicked it from Raspi and confirmed that the 7 seg is still alive.
- Connected Raspi to left hand keyboard and i2cdetect -y 1 and confirmed I’m at 0x20
- SDA is 2 at this time.
- Wired accordingly and confirmed that i2cdetect finds 0x20 and 0x70
Direct LED operation with registers
- LED 1 ON
- inline void ergodox_right_led_1_on(void) { DDRB |= (1<<5); PORTB |= (1<<5); }
- LED 2
- DDRB |= (1<<6); PORTB |= (1<<6);
- LED 3
- DDRB |= (1<<7); PORTB |= (1<<7);
logic analyzer
-
It’s off by 1 bit.
-
Key map cheat sheet http://qiita.com/ReSTARTR/items/970354940f49c67fb9fd
-
Using Macros with ErgoDox - Qiita
-
Let’s set up 💥🍣emoji key🍣💥 - Qiita
-
I2C
This page is auto-translated from /nishio/Ergodox using DeepL. If you looks something interesting but the auto-translated English is not good enough to understand it, feel free to let me know at @nishio_en. I’m very happy to spread my thought to non-Japanese readers.