In case you're still wondering what the hell this is all about - I'm trying to make an ADC-based capsense controller.
In a way this is continuation of the great xwhatsit's work, with some important differences.
Theory of operation:
If you want to make you want to claw your eyes out know more about capacitors, read it there, in all it's Comic Sans glory. There probably other guides, but it's hard to find one that explains energy storage. It even has pictures - but I have something better. Pr0n.
Now, if you press the key in simulator at exactly the right moment, you'll get huge DC offset. To prevent that I'm tying the inputs to the ground when not used. PSoC allows the pin to be analog in and digital out at the same time - but on other devices this can be achieved by connecting 2 pins together, provided the MCU can have the pin configured as "open drain, drives low".
In theory, there's no difference between theory and practice.
You would expect that it would work, wouldn't you? Everything will be nice and smooth, like it is on the XT keyboard (if you cut the row trace and connect oscilloscope to the PCB end of the cut):
Or just implement plain old debouncing. It doesn't seem to be needed though.
Sources are here - bootloader, firmware and configuration utility.
Hardware used is CY8CKIT-059 prototyping kit. Since the kit is $10 - there's no GB for building the controller. It's hard to beat $10 price. If, however, project MF is revived or Ellipse will decide to switch controller to CommonSense - there will be custom hardware, too.
* feature parity with xwhatsit AND MORE.
* also can sense MagValves now - although making it work with magvalves is much harder as there's no ADC and it's back to xwhatsit-style blind threshold setting (and also involves 5mV 50ns pulses, so sensing is _finicky_).