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 :) . -------------------------------------------------------------------------------