I think first some universal C code should be written (so that it can be portable), and then some suitable MCU that can easily be obtained chosen.
The necessary features may be:
- at least 6 I/O lines, though it would be good if it can detect card insertion/removal and drive the LEDs too.
- some fast method of passing through the /CS line. The PIC16F1825 has a 'digital modulator' module that is very suitable for this. If the MCU does not support this, then an external logic element could be used.
- >24MHz SPI slave port with the MCU being capable of reading data fast-enough to cope with PS2's timing
- internal oscillator (I don't think the stability of an external one is necessary in this case)
- small case size
- low price - as its function does not justify a high one.
It would be good if the PCB can support pinouts of for example two different MCUs, so if people who want to do it themselves can't find one, or in case one can't be found, can use the other. But maybe this is a bit to ambitious.
I am only familiar with some Microchip MCUs, but I think it would be nice of one PIC16 and one of Atmel is supported.
If you have any other suggestions though, I am open to ideas - as I said - I have basically no experience with most diverse MCUs, so there may be something more suitable out there.
There could be other cool features implemented, but maybe that is going too far.
For example having the MCU initialize the card.
One thing that would be nice though, would be to have decent debugging capabilities - for example through the LED(s).
The MCU should be able to detect if all lines were connected properly, and if communication with the driver was established. Maybe this should also be handled by driver code - running an initial test, or something like that.
This is what I can think of at this point.
As for the SD Card slot - I think that maybe having the PCB support both a micro SD Card slot and a normal one would be good. I originally imagined a (normal SD Card) push-push slot with the card going into the MC case, so that if one does not want to make a whole in the case, they can simply assemble the case and leave the card inside. But I think those SD Card slots (push-push) are too big and expensive. So a necessary compromise (to have enough space for the MCU) could be to make the SD Card slot mounted so that the card sticks out somewhat.
All-in-all - the more things the PCB can support - the better.
