qmk_firmware/keyboards/ergodox_ez
Seebs d1feb8744a Don't "unselect" left-hand rows
"unselecting" left-hand rows is a wasted i2c transaction.

On the left-hand side, the ergodox uses a GPIO expander. It
does *not* change "direction" (input/output) of pins, it just
sets pins high or low.

But all the pins are written at once. There's no way to
change just one pin's value; you send a full byte of all eight
row pins. (Not all of them are in use, but that doesn't matter.)
So every pin is either +V or ground. This is in contrast
with the right-hand side, which is using input mode to make pins
be neutral.

So there's no need to "deselect" the rows on the left side
at all. To select row 0, you set the GPIO register for the
rows to 0xFE. The previous code would then set it back to
0xFF, then set it to 0xFD on the next cycle. But we can just
omit the intervening step, and set it to 0xFD next cycle,
and get the same results.

And yes, I tested that the keyboard still works.

On my system, scan rate as reported by DEBUG_SCAN_RATE goes
from 445 or so to 579 or so, thus, from ~2.24ms to ~1.73ms.

Signed-off-by: seebs <seebs@seebs.net>
2017-12-10 00:40:41 -05:00
..
keymaps Updates to drashna keymaps and userspace (#2093) 2017-12-05 21:45:42 -05:00
util Creates a layouts/ folder for keymaps shared between keyboards (#1609) 2017-08-23 22:29:07 -04:00
190hotfix.sh Creates a layouts/ folder for keymaps shared between keyboards (#1609) 2017-08-23 22:29:07 -04:00
config.h Merge pull request #2047 from seebs/seebs/ergodox_brightness 2017-11-27 08:25:24 -05:00
ergodox_ez.c Merge pull request #2047 from seebs/seebs/ergodox_brightness 2017-11-27 08:25:24 -05:00
ergodox_ez.h Make brightness easier to change 2017-11-23 15:37:39 -06:00
i2cmaster.h Creates a layouts/ folder for keymaps shared between keyboards (#1609) 2017-08-23 22:29:07 -04:00
matrix.c Don't "unselect" left-hand rows 2017-12-10 00:40:41 -05:00
readme.md Allow multiple process_record() calls per scan 2017-11-21 00:20:52 -05:00
rules.mk Updates bootloader settings, adds file size check (#2029) 2017-11-27 23:08:21 -05:00
twimaster.c Creates a layouts/ folder for keymaps shared between keyboards (#1609) 2017-08-23 22:29:07 -04:00

ErgoDox EZ

The Ez uses the Teensy Loader.

Linux users need to modify udev rules as described on the Teensy Linux page. Some distributions provide a binary, maybe called teensy-loader-cli.

To flash the firmware:

  • Build the firmware with make keymapname, for example make default

  • This will result in a hex file called ergodox_ez_keymapname.hex, e.g. ergodox_ez_default.hex

  • Start the teensy loader.

  • Load the .hex file into it.

  • Press the Reset button by inserting a paperclip gently into the reset hole in the top right corder.

  • Click the button in the Teensy app to download the firmware.

To flash with ´teensy-loader-cli´:

  • Build the firmware with make keymapname, for example make default

  • Run ´<path/to/>teensy_loader_cli -mmcu=atmega32u4 -w ergodox_ez_.hex´

  • Press the Reset button by inserting a paperclip gently into the reset hole in the top right corder.

Settings

You may want to enable QMK_KEYS_PER_SCAN because the Ergodox has a relatively slow scan rate.