diff --git a/references.md b/references.md
index 51bf939..de41c53 100644
--- a/references.md
+++ b/references.md
@@ -13,14 +13,18 @@
: image
* [Vcc, Vdd, Vss, etc.]
- (http://encyclobeamia.solarbotics.net/articles/vxx.html)
+ (http://encyclobeamia.solarbotics.net/articles/vxx.html)
+ A neat little discussion of the symbols and where they came from.
* [Very Basic Circuits]
(http://www.seattlerobotics.org/encoder/mar97/basics.html)
- : column by Kevin Ross for Encoder
+ : column by Kevin Ross for Encoder
+ Includes a short thing about pull-up resistors.
* [Powering Light Emitting Diodes(LEDs)]
- (http://wolfstone.halloweenhost.com/Lighting/litlpo_PoweringLEDs.html)
+ (http://wolfstone.halloweenhost.com/Lighting/litlpo_PoweringLEDs.html)
+ Can you use one resistor for multiple parallel LEDs? No. Or, you can, but
+ it's not the best idea.
* can also be reached via
-> [ENTER] ('http://thewolfstone.com/Welcome/Home.html)
@@ -32,20 +36,26 @@
(http://wolfstone.halloweenhost.com/Lighting/litlpo_PoweringLEDs.html)
* [All About Circuits : Reference]
- (http://www.allaboutcircuits.com/vol_5/index.html)
+ (http://www.allaboutcircuits.com/vol_5/index.html)
+ Looks like a great collection of info; didn't get to read much of it.
* [Effects of Varying I2C Pull-Up Resistors]
- (http://dsscircuits.com/articles/effects-of-varying-i2c-pull-up-resistors.html) : article by Wayne Truchsess
+ (http://dsscircuits.com/articles/effects-of-varying-i2c-pull-up-resistors.html) : article by Wayne Truchsess
+ Great discussion on the topic, with oscilloscope graphs. The practical
+ takeaway is that 4.7kΩ is a good value for 100kHz I²C, and 2.2kΩ is good
+ for 400kHz.
## C Stuff
* [comp.lang.c Frequently Asked Questions]
- (http://c-faq.com/index.html)
+ (http://c-faq.com/index.html)
+ Really good information, if they happen to address the question you have.
* [The C Preprocessor]
(http://gcc.gnu.org/onlinedocs/gcc-2.95.3/cpp_1.html#SEC1)
- (on )
+ (on )
+ One of my main references.
* [C Library Reference]
(http://www.cplusplus.com/reference/)
@@ -94,26 +104,37 @@
* [AVR Newbie guide]
(http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=70673)
- by stu_san (on )
+ by stu_san (on )
+ Didn't read much of it, but it looks like a great collection of info.
* [AVR Libc Library Reference]
- (http://www.nongnu.org/avr-libc/user-manual/modules.html)
+ (http://www.nongnu.org/avr-libc/user-manual/modules.html)
+ One of my main references.
* [avr-libc/include/avr/iom32u4.h]
(http://svn.savannah.nongnu.org/viewvc/trunk/avr-libc/include/avr/iom32u4.h?revision=2288&root=avr-libc&view=markup)
- : list of registers and associated bit numbers for ATmega32U4
+ List of registers and associated bit numbers for the ATmega32U4
* [A Brief Tutorial on Programming the AVR without Arduino]
(https://www.mainframe.cx/~ckuethe/avr-c-tutorial/)
- by Chris Kuethe
+ by Chris Kuethe
+ Goes over a bunch of stuff pretty generally. Useful to me because it was
+ talking about exactly what I was trying to do (e.g. program the thing
+ directly instead of messing around with gratuitous libraries)
* [Optimisations of AVR programs using avr-gcc]
- (http://www.tty1.net/blog/2008-04-29-avr-gcc-optimisations_en.html)
+ (http://www.tty1.net/blog/2008-04-29-avr-gcc-optimisations_en.html)
+ About compiling and stuff.
* [Using the EEPROM memory in AVR-GCC]
(http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=38417)
: tutorial by [Dean Camera] (http://fourwalledcubicle.com/AboutMe.php)
- (on )
+ (on )
+ The EEPROM is non-volatile data memory that you can write to if you like. I
+ don't really see the purpose, unless it feels conceptually cleaner to you,
+ because there's only 1024 bytes of it on the Teensy 2.0, while there's 2560
+ bytes of RAM, and 33256 bytes of flahs (program memory), and it seems like
+ it'd be easier to use one of those if you could.
* updated version available as a pdf at
[Four Walled Cubicle : AVR Articles]
@@ -128,22 +149,33 @@
* [Arduino I²C Expansion IO]
(http://www.neufeld.newton.ks.us/electronics/?p=241)
(from [Keith's Electronics Blog]
- (http://www.neufeld.newton.ks.us/electronics/))
+ (http://www.neufeld.newton.ks.us/electronics/))
+ Didn't use this much, but it's nice (if you're using the Arduino 'Wire'
+ library), and it has pictures.
* [Arduino Playground :: Wire Library, Explored]
- (http://arduino.cc/playground/Main/WireLibraryDetailedReference)
+ (http://arduino.cc/playground/Main/WireLibraryDetailedReference)
+ More about the Wire library. If you're not using interrupts, I think you'll
+ be better off looking throught the datasheet and writing your own trivial
+ library in C. It really is trivial, almost all the code is in the datasheet
+ (at least for the ATmega32U4), and it'll make more sense to you that way :) .
### USB
* About Keyboard [Scan Codes]
(http://geekhack.org/showwiki.php?title=Scan+Codes)
- (on )
+ (on )
+ Interesting discussion. For practical purposes, if you're just dealing with
+ USB, you can skip this and go straight to the keyboard usage page in the HID
+ Usage Tables (see below).
* [USB - boot mode, NKRO, compatibility, etc...]
(http://geekhack.org/showthread.php?13162-USB-boot-mode-NKRO-compatibility-etc/page2)
: old thread by [Soarer]
(http://geekhack.org/member.php?4274-Soarer)
- (on )
+ (on )
+ Discussion about getting NKRO to work over USB and still be compatible with
+ various BIOSs.
* [USB 2.0 Specification]
(http://www.usb.org/developers/docs/usb_20_101111.zip)
@@ -164,14 +196,18 @@
### Keyboard Firmware
* zip: [Phantom Firmware from PrinsValium]
- (http://geekhack.org/attachment.php?attachmentid=38982&d=1327895092)
+ (http://geekhack.org/attachment.php?attachmentid=38982&d=1327895092)
+ Pretty basic. Helped me a lot when I was learning how to initialize stuff on
+ the Teensy.
* mentioned in the [Building Phantom Hardware and Firmware Mods]
(http://geekhack.org/showwiki.php?title=Island:26742)
article (on )
* github: [tmk / tmk_keyboard]
- (https://github.com/tmk/tmk_keyboard)
+ (https://github.com/tmk/tmk_keyboard)
+ Firmware by [hasu] (http://geekhack.org/member.php?3412-hasu) on geekhack.
+ Supports NKRO and mouse movements.
* forked by [Pyrolistical / tmk_keyboard]
(https://github.com/Pyrolistical/tmk_keyboard/tree/master/fourway)
@@ -188,7 +224,9 @@
thread on
* github: [humblehacker / keyboard]
- (https://github.com/humblehacker/keyboard)
+ (https://github.com/humblehacker/keyboard)
+ Looks like it has some cool ideas, but I haven't read through it well enough
+ to know what's going on.
* mentioned on [the humblehacker keyboard website]
(http://humblehacker.com/keyboard/)
@@ -202,40 +240,77 @@
### USB Libraries
* [LUFA (2012) (Lightweight USB Framework for AVRs)]
- (http://www.fourwalledcubicle.com/LUFA.php)
+ (http://www.fourwalledcubicle.com/LUFA.php)
+ Very well known USB library for AVRs. And it looks like it be really good
+ too, but the documentation is hard to get into, and the examples don't seem
+ to have enough explanation for me, not having a background in what USB is
+ doing in the first place.
* zip: [PJRC: usb_keyboard]
- (http://pjrc.com/teensy/usb_keyboard.zip)
+ (http://pjrc.com/teensy/usb_keyboard.zip)
+ From the [LUFA Library : Alternative USB AVR Stacks]
+ (http://www.fourwalledcubicle.com/files/LUFA/Doc/110528/html/_page__alternative_stacks.html)
+ page: "Not so much a complete stack as a collection of USB enabled demos,
+ this library is specifically designed for the PJRC Teensy line of USB AVRs,
+ and thus may need to be modified for other USB AVR chips. These minimal code
+ samples shows the inner workings of the USB controller, without all the
+ abstraction present in most other USB AVR stacks."
* mentioned on [the PJRC website]
(http://pjrc.com/teensy/usb_keyboard.html)
+* [V-USB]
+ (http://vusb.wikidot.com/driver-api)
+ From the [LUFA Library : Alternative USB AVR Stacks]
+ (http://www.fourwalledcubicle.com/files/LUFA/Doc/110528/html/_page__alternative_stacks.html)
+ page: "Well regarded and complete USB 1.1 software stack for several AVR
+ models, implementing Low Speed HID. Used in many commercial and
+ non-commercial designs, with user-submitted projects available for viewing on
+ the company's website. Uses C language code mixed with assembly for
+ time-critical sections."
+ Also, it has really good documentation.
+
### TWI Libraries
* github: [TWI library in C]
(https://github.com/arduino/Arduino/tree/master/libraries/Wire/utility)
- : (arduino / Arduino / libraries / Wire / utility)
+ : (arduino / Arduino / libraries / Wire / utility)
+ Well done (as far as I can tell) and complete (includes code for interrupt
+ handling). Meant to be used through the Arduino 'Wire' library interface,
+ but you can use it alone as well. The version on github pulls in a whole
+ bunch of Arduino dependencies though, if you're just going to use the
+ library look for an older version that doesn't (like the version in the
+ Ubuntu 11.10 repos).
* zip: [i2cmaster]
(http://homepage.hispeed.ch/peterfleury/i2cmaster.zip)
(by Peter Fleury, on [his homepage]
- (http://homepage.hispeed.ch/peterfleury/))
+ (http://homepage.hispeed.ch/peterfleury/))
+ Good I2C library. Includes stuff both in assembly and C (though, I didn't
+ look at the assembly code). I still think you're better off writing your
+ own, it's not that hard and you'll understand it better. Also, this library
+ is under the GPL (from what it says on his site; couldn't find a licence in
+ the code).
* forum: [Interfacing MCP23018 io expander via Arduino]
- (http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1282150189)
- : contains a quick MCP23017 library in C++
+ (http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1282150189)
+ Contains a quick MCP23017 library in C++. Didn't end up looking at it too
+ hard.
* github: [maniacbug / Arduino / libraries / MCP23018]
- (https://github.com/maniacbug/Arduino/tree/master/libraries/MCP23018)
- : library in C++
+ (https://github.com/maniacbug/Arduino/tree/master/libraries/MCP23018)
+ Library in C++. Don't think I ended up looking through this one at all.
### Other
* [Soarer's Converter (XT/AT/PS2/Terminal to USB Converter with NKRO)]
- (http://geekhack.org/showwiki.php?title=Island:17458)
+ (http://geekhack.org/showwiki.php?title=Island:17458)
+ No code for the part that talks over USB though. Code only available for the
+ tools that allow you to change the keymap and stuff, I think.
* zip: [PJRC: blinky]
- (http://pjrc.com/teensy/blinky.zip)
+ (http://pjrc.com/teensy/blinky.zip)
+ Little baby example project for the Teensy. Quite nice.
* mentioned on [the PJRC website]
(http://pjrc.com/teensy/gcc.html)
@@ -295,12 +370,22 @@
* [Keyboard Scan Rates]
(http://geekhack.org/showwiki.php?title=Keyboard+scan+rates)
- list (on )
+ list (on )
+ Keyboards seem to typically scan at rates from a little below 100Hz to about
+ 300Hz, with the most common values a little below 100Hz. The [PJRC
+ usb_keyboard] example documentation has a limit of 1000 packets (so 500
+ presses -> releases) per second, but says that even that speed might
+ overwhelm host software, which expects keystrokes to come much more slowly.
+ And, a debounce time of 5ms (which is the spec'ed high value for Cherry MX
+ switches) would give us a max send rate of 200Hz, above which it'd be a
+ little pointless to scan.
### Other Awesome Keyboard Projects
* [My DIY keyboard collection ( or how I became a KB-geek...)]
- (http://deskthority.net/workshop-f7/my-diy-keyboard-collection-or-how-i-became-a-kb-geek-t2534.html)
+ (http://deskthority.net/workshop-f7/my-diy-keyboard-collection-or-how-i-became-a-kb-geek-t2534.html)
+ If I ever decide to do a keyboard completely by myself, I'm going back to
+ this link and starting with this. Looks really well done.
* linked to in [a post]
(http://geekhack.org/showthread.php?22780-Interest-Check-Custom-split-ergo-keyboard&p=582593&viewfull=1#post582593)
@@ -309,11 +394,14 @@
### Documentation and Design Tools
* [Markdown: Syntax]
- (http://daringfireball.net/projects/markdown/syntax)
+ (http://daringfireball.net/projects/markdown/syntax)
+ A necessity if your code is on github :) .
* [KiCAD Tutorial]
(http://teholabs.com/knowledge/kicad.html)
- (on )
+ (on )
+ I like the tool. Didn't need the functionality just for a little circuit
+ diagram though, so I forwent the learning curve and used Inkscape.
* mentioned on the [circuit/block-diagram drawing]
(http://stackoverflow.com/questions/6422603/circuit-block-diagram-drawing)
@@ -321,7 +409,11 @@
* [TikZ and PGF]
(http://www.texample.net/tikz/)
- : a TeX graphics package
+ : a TeX graphics package
+ This is really cool. And I wish i knew more about LaTeX (and all its
+ variations) so that it would have been time effective for me to use it. If I
+ ever need to do automatic diagram generation, I'm going to give it a more
+ serious try.
* mentioned on the [circuit/block-diagram drawing]
(http://stackoverflow.com/questions/6422603/circuit-block-diagram-drawing)
@@ -335,7 +427,10 @@
(http://www.texample.net/tikz/examples/line-junctions/)
* [Inkscape : Connector tool tutorial]
- (http://wiki.inkscape.org/wiki/index.php/UsingTheConnectorTool)
+ (http://wiki.inkscape.org/wiki/index.php/UsingTheConnectorTool)
+ The open source vector graphics tool. Not the _best_ for diagrams (though,
+ see the link; as that tool improves it will hopefully become much better),
+ but it works and I like it :) .
-------------------------------------------------------------------------------