Commit Graph

367 Commits (f9cd0f21d9e17e6d29d47c75f5466f78d76f2c66)

Author SHA1 Message Date
Ben Blazak bdcd4484be added a layout layer; layout's still kind of a mess...
layout includes function keys, some symbols, and a few things from the
default layer
2012-06-03 23:46:21 -07:00
Ben Blazak 49b8b41442 (merged 'dev': forgot to include something) 2012-06-03 21:26:25 -07:00
Ben Blazak c30106431b (forgot to include <util/delay.h>) 2012-06-03 21:25:50 -07:00
Ben Blazak 176dfcb684 merge with 'dev': bugfix 2012-06-03 21:17:08 -07:00
Ben Blazak d27b162400 bugfix: add delay between teensy col write and pin read
without this we have ghosting problems on the bottommost keys of the
teensy side

thanks to hasu (on geekhack) for the suggestion, and PrinsValium for
confirming erratic behavior with his firmware without these delays.
thanks DOX for making the changes and trying it out.  i'm just adding it
to the repo.
2012-06-03 21:12:15 -07:00
Ben Blazak 71bf4204e9 (small update to a comment) 2012-06-01 21:12:52 -07:00
Ben Blazak 088fcd5136 Merge branch 'dev': rewrites, reorganizations, and fixes
new usb library (my attempt at implementing mouse keys and nkro) in (slow)
progress

a few larger things
- new makefile
- added descriptions to most entries in the references.md file
- moved keyboard layouts to program space
- updated for DOX's PCB! :)  see the last PCB update checkin for details
2012-06-01 01:10:21 -07:00
Ben Blazak 9c86906f7f abstracted led handling -- PCB changes done
- added high-level (logical) led macros, so that the top level firmware
  doens't need to know what numbers leds are (or how many there are)
- left low-level (processor specific) led macros in
  keyboard/.../teensy-2-0.h , where they were
- put non processor|layout specific led macros in keyboard/.../led.h
- put layout specific led macros into keyboard/.../layout/*.h (with
  default empty macro definitions in keyboard/.../layout.h)

also
- cleaned up some typos and such
- moved the debounce time macro to 'keyboard/ergodox.h', since it's
  technically keyboard (keyswitch) specific

aggregate changes for PCB update
- documentation updated to reflect that the columns are now the driving
  pins, and the columns are the read pins.  both are still treated as
  open drain.
- macros for led pins 1 and 2 were swapped
- update functions now cycle through columns->low, read rows
- added a matrix macro to map from how we want the key layouts
  represented, to how things are scanned into the matrix
2012-06-01 01:05:38 -07:00
Ben Blazak 4972c81a96 updated matrix and layout stuff for dox's PCB 2012-05-29 16:53:55 -07:00
Ben Blazak a28b1f1182 updated mcp23018 stuff for dox's PCB 2012-05-26 23:12:01 -07:00
Ben Blazak 1af2423364 updated teensy stuff for dox's PCB 2012-05-26 22:50:33 -07:00
Ben Blazak 50998376c5 (still reading hid stuff; taking a break to update matrix)
dox posted the PCB render the other day.  also, i have the current
flowing the wrong way for the keyswitch diodes to work right now
2012-05-26 20:48:20 -07:00
Ben Blazak 22752fead8 finished section 9 of the usb spec! 2012-05-13 18:06:17 -07:00
Ben Blazak 1acaaaf5ff (intermediate checkin: working on new usb code)
(plus a few small aesthetic things in /src/keyboard.  i changed some
function like macros to lower-case, because someday they might be
implemented as real functions... and there's no real reason to
distinguish between functions and function like macros in the main() and
other higher level code.  at least that's what it seems like to me right
now.)
2012-05-06 18:36:51 -07:00
Ben Blazak 5c2f6e64f4 (made things a bit easier to read) 2012-04-30 14:05:25 -07:00
Ben Blazak 2e4eeb430b made kb-layers use flash memory by default 2012-04-29 18:47:27 -07:00
Ben Blazak 3c968c41f2 (changed some little things in layers) 2012-04-29 00:47:08 -07:00
Ben Blazak 0b423bef70 moved keyboard layout to program space 2012-04-29 00:17:17 -07:00
Ben Blazak 229a2446a7 moved libs around; split some code in layouts 2012-04-28 23:40:00 -07:00
Ben Blazak 4e913361ac abstracted layout access a little 2012-04-28 22:39:23 -07:00
Ben Blazak c90908becd (fixed 'references' a little) 2012-04-28 13:23:51 -07:00
Ben Blazak 69367d25ec added descriptions to most of the 'references' entries 2012-04-28 13:05:40 -07:00
Ben Blazak 1c6d31f012 changing how computed includes are handled 2012-04-28 01:23:51 -07:00
Ben Blazak 5b83e1f630 (small macro fix) 2012-04-28 00:58:31 -07:00
Ben Blazak 2009c160e4 moved the twi library 2012-04-28 00:46:35 -07:00
Ben Blazak 66a5932fa8 moved the key-functions files 2012-04-27 15:39:26 -07:00
Ben Blazak 07d3bbc4f4 (minor doc update) 2012-04-26 13:06:22 -07:00
Ben Blazak 690efc28cb updating docs (a little) 2012-04-26 13:03:51 -07:00
Ben Blazak 15efb43b76 fixed *.md indenting
apparently, sublists need to be indented 4 spaces (1 tab) or more to be
recognized as such (because subsequent lines of a list may be indented
up to 3 spaces).  it's right there on the markdown syntax page, but i
didn't catch it the first time.
2012-04-26 03:44:20 -07:00
Ben Blazak a0f69c9200 minor doc and keymap update 2012-04-26 02:51:14 -07:00
Ben Blazak b6cc6108ae (aesthetic; modified makefile) 2012-04-25 00:14:12 -07:00
Ben Blazak 241e90104a (minor, and a little reorganization) 2012-04-24 23:49:17 -07:00
Ben Blazak b7e5e7b735 refactoring layout stuff
- made short keycode macros for the USB keycodes (under "lib/...")
- refactored "keyboard/.../layout.c", to make way for multiple layouts,
  and to make it easier to read (by using short keycode macros)
  - layout.h has a computed include line now, and the code (and layout
    specific header stuff) is in a subdirectory.  the makefile should
    take care of which layout gets included and compiled
- changed kbfun_press() and kbfun_release() to be able to handle the
  modifier keys (instead of requiring a separate function for the
  modifiers)
- added a makefile variable for which keyboard gets compiled.  even
  though there's only one right now
2012-04-24 23:22:20 -07:00
Ben Blazak acba260663 increased error checks for mcp23018_updat_matrix()
and some aesthetic stuff
2012-04-24 12:17:06 -07:00
Ben Blazak bec0c7244f reorganized src/lib 2012-04-22 12:08:32 -07:00
Ben Blazak 502fa3a79f rewrote makefile (standalone now); removed some unnecessary stuff 2012-04-18 01:29:38 -07:00
Ben Blazak 1cdfae2e14 (mostly aesthetic stuff; removed one dependency from makefile)
- Merge branch 'dev'
2012-04-13 19:06:57 -07:00
Ben Blazak cae0560e04 removed makefile dependency on the unix shell (hopefully) 2012-04-13 19:05:06 -07:00
Ben Blazak 53e620a173 (updated references) 2012-04-12 21:54:46 -07:00
Ben Blazak 6384589e5c (update references) 2012-04-12 19:05:51 -07:00
Ben Blazak 264d5c55bb fixed mcp23018 row placement in _circuit-diagram.svg 2012-04-12 15:56:58 -07:00
Ben Blazak d70b9da592 (mostly aesthetic things that i forgot) 2012-04-11 23:10:37 -07:00
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
Ben Blazak 8e68c2ea07 . 2012-04-11 22:05:59 -07:00
Ben Blazak 8b168bc88e cleaned up :) and ready to merge 2012-04-11 21:05:45 -07:00
Ben Blazak 98033358f4 added ergodox circuit diagram; and a few misc things; time to clean up 2012-04-11 18:52:31 -07:00
Ben Blazak cd6826eeb5 checkin before deleting the debug code; almost ready for first beta!
- simple bug fix in kbfun_press() and kbfun_release()
- no longer check for previous init() in the mcp23018 functions;
  something would happen when i tried to read from it, sometimes, when
  it'd been unplugged or stoped some other way, and it would hang - and
  the only thing that would make it better was running the test_twi_2
  function (a series of writes, with stops after each).  so now
  mcp23018_init() is a series of writes, with stops after each.  it
  doesn't take appreciably longer to run...  maybe it should be looked
  into later though.
- changed the main() loop a little
2012-04-10 18:58:26 -07:00
Ben Blazak 57e82aebcf lots and lots; now writing/debugging keyboard logic
also, mcp23018_init() needs fixing: `twi_stop()` needs to be at the end
of transmission blocks.  i wouldn't think that would be necessary, but
it seems to be the only thing that'll make it work, and it also seems
consistent with the protocol diagram in the datasheet (lol, imagine
that), so i think that's what i'll have to do.  not as though it matters
much i guess, since it's a single master / single slave system anyway, i
was just hoping not to release the bus till i was finished..
2012-04-10 01:44:27 -07:00
Ben Blazak 92c3d541f1 (forgot to add these to git the other day) 2012-04-06 00:21:07 -07:00
Ben Blazak a24a45fce7 wrote teensy update() (need to test); minor mcp23018 update() fix 2012-04-06 00:19:57 -07:00