Author Topic: "Open Source" Generic keyboard controller.  (Read 82465 times)

0 Members and 1 Guest are viewing this topic.

Offline msiegel

  • Posts: 1230
"Open Source" Generic keyboard controller.
« Reply #50 on: Sat, 03 October 2009, 01:08:51 »
Geekey?

Filco Zero (Fukka) AEKII sliders and keycaps * Filco Tenkeyless MX brown * IBM F/AT parts: modding
Model F Mod Log * Open Source Generic keyboard controller

Offline wellington1869

  • Posts: 2885
"Open Source" Generic keyboard controller.
« Reply #51 on: Sat, 03 October 2009, 01:10:05 »
Quote from: msiegel;122515
Geekey?


i like it ;)

"Blah blah blah grade school blah blah blah IBM PS/2s blah blah blah I like Model Ms." -- Kishy

using: ms 7000/Das 3

Offline lowpoly

  • Posts: 1749
"Open Source" Generic keyboard controller.
« Reply #52 on: Sat, 03 October 2009, 04:47:17 »
MOAC - Mother Of All Controllers

LOL, not seriously.

Miniguru thread at GH // The Apple M0110 Today

Offline abio

  • Posts: 9
"Open Source" Generic keyboard controller.
« Reply #53 on: Sat, 03 October 2009, 14:06:37 »
Quote from: msiegel;122515
Geekey?


We have a winner, gentlemen.

Offline Xuan

  • Posts: 189
"Open Source" Generic keyboard controller.
« Reply #54 on: Sat, 03 October 2009, 16:47:34 »
I've been wanting to participate in a project like this, but I hadn't the time to propose it.
So I'd like to contribute here.

My name proposal; Jack (just another custom keyboard).

Offline msiegel

  • Posts: 1230
"Open Source" Generic keyboard controller.
« Reply #55 on: Sat, 03 October 2009, 16:51:34 »
welcome Xuan :)

what happened to your Lexmark?

Filco Zero (Fukka) AEKII sliders and keycaps * Filco Tenkeyless MX brown * IBM F/AT parts: modding
Model F Mod Log * Open Source Generic keyboard controller

Offline Xuan

  • Posts: 189
"Open Source" Generic keyboard controller.
« Reply #56 on: Sat, 03 October 2009, 22:03:08 »
Someone spill don't know what on it. The channels where not sufficient to stop the liquid to get into the membrane. I still have to get the tool to disassemble and clean it.
For now I'm happy with the older M.

Thanks for asking ;)

Offline JBert

  • Posts: 764
"Open Source" Generic keyboard controller.
« Reply #57 on: Sun, 04 October 2009, 08:38:34 »
Quote from: talis;122514
Just need a name, and I can set up a site for the project.
I had "Rubicon" in mind.

Quote from: msiegel;122515
Geekey?
Oh dear, that sounds interesting as well.
IBM Model F XT + Soarer's USB Converter || Cherry G80-3000/Clears

The storage list:
IBM Model F AT || Cherry G80-3000/Blues || Compaq MX11800 (Cherry brown, bizarre layout) || IBM KB-8923 (model M-style RD) || G81-3010 Hxx || BTC 5100C || G81-3000 Sxx || Atari keyboard (?)


Currently ignored by: nobody?

Disclaimer: we don\'t help you save money on [strike]keyboards[/strike] hardware, rather we make you feel less bad about your expense.
[/SIZE]

Offline Shawn Stanford

  • Posts: 368
"Open Source" Generic keyboard controller.
« Reply #58 on: Sun, 04 October 2009, 08:52:53 »
Rosetta?
The Brat Prince of COBOL

Offline msiegel

  • Posts: 1230
"Open Source" Generic keyboard controller.
« Reply #59 on: Mon, 05 October 2009, 21:33:27 »
The Teensy miniature AVR development board is now available through Adafruit for $20.



http://www.adafruit.com/index.php?main_page=product_info&cPath=16&products_id=199

"[...] a complete USB-based microcontoller development system. Only a standard Mini-B USB cable (sold separately) is needed to connect to a PC or Macintosh"
« Last Edit: Mon, 05 October 2009, 21:37:45 by msiegel »

Filco Zero (Fukka) AEKII sliders and keycaps * Filco Tenkeyless MX brown * IBM F/AT parts: modding
Model F Mod Log * Open Source Generic keyboard controller

Offline Mnemonix

  • Posts: 163
"Open Source" Generic keyboard controller.
« Reply #60 on: Mon, 05 October 2009, 23:17:17 »
The source code for my keyboard controller firmware is available now:
http://github.com/rhomann/kbupgrade.

I also tried to upload a tarball to Github, but it didn't work for some reason. Therefore, you'll need to have Autoconf and Automake installed on your system to build the firmware.

There are still some things to do--for instance, it is not easy to select alternative key maps right now (but it is possible); only avr-gcc is supported for building the firmware images; and a bit more documentation would also be nice to have...
I will keep on working on this one whenever I can find some spare time, so the rough edges will hopefully disappear in the future.
If you would like to contribute anything to this project, then you are, of course, very welcome to do so! Any suggestions are welcome, too.

Also, if the general plan is to make another, more generic keyboard controller, then this one could still serve as a start. All code is GPL, so take (and give back) whatever you want! :)

PS: I am typing this on my freshly modified, still open M4-1 on USB. :)  Messy stripboard, LEDs not attached yet, but works great otherwise.


Offline msiegel

  • Posts: 1230
"Open Source" Generic keyboard controller.
« Reply #61 on: Mon, 05 October 2009, 23:23:08 »
Quote from: Mnemonix;123328
The source code for my keyboard controller firmware is available now:

If you would like to contribute anything to this project, then you are, of course, very welcome to do so!


thank you, and congratulations! what a cute little keyboard :D :D

Filco Zero (Fukka) AEKII sliders and keycaps * Filco Tenkeyless MX brown * IBM F/AT parts: modding
Model F Mod Log * Open Source Generic keyboard controller

Offline wellington1869

  • Posts: 2885
"Open Source" Generic keyboard controller.
« Reply #62 on: Tue, 06 October 2009, 00:44:12 »
Quote from: msiegel;123299
The Teensy miniature AVR development board is now available through Adafruit for $20.

Show Image


http://www.adafruit.com/index.php?main_page=product_info&cPath=16&products_id=199

"[...] a complete USB-based microcontoller development system. Only a standard Mini-B USB cable (sold separately) is needed to connect to a PC or Macintosh"


if i were retired i would get this in a heartbeat and then spend three months getting it to control my xmas lighting. It looks like such a fun and useful thing to have in the house, and so cheap too.

"Blah blah blah grade school blah blah blah IBM PS/2s blah blah blah I like Model Ms." -- Kishy

using: ms 7000/Das 3

Offline JBert

  • Posts: 764
"Open Source" Generic keyboard controller.
« Reply #63 on: Tue, 06 October 2009, 01:50:05 »
Quote from: msiegel;123299
The Teensy miniature AVR development board is now available through Adafruit for $20.

http://adafruit.com/images/medium/teensyparts_MED.jpg

http://www.adafruit.com/index.php?main_page=product_info&cPath=16&products_id=199

"[...] a complete USB-based microcontoller development system. Only a standard Mini-B USB cable (sold separately) is needed to connect to a PC or Macintosh"
Too bad the Teensy++ isn't available from there... But the Teensy is at least a start.
IBM Model F XT + Soarer's USB Converter || Cherry G80-3000/Clears

The storage list:
IBM Model F AT || Cherry G80-3000/Blues || Compaq MX11800 (Cherry brown, bizarre layout) || IBM KB-8923 (model M-style RD) || G81-3010 Hxx || BTC 5100C || G81-3000 Sxx || Atari keyboard (?)


Currently ignored by: nobody?

Disclaimer: we don\'t help you save money on [strike]keyboards[/strike] hardware, rather we make you feel less bad about your expense.
[/SIZE]

Offline Mnemonix

  • Posts: 163
"Open Source" Generic keyboard controller.
« Reply #64 on: Tue, 06 October 2009, 06:45:38 »
Quote from: msiegel;123299
The Teensy miniature AVR development board is now available through Adafruit for $20.

Hey, these are sweet! More expensive than doing it yourself, but definitely worth them given the work that you can save. Only I would prefer a full-size B-type USB connecter on a keyboard because of mechanical stability, but maybe that's just me.

From what I can see, an initial port of my code to Teensy would be trivial to do as it is an ATMEGA32 with USB--or at least I assume that the ATMEGA32U4 is not much different from a ATMEGA32...
For a full port, the glue code for USB would need to be rewritten to replace V-USB by native USB support. The Teensy does, however, offer only 25 I/O pins. That's enough, e.g., for a 16x8 keyboard matrix, but add LEDs and config jumpers, and you are running out of I/O pins. On the other hand, shift registers could be used to reclaim some the the pins.

Does anyone know if the AT90USB646 as used on the Teensy++ is similar to the ATMEGA controllers? Or is it very different?

Offline JBert

  • Posts: 764
"Open Source" Generic keyboard controller.
« Reply #65 on: Tue, 06 October 2009, 07:28:47 »
Quote from: Mnemonix;123378
Hey, these are sweet! More expensive than doing it yourself, but definitely worth them given the work that you can save. Only I would prefer a full-size B-type USB connecter on a keyboard because of mechanical stability, but maybe that's just me.

From what I can see, an initial port of my code to Teensy would be trivial to do as it is an ATMEGA32 with USB--or at least I assume that the ATMEGA32U4 is not much different from a ATMEGA32...
For a full port, the glue code for USB would need to be rewritten to replace V-USB by native USB support. The Teensy does, however, offer only 25 I/O pins. That's enough, e.g., for a 16x8 keyboard matrix, but add LEDs and config jumpers, and you are running out of I/O pins. On the other hand, shift registers could be used to reclaim some the the pins.

Does anyone know if the AT90USB646 as used on the Teensy++ is similar to the ATMEGA controllers? Or is it very different?
The ATmega32U4 indeed runs Atmel's own USB stack and should have hardware support for USB. You could still use V-USB if you wanted do (although it would be a waste of the chip and even pointless on the Teensy). Another interesting thing is that this chip readily handles the voltages needed for USB, whereas general-purpose AVR chips need external circuitry.

To answer your question about differences in the Teensy and Teensy++: both the AT90USB646 and the ATmega32U4 are AVR mcu's with USB support. They should only differ in the amount of RAM, Flash memory and EEPROM. Heck, the same binary code may even be installed on both of them, given the register locations remain the same.
IBM Model F XT + Soarer's USB Converter || Cherry G80-3000/Clears

The storage list:
IBM Model F AT || Cherry G80-3000/Blues || Compaq MX11800 (Cherry brown, bizarre layout) || IBM KB-8923 (model M-style RD) || G81-3010 Hxx || BTC 5100C || G81-3000 Sxx || Atari keyboard (?)


Currently ignored by: nobody?

Disclaimer: we don\'t help you save money on [strike]keyboards[/strike] hardware, rather we make you feel less bad about your expense.
[/SIZE]

Offline lowpoly

  • Posts: 1749
"Open Source" Generic keyboard controller.
« Reply #66 on: Tue, 06 October 2009, 08:17:24 »
If a chip provides built-in usb support: will it be possibe to run a ps/2 protocol over the usb lines? It would be great if ps/2 support could be added for passive adapters.

As for the project name: "HIDMAN" ;-)

I like Geekey too. Talis should get the .org domain. It's fun thinking of names and playing with acronyms though. I'd like something like MOCCA, COFFEE or COCOA but couldn't find a clever acronym explanation yet.
« Last Edit: Tue, 06 October 2009, 08:21:35 by lowpoly »

Miniguru thread at GH // The Apple M0110 Today

Offline JBert

  • Posts: 764
"Open Source" Generic keyboard controller.
« Reply #67 on: Tue, 06 October 2009, 08:30:56 »
Good question. It seems that some of Atmel's microcontrollers support this, e.g. the AT90USB82 or AT90USB162 controllers. The Teensy doesn't use one of them though...

You could mod the Teensy board to have an extra port on the keyboard side (like IBM's SDL plug) which still means you'd have to make your own PS/2 implementation.
IBM Model F XT + Soarer's USB Converter || Cherry G80-3000/Clears

The storage list:
IBM Model F AT || Cherry G80-3000/Blues || Compaq MX11800 (Cherry brown, bizarre layout) || IBM KB-8923 (model M-style RD) || G81-3010 Hxx || BTC 5100C || G81-3000 Sxx || Atari keyboard (?)


Currently ignored by: nobody?

Disclaimer: we don\'t help you save money on [strike]keyboards[/strike] hardware, rather we make you feel less bad about your expense.
[/SIZE]

Offline talis

  • Thread Starter
  • Posts: 195
"Open Source" Generic keyboard controller.
« Reply #68 on: Tue, 06 October 2009, 10:02:57 »
Quote from: lowpoly;123389
If a chip provides built-in usb support: will it be possibe to run a ps/2 protocol over the usb lines? It would be great if ps/2 support could be added for passive adapters.

The Cypress chips seem to have these capabilities out of the box.  Tho I'm not sure they are the best overall choice.

I think rather then trying to shoehorn a dev board into the project, its best to just build from the ground up.  Again the idea is to choose a family that will have mass overkill on the high end, but a pin compatible smaller/low cost version that makes it possible to commercialize.

Quote
You could mod the Teensy board to have an extra port on the keyboard side (like IBM's SDL plug) which still means you'd have to make your own PS/2 implementation.

A PS/2 implementation would be fairly trivial, as you can easily just bit bang if needed (there's not really anything special about it).

Offline msiegel

  • Posts: 1230
"Open Source" Generic keyboard controller.
« Reply #69 on: Tue, 06 October 2009, 12:22:22 »
Quote from: talis;123400
I think rather then trying to shoehorn a dev board into the project, its best to just build from the ground up.


well, as long as there's still a cheap dev board :)

Filco Zero (Fukka) AEKII sliders and keycaps * Filco Tenkeyless MX brown * IBM F/AT parts: modding
Model F Mod Log * Open Source Generic keyboard controller

Offline Mnemonix

  • Posts: 163
"Open Source" Generic keyboard controller.
« Reply #70 on: Tue, 06 October 2009, 14:59:06 »
Quote from: JBert;123382
You could still use V-USB if you wanted do (although it would be a waste of the chip and even pointless on the Teensy).


Exactly. V-USB would be quite useless on that platform, which is a good thing.

Quote from: talis;123400
I think rather then trying to shoehorn a dev board into the project, its best to just build from the ground up.


OK. But wouldn't the final controller be an amalgamation of some devboard + connectors + maybe a few extra components anyway? The final PCB should, of course, not look like that, but be a streamlined, compact product. For a quick start and to see what's needed, however, a cheap devboard like Teensy(++) seems very appealing to me. OTOH, I also don't have a lot of experience in hardware development... :wink:

Independent of the concrete platform, I wonder how to solve a problem that I ran into, though: Virtually every keyboard model seems to use its own connectors for the flat cables running from the PCB to the keyboard matrix and the LEDs. There's a wide variaty of connectors, and I've learned that those FFCs are especially hard to obtain for private projects (need to buy lots of 1000, won't sell to private persons, etc.).
And--apart from the problem how to get at the FFCs--how are keyboards going to be connected to the controller?

Offline talis

  • Thread Starter
  • Posts: 195
"Open Source" Generic keyboard controller.
« Reply #71 on: Tue, 06 October 2009, 16:16:57 »
Quote from: Mnemonix;123484
Exactly. V-USB would be quite useless on that platform, which is a good thing.



OK. But wouldn't the final controller be an amalgamation of some devboard + connectors + maybe a few extra components anyway? The final PCB should, of course, not look like that, but be a streamlined, compact product. For a quick start and to see what's needed, however, a cheap devboard like Teensy(++) seems very appealing to me. OTOH, I also don't have a lot of experience in hardware development... :wink:

Independent of the concrete platform, I wonder how to solve a problem that I ran into, though: Virtually every keyboard model seems to use its own connectors for the flat cables running from the PCB to the keyboard matrix and the LEDs. There's a wide variaty of connectors, and I've learned that those FFCs are especially hard to obtain for private projects (need to buy lots of 1000, won't sell to private persons, etc.).
And--apart from the problem how to get at the FFCs--how are keyboards going to be connected to the controller?


The problem with most of the dev boards are they are missing some pretty critical components for such a project (most notably pull up/down resistors) that would need to be placed on a daughter card the dev board would plug in to (or flywired, which would end up in a mess).  At that point its much easier to just do a custom board from the ground up (none of these uC run at frequencies where you really need to worry too much about the board).  After that, it will have a standardized interface, and I invision people creating adapter boards for the standard keyboards (eg model M, Filco, Cherry, etc) as these tend to also have a fairly standard interface to the controller.  For those who aren't hardware inclined, its then a matter of plugging together controller + adapter + existing keyboard matrix => new programmable keyboard, for those who don't mind fly wiring, or hardware design you can get away with just controller + keyboard matrix

Connectors aren't as hard to source, if you have the right contacts (MOQ's only matter when you aren't asking for Engineering samples).  And in the worst case, you can remove a connector from the old controller and use it with the adapter.
« Last Edit: Tue, 06 October 2009, 16:19:37 by talis »

Offline msiegel

  • Posts: 1230
"Open Source" Generic keyboard controller.
« Reply #72 on: Tue, 06 October 2009, 16:27:20 »
don't avrs have built-in pull-up resistors on the i/o pins?

Filco Zero (Fukka) AEKII sliders and keycaps * Filco Tenkeyless MX brown * IBM F/AT parts: modding
Model F Mod Log * Open Source Generic keyboard controller

Offline talis

  • Thread Starter
  • Posts: 195
"Open Source" Generic keyboard controller.
« Reply #73 on: Tue, 06 October 2009, 16:32:58 »
Most micro's have some form of weak pullup on some port pins.  Tho these tend to be quite high value (and thereby quite susceptible to induced noise when you have long traces as on a keyboard PCB).  This is also just one example of what may or may not be missing (think LED drivers, PS/2 + USB capabilities with required hardware, external flash rom (if needed)) etc.

I guess the point I'm trying to make in an attempt to steer away from using a dev board over custom is, there's no real reason to constrain the design this early to get a working prototype slightly faster.  It's possible that ultimately an AVR chip will turn out to be the best, I'd just rather not choose it just because there is a dev board available, and remove that as a degree of freedom when working out requirements.
« Last Edit: Tue, 06 October 2009, 16:37:57 by talis »

Offline msiegel

  • Posts: 1230
"Open Source" Generic keyboard controller.
« Reply #74 on: Tue, 06 October 2009, 16:44:14 »
it sounds like we need a list of candidate microcontrollers :)

although this won't stop the software guys: the architecture and algorithms can be developed and tested while hardware is being worked out.

Filco Zero (Fukka) AEKII sliders and keycaps * Filco Tenkeyless MX brown * IBM F/AT parts: modding
Model F Mod Log * Open Source Generic keyboard controller

Offline Mnemonix

  • Posts: 163
"Open Source" Generic keyboard controller.
« Reply #75 on: Tue, 06 October 2009, 17:05:27 »
Quote from: msiegel;123518
don't avrs have built-in pull-up resistors on the i/o pins?


Yes, they do. No problem with AVRs then.

Quote from: talis;123522
Most micro's have some form of weak pullup on some port pins.  Tho these tend to be quite high value (and thereby quite susceptible to induced noise when you have long traces as on a keyboard PCB).


Or is there a problem? Yes, the pull-ups are quite high value and AFAIR their values are specified in a rather broad range in the data sheet (20k-50k or so?). I didn't notice any glitches so far, however. Maybe my environment just isn't noisy enough, or the noise is being filtered out by the debouncing algorithm.

Quote from: talis;123515
After that, it will have a standardized interface, and I invision people creating adapter boards for the standard keyboards (eg model M, Filco, Cherry, etc) as these tend to also have a fairly standard interface to the controller.


So, in a sense, the controller takes the role of a devboard, and the adapter is used to connect it to the keyboard.
The interface would have to be designed for the "worst case" scenario then, i.e., five pins for the LEDs supported by USB (or just the three common ones), x keyboard columns and y rows, where  x >= 9 and y >= 19 (my current worst case). If trackpoints and trackballs are to be supported, then pins for at least 3 mouse buttons and the mouse axes would be required, too.

And, I agree, just because there are development boards available for some specific MCU should not be the reason for choosing it. But I don't have an overview over the MCU market, so I cannot give any recommendations here.

Offline talis

  • Thread Starter
  • Posts: 195
"Open Source" Generic keyboard controller.
« Reply #76 on: Tue, 06 October 2009, 17:32:09 »
Quote
it sounds like we need a list of candidate microcontrollers :)

although this won't stop the software guys: the architecture and algorithms can be developed and tested while hardware is being worked out.

I say we just slap an 8 core Parallax Propeller in there and call it good =P.

Really the thing that should drive the selection of MCU are :

- Ability to meet the requirements (which need to first be gathered fully).
- Availability of development tools (programmer, debugger, compiler).
- Room for growth (it meets the requirements now, but how much more room is there?).
- Smaller/Larger versions in the same family for lower cost commercialization / room to move if the project runs out of space.
- I/O space for those big mod projects (backlit keyboards, fancy Cylon blinking light chasers, specialized interfaces).

Quote
And, I agree, just because there are development boards available for some specific MCU should not be the reason for choosing it. But I don't have an overview over the MCU market, so I cannot give any recommendations here.

The big ones to look at are :

- Microchip : 24HJ/18F
- Atmel : Fairly large range
- Parallax : Propeller
- Freescale : Coldfire
- Cyprus : Lots of semi specific keyboard uCs.
- TI : MSP430
« Last Edit: Tue, 06 October 2009, 17:41:49 by talis »

Offline msiegel

  • Posts: 1230
"Open Source" Generic keyboard controller.
« Reply #77 on: Tue, 06 October 2009, 17:39:23 »
Quote from: talis;123539
I say we just slap an 8 core Parallax Propeller in there and call it good =P.

XD thanks, i feel less crazy now for having thought that

edit: if most/all of the candidates can be programmed in C, then moving between platforms would be a *lot* easier

Filco Zero (Fukka) AEKII sliders and keycaps * Filco Tenkeyless MX brown * IBM F/AT parts: modding
Model F Mod Log * Open Source Generic keyboard controller

Offline talis

  • Thread Starter
  • Posts: 195
"Open Source" Generic keyboard controller.
« Reply #78 on: Tue, 06 October 2009, 17:50:39 »
Quote from: msiegel;123541
XD thanks, i feel less crazy now for having thought that

I've actually strongly considered this more for the potential ability to run multiple, parallel USB stacks, and a single USB hub stack to overcome the 6+modifier key limit on USB.  The big problem seems to be more with the development tools, and language support.

Quote

edit: if most/all of the candidates can be programmed in C, then moving between platforms would be a *lot* easier


I think a free/open source C compiler is a must no matter what platform is chosen. Once the boot loader is in place (which requires some sort of programmer) the end user should be able to write, compile, and upload code to the controller without the need of any specialized tools.

Offline msiegel

  • Posts: 1230
"Open Source" Generic keyboard controller.
« Reply #79 on: Tue, 06 October 2009, 18:24:25 »
plus, a propeller could make the keyboard into a video terminal emulator XD
it'll be deja vu all over again

btw, i don't know about you guys, but ever since mnemonix published his controller software as open source, i'm itching to order an avr development board :p

Filco Zero (Fukka) AEKII sliders and keycaps * Filco Tenkeyless MX brown * IBM F/AT parts: modding
Model F Mod Log * Open Source Generic keyboard controller

Offline Mnemonix

  • Posts: 163
"Open Source" Generic keyboard controller.
« Reply #80 on: Wed, 07 October 2009, 17:35:55 »
Quote from: talis;123539
I say we just slap an 8 core Parallax Propeller in there and call it good =P.


Ugh! :)  Sounds like overkill for a mere keyboard controller.

But for me the most important of all aspects is that development must be possible using solely open source tools. I would not buy and install Windows for running some proprietary compiler or crappy IDE, especially not for a fun project (= no payment). Even if nobody would have to pay for Windows and the development tools, the whole project would still not be free really because it would depend on closed-source tools and on at least two companies (MS, who make terrible operating systems, and the MCU company, who could cripple the devtools anytime for sqeezing some $$$). This might be acceptable for commercial use, but certainly not for an open source project.

Therefore, I think we should rule out any platform for which there is no open source toolchain, even if the hardware is a perfect match. I also think it must be possible to program in C; I don't have a problem with assembler languages, but C is waaaay easier and still fast.

That said, I googled a bit... ;)

Quote from: talis;123539

- Parallax : Propeller
- Cyprus : Lots of semi specific keyboard uCs.


Seems like there are no free C compilers for these, neither gcc nor llvm--at least during my quick search nothing interesting showed up (BTW, did you mean to write "Cypress"?).

Quote from: talis;123539

- Microchip : 24HJ/18F
- Atmel : Fairly large range
- Freescale : Coldfire
- TI : MSP430


There is at least some kind of gcc support for all of these. There is even an llvm backend for Atmels.
Maybe someone here could comment on how well the gcc versions perform on the various platforms? (I know the one for Atmel chips works quite well :wink:.)

Quote from: msiegel;123551
btw, i don't know about you guys, but ever since mnemonix published his controller software as open source, i'm itching to order an avr development board :p


Oh, and that's nice to hear (read)! :)

Offline cfishy

  • Posts: 60
"Open Source" Generic keyboard controller.
« Reply #81 on: Wed, 07 October 2009, 18:14:19 »
Mnemonix,

Awesome. I wanna see how you wire the board (I'm really a newbie hobbyist when it comes to electronics stuff) Can you show me a picture of the flip side?

Offline msiegel

  • Posts: 1230
"Open Source" Generic keyboard controller.
« Reply #82 on: Wed, 07 October 2009, 18:44:28 »
likewise...

the mysteriously strong-enough weak pullup resistors are still in the back of my mind :)

Filco Zero (Fukka) AEKII sliders and keycaps * Filco Tenkeyless MX brown * IBM F/AT parts: modding
Model F Mod Log * Open Source Generic keyboard controller

Offline talis

  • Thread Starter
  • Posts: 195
"Open Source" Generic keyboard controller.
« Reply #83 on: Wed, 07 October 2009, 18:47:14 »
Quote
But for me the most important of all aspects is that development must be possible using solely open source tools. I would not buy and install Windows for running some proprietary compiler or crappy IDE, especially not for a fun project (= no payment). Even if nobody would have to pay for Windows and the development tools, the whole project would still not be free really because it would depend on closed-source tools and on at least two companies (MS, who make terrible operating systems, and the MCU company, who could cripple the devtools anytime for sqeezing some $$$). This might be acceptable for commercial use, but certainly not for an open source project.

Therefore, I think we should rule out any platform for which there is no open source toolchain, even if the hardware is a perfect match. I also think it must be possible to program in C; I don't have a problem with assembler languages, but C is waaaay easier and still fast.

I've heard that somewhere before...

Quote from: talis;123545
I think a free/open source C compiler is a must no matter what platform is chosen. Once the boot loader is in place (which requires some sort of programmer) the end user should be able to write, compile, and upload code to the controller without the need of any specialized tools.


Reference to the Propeller was meant as a joke (hence the =p), its a very immature design, and will likely be fought with issues for a few years yet.  You know its best to steer clear of a device when the silicon arrives months before the supporting documentation, or even the basic specs or tolerances.


Quote
There is at least some kind of gcc support for all of these. There is even an llvm backend for Atmels.
Maybe someone here could comment on how well the gcc versions perform on the various platforms? (I know the one for Atmel chips works quite well .)

Gcc support for the MSP430, Atmel is pretty mature, the coldfire versions were ok last time I used them, and the PIC24 series support was poor at best (even the commercial compilers were pretty new and buggy last time I used them about a year ago).  The 8 bit PIC (12F/16F families) have much better support, but are somewhat lacking in the system resources department.
« Last Edit: Wed, 07 October 2009, 18:50:12 by talis »

Offline msiegel

  • Posts: 1230
"Open Source" Generic keyboard controller.
« Reply #84 on: Wed, 07 October 2009, 18:49:44 »
i vote in favor of mature tools. the last time i used immature ones, my entire neighborhood could hear me cursing ;(

Filco Zero (Fukka) AEKII sliders and keycaps * Filco Tenkeyless MX brown * IBM F/AT parts: modding
Model F Mod Log * Open Source Generic keyboard controller

Offline talis

  • Thread Starter
  • Posts: 195
"Open Source" Generic keyboard controller.
« Reply #85 on: Wed, 07 October 2009, 18:55:05 »
Quote from: msiegel;123788
likewise...

the mysteriously strong-enough weak pullup resistors are still in the back of my mind :)

The pull-up (down) resistors were just an example of limitations that you impose using a raw dev board.  The design, layout, and production of a custom PCB is pretty trivial these days at the types of frequencies these uCs run at.   The cost of small run, rapid prototypes is quite low (think <$30 for a 5"x10" board, cheaper in greater then 1-2 quantities, and paneling the design should get the per-board cost down to $10-$15 per even with very small orders).
« Last Edit: Wed, 07 October 2009, 18:57:39 by talis »

Offline msiegel

  • Posts: 1230
"Open Source" Generic keyboard controller.
« Reply #86 on: Wed, 07 October 2009, 18:57:45 »
Quote from: talis;123793
<$30 for a 5"x10" board

not bad :) is that one layer or two?


edit: hey, you got a domain! grrreat :D

edit 2: looks good in there, as if it's ready to receive some content :)
« Last Edit: Wed, 07 October 2009, 19:05:05 by msiegel »

Filco Zero (Fukka) AEKII sliders and keycaps * Filco Tenkeyless MX brown * IBM F/AT parts: modding
Model F Mod Log * Open Source Generic keyboard controller

Offline talis

  • Thread Starter
  • Posts: 195
"Open Source" Generic keyboard controller.
« Reply #87 on: Wed, 07 October 2009, 19:39:08 »
Quote from: msiegel;123795
not bad :) is that one layer or two?


Two, with one side silk screen, and solder mask both sides.

Offline Mnemonix

  • Posts: 163
"Open Source" Generic keyboard controller.
« Reply #88 on: Wed, 07 October 2009, 20:01:33 »
Quote from: cfishy;123777
Awesome. I wanna see how you wire the board (I'm really a newbie hobbyist when it comes to electronics stuff) Can you show me a picture of the flip side?


Hm, not now since the keyboard is in my office right now (I guess you refer to the M4-1?). It works on a SunRay, too. :)

Somewhere I have a picture of the empty stripboard with the cuts applied already. I'll color it a bit, add a few labels, and post it here. I really should have taken more pictures... I think I can shoot some tomorrow.
In the meantime, I can show these to you, taken shortly after I had assembled the board and put it into its place (but forgot the plastic foil underneath... :doh:):



The green one is the original PCB. Mine doesn't look so well with all these cables. ;)
A PDF of the circuit diagram is in my Git repository, by the way. No pull-ups, just some diodes to protect the shift registers from themselves. You don't need Git to view the PDF, just go to http://github.com/rhomann/kbupgrade, browse to /circuits/IBM_M4-1/, and download the (misnamed) pcb.pdf.

And here is a temporary setup with a 0.5m USB cable going straight into the monitor in my home office:


Offline Xuan

  • Posts: 189
"Open Source" Generic keyboard controller.
« Reply #89 on: Wed, 07 October 2009, 22:06:01 »
Quote from: talis;123790
Gcc support for the MSP430, Atmel is pretty mature, the coldfire versions were ok last time I used them, and the PIC24 series support was poor at best (even the commercial compilers were pretty new and buggy last time I used them about a year ago).  The 8 bit PIC (12F/16F families) have much better support, but are somewhat lacking in the system resources department.


Pics are very cheap and easy to find I believe, that's a good thing, but Atmels are very common to, right? And if they also have good gcc support, I'd say they seem to be nice candidates.

Offline talis

  • Thread Starter
  • Posts: 195
"Open Source" Generic keyboard controller.
« Reply #90 on: Wed, 07 October 2009, 22:15:11 »
Quote from: Xuan;123811
Pics are very cheap and easy to find I believe, that's a good thing, but Atmels are very common to, right? And if they also have good gcc support, I'd say they seem to be nice candidates.

They are all pretty easy to get, and all around the same price per chip (<$15).  Digikey is a excellent resource for all of them.

The goal is to first gather the community requirements, then from there choose which uC best fits those requirements (see link below).  In that way the requirements (including things like tool availability, platform, cost etc) will drive the decision.
« Last Edit: Wed, 07 October 2009, 22:24:03 by talis »

Offline Mnemonix

  • Posts: 163
"Open Source" Generic keyboard controller.
« Reply #91 on: Thu, 08 October 2009, 11:24:54 »
I'm not sure if this is really going to be useful, but for your entertainment, here are the pictures.
If you know of a good method for drawing this kind of circuitry with a computer program, please let me know (I designed this one with pencil and paper...).

As you can see, I had to use two pieces of stripboard because I didn't have one that was wide enough. I also made some stupid mistakes, like drilling one of the holes next to the USB connector at the wrong position at first, drilling the hole underneath one of the 74164 after soldering it in (duh), putting components into the wrong places... :mmph:
A real PCB would have been a lot easier to solder on. If someone of you would like to design one, then please don't hesitate to permute the assignment of I/O pins to row or column connectors if it helps. It is trivial to permute them back later (as long as you permute within rows/columns).

On this first picture, blueish means: drill or file here. Red means: cut traces here.
The spare area reserved for jumpers (or maybe rather DIP switches) is located where there is a hole in the back of the case now.



Here is the board complete with all components as it is in use now. The red dots mean that you need to connect two neighboring traces there.



And here is the top view. You can see I used an ATMEGA16 clocked at 12 MHz, two 8-bit serial-in parallel-out shift registers to drive the keyboard matrix rows, and a lot of wires...
Surprisingly, I managed to put the connectors for the keyboard matrix and LEDs into the same locations as they are in on the original board. :)


Offline msiegel

  • Posts: 1230
"Open Source" Generic keyboard controller.
« Reply #92 on: Thu, 08 October 2009, 11:38:16 »
that's excellent! you're getting this project off to a great start :D

Filco Zero (Fukka) AEKII sliders and keycaps * Filco Tenkeyless MX brown * IBM F/AT parts: modding
Model F Mod Log * Open Source Generic keyboard controller

Offline AndrewZorn

  • Posts: 1086
"Open Source" Generic keyboard controller.
« Reply #93 on: Thu, 08 October 2009, 11:40:38 »
i backtracked a couple pages
but you are saying that right now this WORKS???

EDIT i used to use some KDE-based diagram software that i really liked, if you happen to be on linux
NOPPOO CHOC MINI FILCO TENKEYLESS KBC POKER CHERRY MX11900
In order of preference, I\'m afraid.

Offline Mnemonix

  • Posts: 163
"Open Source" Generic keyboard controller.
« Reply #94 on: Thu, 08 October 2009, 11:42:05 »
Quote from: AndrewZorn;123882
i backtracked a couple pages
but you are saying that right now this WORKS???


Yes sir, seems unbelievable, but it does! :)

Offline msiegel

  • Posts: 1230
"Open Source" Generic keyboard controller.
« Reply #95 on: Thu, 08 October 2009, 11:43:46 »
that's what's so cool about this project, Mnemonix already has a working prototype! :D

Filco Zero (Fukka) AEKII sliders and keycaps * Filco Tenkeyless MX brown * IBM F/AT parts: modding
Model F Mod Log * Open Source Generic keyboard controller

Offline Mnemonix

  • Posts: 163
"Open Source" Generic keyboard controller.
« Reply #96 on: Thu, 08 October 2009, 11:56:37 »
Quote from: AndrewZorn;123882
EDIT i used to use some KDE-based diagram software that i really liked, if you happen to be on linux


Yes, I'm on Linux. Do you refer to KiCad? Looks like Eagle, but feels worse. ;)
I used KiCad to draw the circuit diagram, and it also has a PCB designing component. I didn't use it, however. Is it easy to make stripboard designs with it?

Offline AndrewZorn

  • Posts: 1086
"Open Source" Generic keyboard controller.
« Reply #97 on: Thu, 08 October 2009, 12:10:02 »
nah thats not it
i have no idea what it was called
i guess i realize now how useless all the 'information' has been

and yeah i do think this is pretty amazing, it went from idea to something that works pretty fast, makes me wonder if i will ever have a hardware colemak keyboard just to have
« Last Edit: Thu, 08 October 2009, 12:15:18 by AndrewZorn »
NOPPOO CHOC MINI FILCO TENKEYLESS KBC POKER CHERRY MX11900
In order of preference, I\'m afraid.

Offline InSanCen

  • Posts: 560
"Open Source" Generic keyboard controller.
« Reply #98 on: Sat, 10 October 2009, 01:41:23 »
Mnemonix

If you care to post the schematic, I can get that into a colour-shaded form (Colour blocks for pin groupings etc), pretty quickly. Probably into a downloadable PCB layout as well (I work for an electronics Retailer... handy sometimes!)

I do have an older copy of Eagle somewhere, but I am using Win7 (If there is a *nix binary, I don't have it), so not sure if it works.  But I'll dig it out and see what happens.
Currently Using :- IBM M13 1996, Black :
Currently Own :- 1391406 1989 & 1990 : AT Model F 1985 : Boscom 122 (Black) : G80-3000 : G80-1800 (x2) : Wang 724 : G81-8000LPBGB (Card Reader, MY) : Unitek : AT102W : TVS Gold :
Project\'s :- Wang 724 Pink-->White Clicky : USB Model M : IBM LPFK :
Pointing stuff :- Logitech MX-518 : I-One Lynx R-15 Trackball : M13 Nipple : Microsoft Basic Optical\'s
:

Offline msiegel

  • Posts: 1230
"Open Source" Generic keyboard controller.
« Reply #99 on: Sat, 10 October 2009, 01:52:07 »
Quote from: InSanCen;124253
Mnemonix

If you care to post the schematic, I can get that into a colour-shaded form (Colour blocks for pin groupings etc), pretty quickly. Probably into a downloadable PCB layout as well (I work for an electronics Retailer... handy sometimes!)

I do have an older copy of Eagle somewhere, but I am using Win7 (If there is a *nix binary, I don't have it), so not sure if it works.  But I'll dig it out and see what happens.


are these what you're looking for?
http://github.com/rhomann/kbupgrade/tree/master/circuits/IBM_M4-1/

mnemonix posted quite a bit more stuff farther up the tree :)

Filco Zero (Fukka) AEKII sliders and keycaps * Filco Tenkeyless MX brown * IBM F/AT parts: modding
Model F Mod Log * Open Source Generic keyboard controller