Go to file
Ben Blazak 201e38c576 first working firmware! :)
- merge from branch 'dev'

implementation / version notes:
- needs testing still (a lot), but with the little i could do on my
  breadboard it looked stable.  6-KRO looks like it works, and the key
  press/release and modifier press/release functions, and LED indicators
  look like they work.  yay!
- looks like it's scanning at about 167 Hz (as accurately as i could
  measure with a prescaling loop, an LED, and a stopwatch).  most of
  this (almost all of it, actually) is due to i2c.  it has the potential
  to get a little faster (maybe slightly past 200 Hz, if i try), but i'm
  not sure if i will since most keyboards i found speeds for online
  scanned at a little less than 100 Hz - so that should be fast enough.
- also, my method of assigning a keycode, press function, and release
  function to each key on each layer seems like it should be time and
  space consuming; but we have plenty of space (we're only using ~11%
  currently), and plenty of time apparently, since the teensy is running
  at 16MHz, and the time used by the extra function calls pales in
  comparison to the time used by the i2c functions.

other notes:
- see the *.md files for documentation about everything.  i did my best
  to make and keep them accurate with the source, so hopefully nothing
  (too important..) got past me.
- also, there's a nice circuit diagram under
  "src/keyboard/ergodox/_circuit-diagram.svg" :) .  i like it a lot, and
  it's accurate for now, but i'm not sure how maintainable it'll be if
  the pins change.

yay!! :D  i'm so happy i got it working.
2012-04-11 22:35:40 -07:00
doc added ergodox circuit diagram; and a few misc things; time to clean up 2012-04-11 18:52:31 -07:00
src cleaned up :) and ready to merge 2012-04-11 21:05:45 -07:00
.gitignore intermitent checkin; lots of stuff; i2c on hold; kb logic in progress 2012-03-27 03:06:52 -07:00
license.md (no code yet - still researching and setting stuff up) 2012-03-11 18:33:21 -07:00
readme.md . 2012-04-11 22:05:59 -07:00

readme.md

ergodox-firmware: Firmware for the ergoDOX keyboard

This project is definitely in beta, but I'll do my best to keep the 'master' branch working. Please see the source (and especially the accompanying '*.md' files) for documentation.

Notes

(2012-04-11)

As of now, it looks like we have a working 6-KRO keyboard firmware for a Teensy 2.0 with a MCP23018 I/O expander. It's scanning at ~167 Hz, most of which is spent communicating over I²C. This should be fast enough, I think. Slight improvements might be possible (without finding a microprocessor capable of > 400 kHz I²C or using SPI, that is, which I imagine would speed things up a lot - but it'd also be much less convenient). I'll attempt them if I see the need.

Also, layers are implemented, but untested, as no keymaps are written to use them yet. Implementing on-keyboard hardware remapping seems like it'd be very possible too, but I'd need to try it (and learn how to programmatically store stuff in program space) to see if it'd work; and I'm not sure of a good way to do the interface, since different people will likely have different keycap layouts on the ergoDOX.

Getting to N-KRO is a goal, but I honestly have no idea whether it'll be accomplished. Ideally, I'd like a variable-KRO, where the keyboard is 6-KRO till you press the 7th key (so if you're worried about compatibility, just don't press more than 6 keys at a time). From what I've read, it might be possible, but I just finished everything else (so I'm slightly tired), and the USB spec is scary.

Discussions about the project as a whole are going on at the forum page (linked in the title) so if you have any imput (or want to participate in the group buy!), please stop by. :) .

Dependencies (for building from source)


Copyright © 2012 Ben Blazak benblazak.dev@gmail.com
Released under The MIT License (MIT) (see "license.md") Project located at https://github.com/benblazak/ergodox-firmware