How are other SNES emulators doing character output? What I/O address(es) are they using? Which emulator(s) do support character output? Are there any?
I believe blargg did something like that for the NES; but no SNES emulators support direct character output.
However, take a look at
USART. With a few simple parts, you can send and receive data over the controller port (synchronous, so no tricky timing to consider), and then you can write a PC program that can handle printing text, writing to files, reading from files, etc. The PC program allows for any kind of debugging you want.
The nicest part is it works under my emulator -and- on real hardware, so you can debug software on both with the same code.
If you really want to implement this as a print text only option ... go with $21c0-21ff, so that only PA7+PA6+/PAWR need to be watched. It probably doesn't matter, but the SA-1 maps $2200 (CPU control); which might matter for 16-bit writes (accidental or otherwise.)
If you're willing to help me make an SNES expansion port connector, I'll write the firmware to drive an LED to print out messages on real hardware as well as emulate it in software.
Thread
The controller port connection looks useful, too. Downsides are that it's a bit slower, and won't work if you want to use two controllers during debugging. Using an 8bit port will be faster, and it's easier to implement (both for SNES game authors and SNES emulator authors).
I am not really planning to implemt it on real hardware. Doing that would be quite simple, but just doesn't seem to be
that important to me. On hardware, one would need some extra logic for receiving a "Busy" flag by reading from some I/O address.
SA-1 with port 2200h... oh yes, good that you mention it! Thanks! I was always wondering why nintendo used 8bit I/O ports on a 16bit cpu. And now I'be been almost doing the same thing :-) Then I'll change it to this:
21FCh 8bit character output
21FDh 8bit unused, no function
So one could do either 8bit or 16bit writes to 21FCh.
Can't help on making connectors for the SNES expansion port. Another option would be to plug something between SNES and game cartridge (as done by Game Genies), but the cartridge slot is also having a nonstandard pitch (2.50mm instead of 2.54mm).
For DIY projects it would seem easiest to me to wire a standard connector directly to solder points on the SNES mainboard. Downside would be that people would need to do that themselves, and can buy it ready for use.
Btw. for the NES, I've found this:
viewtopic.php?p=82422#p82422
> Downsides are that it's a bit slower, and won't work if you want to use two controllers during debugging.
Slower, yes. 40KB/s max, 20KB/s practical for your typical code. Not a big deal for text printing.
It definitely works with two controllers. It was designed so that IObit toggles the USART vs the controller. It works in both ports, but it's ideal to place it in port 1, since port 1 doesn't ever use IObit officially (multitap, super scope and justifier all go in port 2. Mouse almost always does, at least.) Also slightly faster since $4016 is both latch and clock for RMW operations.
Anyway it's your call. I just like that it works on real hardware, too. Nobody's going to be developing SNES games on either of our emulators. Aside from d4s' two games, there is no SNES homebrew scene.
> On hardware, one would need some extra logic for receiving a "Busy" flag by reading from some I/O address.
If it's a one way output port and always live or buffered, watching /PAWR would be enough.
> Then I'll change it to this: 21FCh 8bit character output
Annoying address decoding if someone did choose to make it on hardware, I'd choose $21c0, but whatever.
> Another option would be to plug something between SNES and game cartridge (as done by Game Genies), but the cartridge slot is also having a nonstandard pitch (2.50mm instead of 2.54mm).
Yes, very true. But even harder to get a full passthru (both male card into the SNES, and female edge card connector. Though you could more easily cannibalize SNES units than Exertainment / BS-X units for those.)
I really wish I could understand why all these other people have no problems sourcing these components. I contact a dozen "edge card manufacturers" and none of them are willing to work with me at all. The guy that made the NES one won't even respond to a simple message.
I guess I'll just go with my FFC attempt, then.
> Btw. for the NES, I've found this: viewtopic.php?p=82422#p82422
Seems overly complicated, and could never work on anything but an emulator. But I suppose it would be easier for someone writing assembler code targeting that emulator to quickly output data with.
byuu wrote:
Nobody's going to be developing SNES games on either of our emulators. Aside from d4s' two games, there is no SNES homebrew scene.
Some of SNES homebrew games released in 2011-2012, not by d4s: Chrismas Craze (16-bit XMas), Classic Kong (Complete), Uwol: Quest For Money, Mazezam Challenge.
bsnes was used to develop two of them at least, the debugger version (v060d) mostly.
And I've used BSNES (also 0.60d) a lot while developing the menu software for the SNES Myth flashcart (though for the hardware-specific parts like accessing the on-cart RAM and SD-card interface I obviously have to test on the real thing).
byuu wrote:
...I really wish I could understand why all these other people have no problems sourcing these components. I contact a dozen "edge card manufacturers" and none of them are willing to work with me at all. The guy that made the NES one won't even respond to a simple message...
Might be worth contacting Matthias over at
Retrode.org, he got a load of Snes cart connectors made for his Retrode production run, maybe he has a contact that would be willing to make some?
> It definitely works with two controllers. It was designed so that IObit toggles the USART vs the controller.
Oh, didn't knew that. I had a short look at
http://byuu.org/snes/usart/design but without schematic it wasn't too obvious how it would work. The $27 teensy++ was also keeping me away there - my PC still has a nice parallel port, so I can transfer data with a 74xxx 8bit latch for around 30 cents :-)
> Nobody's going to be developing SNES games on either of our emulators.
> Aside from d4s' two games, there is no SNES homebrew scene.
Very motivating ;-) there are a few more homebrew games once and then.
>> Then I'll change it to this: 21FCh 8bit character output
> Annoying address decoding if someone did choose to make it on hardware, I'd choose $21c0, but whatever.
21FCh is the offical should-use-this address. If you want to, you can mirror it to 21C0-21FF in hardware and it'll work without problems (unless you have the exertainment bike connected to 21C0-21DFh at same time).
>> Btw. for the NES, I've found this: viewtopic.php?p=82422#p82422
> Seems overly complicated, and could never work on anything but an emulator.
Has it ups and downs. It's very easy to use, and much faster than single-character outputs.
nocash wrote:
>> Btw. for the NES, I've found this: viewtopic.php?p=82422#p82422
> Seems overly complicated, and could never work on anything but an emulator.
Has it ups and downs. It's very easy to use, and much faster than single-character outputs.
Yeah, each way has it's perks. I've actually improved on it lately, so that it uses 0 cycles(*) and reads the debug strings from an external file, but this only works with CA65 because the method relies on the debug file that CA65 generates. This maybe doesn't sound like that big of a deal, but the debug strings did end up using a significant amount of space in my previous project so it's nice that they don't fill up the ROM needlessly, even during development.
(*) I had to add an option to output a NOP instruction if the debug output is the very last statement of a conditional block because otherwise it wouldn't be possible for the emulator to distinguish whether the debug output should happen inside the block or after it.
Code:
lda foo
beq over
; Has to output a NOP so that the debugOut address is not the same as "over".
debugOutNop "in cond block"
over:
nocash wrote:
> It definitely works with two controllers. It was designed so that IObit toggles the USART vs the controller.
Oh, didn't knew that. I had a short look at
http://byuu.org/snes/usart/design but without schematic it wasn't too obvious how it would work. The $27 teensy++ was also keeping me away there - my PC still has a nice parallel port, so I can transfer data with a 74xxx 8bit latch for around 30 cents
The Teensy++ seems like it's just being used as a USB<->USART bridge. If you have some other means to communicate with a USART device, you should be able to use that instead. In any case, I'd suggest an FTDI USB<->USART converter over a Teensy++ in this situation anyway. $15, rather than $27, and a microcontroller is rather overkill for USB-to-serial anyway...
> The Teensy++ seems like it's just being used as a USB<->USART bridge.
Pretty much, yes. It also checks IObit to disable itself when that bit is set (and the ISL pushes the other signal through to the passthru controller port connector.)
There's also a hardware switch on my board to force it off for the few stupid games that clear IObit for no reason.
> I'd suggest an FTDI USB<->USART converter over a Teensy++ in this situation anyway. $15, rather than $27
Tried it:
http://byuu.org/snes/uart/hardwareA standard UART is not sufficient, because it's asynchronous. Thanks to SNES DRAM refresh, the best you can get is 57kbps reliably, 115kbps unreliably. And even that is a pain to write the cycle-timed code.
The Teensy is synchronous and watches the clock line at 16MHz, builds a byte, and then sends it to the PC, so you can push it at up to 1Mbit/s. The limit is the SNES' CPU speed, which knocks you down to about 320kbps. That's still 3-6x faster than a simple FTDI cable. And the code to drive it on the SNES side is nice and simple.
The Teensy is a bit overkill, but it's the easiest thing to program and use for USART. It's also not fast enough to handle 2.68MB/s that would be possible with an expansion port connector. Anyway, if you can make a device that is just as fast, functional, synchronous, and allows software IObit+psychical SPDT switching of serial vs controller passthru for less money, please do
I've love to sell these, but nobody's going to pay $100 for one.
So in other words, the Teensy is acting as an SPI slave. Isn't there anything cheaper that can act as an SPI slave and a USB device?
I was talking more along the lines of
https://www.sparkfun.com/products/9716? rather than the cable. Supposedly, the FT232R chip is capable of synchronous bit-bang transfer, though you might have to hack that board to access pins not broken out on it in order to change that configuration (or just modify the design and build it from scratch, they provide Eagle files for most of their boards). If you wanted a bit more configuration, you could build around the FT232H which supports a ton of synchronous and asynchronous protocols.
http://www.ftdichip.com/Products/ICs/FT232H.htm
tepples, feel like splitting off the cable discussion for nocash? Don't mean to derail his thread.
qwerty, that's all nice and well, but $15 for that FTDI isn't saving anything over $16 for a Teensy. I use the Teensy++ with pins because it doesn't require any soldering (Teensy with pins doesn't have a pin for one of the UART signals I need.)
The bulk of the cost is all the small parts I have to keep including, it's not the Teensy that's a killer.
Teensy++ with pins - $27 (knock it down to $16 if you don't mind soldering a bit.)
Breadboard to hold everything - $10 to $15 (I don't like soldering onto perf board; I really don't want to fab PCBs either)
2x DB9 breakout boards - $16 (I don't like wires sticking out of the board, too easy to knock them out)
Mini-B USB cable - $5
SNES extension cable - $6
7x AWG crimp terminals - $3
Spool of 22 AWG solid core wire - $5 (to be fair, you can make a few boards with one spool)
2x DB9 hoods - $4 plastic; $8 metal (interference isn't a problem, but metal is nice)
2x DB9 solder cups - $4
2x DB9 grommets for hoods - $1
2x ISL84544 digital SPDTs - $5
1x 2-pin SPST - $1
2x resistors - $0.50
1x LED - $1
Now add in shipping because you have to go to at least three places to get all of that, so add on $15.
Now add sales tax to most of that stuff.
And we still haven't considered any kind of enclosure.
It's death by a thousand papercuts.
>
http://www.ftdichip.com/Products/ICs/FT232H.htmIt sure would be nice if they made those in DIP form.
The UM232H dev board here looks nice:
http://www.mouser.com/new/ftdi/ftdift232h/But you apparently have to add your own EEPROM to configure it to not be async UART, blech.
The really nice thing about the Teensy too, is that it's synchronous, but on the PC programming side, it acts as though it's your typical RS232 UART. You just ignore the baud rate setting (has no effect), set up your ioctl()'s, open your /dev/ttyUSB0, and start read()'ing and write()'ing to it. The Teensy buffers your data (128-byte buffer), and sends it along in async mode to the PC using its internal UART.
The sync bit-bang of this chip sounds lovely indeed, but it no doubt needs their own custom drivers, which is going to be a hassle for many people.
Yeah, sorry about derailing the thread. Splitting this off to a separate topic would probably be good... Anyway, I've started getting into PCB assembly, and it really does result in a much better end product than breadboarding. It also tends to be cheaper on parts. Ideally, what you'd need is:
FT232H: $4
Various resistors/caps/crystal/etc: $1-2
PCB: $2-$5 (have to order in multiples of 3 or 10, depending where you go)
SNES extension cable: $5
ISL84544CPZ: $2
Mini USB-B port: $0.50
I'll assume you already have a USB cable or three...
Total cost for the entire unit is still under $20
Also, the Retro-Bit SNES extension cables have all 7 connectors, so no need for pulling apart the plug and transplanting +5V into IOBit.
FT232H outside of RS232 async mode requires libftdi, and to get at the full SPI/bit-bang interface, you need a third-party libmpsse. It is not acceptable to require a third-party kernel driver to use this, even if it's much cheaper. That's a serious deal breaker.
> Anyway, I've started getting into PCB assembly, and it really does result in a much better end product than breadboarding.
I'm sure it does. When I find more than a single person wanting to buy one, it may be worth considering.
> Also, the Retro-Bit SNES extension cables have all 7 connectors, so no need for pulling apart the plug and transplanting +5V into IOBit.
No they don't. They lie and say they do, and they have the metal pins on the male end, but if you open the female end ... five wires. I know this very, very well. For a long time, I was opening them up, and moving the Vcc pin to IObit. The wires are also piss poor garbage. I get resistance on at least one line on most cables before I even touch them.
Trust me, I've bought dozens of them. Both the old and new style packaging, as well as generic ones with no boxes in bulk. I've bought probably 30 of the things. Still don't believe me? This was my last attempt at wiring one of those pieces of shit into a DB9 cup:
Anyway, it's easy to make a 7-pin. Only problem is I can't find a 24-28AWG crimp tool that's affordable, so I just solder 22AWG stranded wire onto them. I know you're not supposed to do that, but fuck it, it works.
And it looks awesome.
Is bit-bang really going to have low enough latency to do a decent transfer rate? It seems it'd really stress USB and use a lot of CPU on the host side. This is assuming by bit bang you basically mean that you treat the FTD as a glorified I/O port and do each bit on the host side.
Ok, forget the FTDI chip. Even still, a Teensy++2.0 is basically just a breakout for an Atmega32U4 microcontroller, which is a $6 chip. On top of that, since all you're using it for is the USART, I'm pretty sure you could do the same with the Atmega16U2, which is $3-4.
And yes, you're right about the extension cable, I made the assumption based on the existence of the male pins.
qwertymodo wrote:
On top of that, since all you're using it for is the USART, I'm pretty sure you could do the same with the Atmega16U2, which is $3-4.
Or microchip sells the SPI+USB PIC16F1455 for $1.50. Most of the $80 seem to be due to wanting someone else to do all the soldering and using off-the-shelf modules. Not that there's anything wrong with that; it just makes it awkward to complain about cost.
tepples wrote:
So in other words, the Teensy is acting as an SPI slave. Isn't there anything cheaper that can act as an SPI slave and a USB device?
The teensy is just an easy to program/develop $2-3 AVR mcu. All the schematics and everything are there. Not sure what their how it's licensed but you could easily reproduce the schematic into your adapter. Looking at thier site, it's obvious they have a hardspot for clones... But since how it's a development kit I'd imagine they have some plan/tolerance for when you're ready to produce/market your finished product as something besides a teensy alone.
lidnariq wrote:
qwertymodo wrote:
On top of that, since all you're using it for is the USART, I'm pretty sure you could do the same with the Atmega16U2, which is $3-4.
Or microchip sells the SPI+USB PIC16F1455 for $1.50. Most of the $80 seem to be due to wanting someone else to do all the soldering and using off-the-shelf modules. Not that there's anything wrong with that; it just makes it awkward to complain about cost.
USART =/= SPI. I'm not sure if you can directly connect to SPI via a virtual COM port the way you can with a U(S)ART. Also, U(S)ART allows for true bi-directional communication, where SPI has to be driven by the master, though I'm not sure if that makes any difference in this configuration. I just looked at the Teensy code package, and I think you might even be able to get it to build for the Atmega8U2, since the main difference between it and the Atmega32U4 found in the Teensy as far as this application is concerned is Flash memory space, and 8kb should be enough...
I'm not 100% clear on all the distinctions.
UART
USART
RS232
SPI
I2C
Bit-Bang
Lots of stuff. My basic requirements: the SNES side code is not using any kind of timed writes. I want to write one bit (for controllers) and one byte (for the expansion port.) I would like the controller fast enough to handle 40KB/s (320kbit/s) worth of data, and the expansion port to handle 2.68MB/s worth of data. Controller and expansion port chip do not have to be the same. I want it to be bidirectional. I want the PC side to be able to open /dev/ttyUSBx, and start using read/write to send and receive data. No third-party drivers, no proprietary USB driver code to be written by me, no extra kernel drivers to load. Plug and play.
Cost really isn't an issue. Sure, I pay way more to have breadboard compatible stuff, but then I am mostly prototyping now anyway. Nobody's buying these things, so it's stupid to do a run of 100 PCBs, then decide I want to add something, and have to order more.
If we got it all nice and finalized (honestly the controller port one mostly is), and there is demand from at least 10 people on buying one, then we can look into that. If you can MacGuyver your own out of two 74LS chips, bailing wire, and a pack of chewing gum, fantastic! Make your own
And preferably sell them to people so we can get more devices out there, heh.
Well, for your purposes, it sounds like a low-cost USB microcontroller is the way to go. Then you can easily reconfigure it if you decide to go with the expansion port device. From your speed requirements, I would guess that 16MHz would be sufficient (I think?). If you're using a microcontroller that enumerates as a virtual COM port, I suppose it really doesn't matter what protocol you use out from there to communicate with the SNES (so ignore my previous comment about SPI not being able to do that...). If you do move to an expansion port device, you'll have to write the SNES<->uC communication code yourself, as I don't think there are any hardware-based 8-bit parallel interfaces in the AVR's, but it would be trivial to write the code to do it with GPIO's. Any of the AtmegaXuX's should be sufficient for this task, or you could go with a PIC if you prefer (though I'm not familiar enough with them myself to be able to suggest one).
Based on your initial design, I came up with this. I know I need some more passive components, and probably need to connect some of the other various AVR pins to VCC or ground. I haven't taken the time to look through the AVR datasheet, most likely I'll need some decoupling caps and some resistors on the USB lines. Also, I'm not sure if you need an external crystal in this configuration since you're using an external clock line. I decided to connect the output controller and ISL to the SNES 5V line so that they receive power regardless of whether or not the USB cable is plugged in.
http://i45.tinypic.com/35lav06.png
qwertymodo wrote:
I don't think there are any hardware-based 8-bit parallel interfaces in the AVR's, but it would be trivial to write the code to do it with GPIO's. Any of the AtmegaXuX's should be sufficient for this task, or you could go with a PIC if you prefer (though I'm not familiar enough with them myself to be able to suggest one).
PICs have what's called a "Parallel Slave Port" for just this purpose; I'd be really surprised if Atmel didn't have something equivalent.
byuu wrote:
the expansion port to handle 2.68MB/s worth of data
Somehow I'd failed to completely think this through the first time. That's actually fast enough to exceed USB "full speed" and require USB2 high speed instead. I'm not certain if there are any 8-bit microcontrollers that would be able to keep up with that, although something like the Atari 2600 Harmony cart definitely would. (Or an 8-bit micro could be used if it were ok to reduce the DMA chunk size to small enough and use handshaking such that each packet could be downloaded to the microcontroller's RAM before the SNES push/pulled data)
Just for kicks, I'm going to build myself a controller port based one around an Atmega16U2, seeing as I have a few of those laying around at the moment. I'm not sure exactly what I'm going to do with it, since I don't have a flashcart (I've been meaning to buy myself an SD2SNES, but I can't afford it right now) but I'm in a building mood... I'll let you know how it goes.
Getting the code to compile for the Teensy was fairly trivial (there was only 1 incompatibility vs. the Teensy++), but targeting the 16U2 is going to require a bit of hunting through datasheets. In the meantime, I drew up a schematic (which I'll need to double and triple-check, especially for differences vs the 32U4, but I know it's at least close). Here's the tentative board layout, sans traces. I'm planning to use one of my spare controller ports off of one of the broken multitaps I have laying around, rather than using a cable for that end. You think YOURS looks awesome?
> Getting the code to compile for the Teensy was fairly trivial (there was only 1 incompatibility vs. the Teensy++)
The main reason I used the ++ was because the Teensy put one of the UART pins (D5) on the side, so it wouldn't be accessible from the breadboard mountable version.
> You think YOURS looks awesome?
Yes =)
Yours looks fun, too, of course.
I'm curious how interested you'd be in adapting this for the SNES expansion port. I'm still chasing after companies and oddball parts to get a connector fabbed for that port. My current target is 1mm connectors and using 2:1 pinouts (SNES exp pins are between 0.078" and 2mm)
Well, as lidnariq mentioned, this design is limited to USB full-speed 12Mbit speeds. Otherwise, it shouldn't be too incredibly difficult to make this work with the expansion port, you just won't hit your speed goal (though it should still be considerably faster than the controller port model). I still haven't found anything in the datasheets to indicate that the Atmega16U2 has a dedicated 8-bit parallel interface, but it shouldn't be too hard to whip up a bit-bang protocol. The Atmega16U2 has plenty of GPIO's, so that's not a problem. We'll see how this goes, I'm still asking around on AVRFreaks to figure out the code changes for porting to the smaller uC. Right now, I'm in the middle of a couple of projects, one of which is building non-volatile N64 controller paks (if anybody's interested in one, I'm selling them; shoot me a PM), plus I have school and work, so my focus is a bit split right now.
Here's something that might be made to work for the expansion port connector. You'd have to buy a 40-pin version and take a hacksaw to it, maybe a dremel as well if the plastic housing was too wide...
http://www.samtec.com/ProductInformation/TechnicalSpecifications/Overview.aspx?series=MEC2-DVEdit: You can even order free samples. I'll order one and see if it works.
If I'm reading the sheet right, the MEC2-30-01-(L-)DV should do the job. The -20 has the polarized piece such that we'd get 7+12 rows. The -30 gives us 10+19 rows. The -40 gives us 15+24 rows. The -50 gives us 20+29 rows.
I'm fine with cutting the connector down to size if it can be done more reliably, eg with a table saw or something.
I am less fine with it being a surface mount connector. Getting that wired up to a breadboard for prototyping will be an absolute nightmare.
I'd much prefer a through hole design, preferably one that's amenable to an IDC cable being put on the end :/
I don't know what the -K option is talking about. They also don't give you the critical measurements of the top of the connector's width and length. We need it to fit into the ~3.2cm x ~0.8cm slot on the SNES deck.
Still, amazing that you found a 2mm card edge connector. Props there.
byuu wrote:
I am less fine with it being a surface mount connector. Getting that wired up to a breadboard for prototyping will be an absolute nightmare.
Assuming you're specifically looking to put a not-0.1" connector into a 0.1" breadboard without a converter, I fear you're doomed to failure anyway; I have never seen a connector where they're anything but the same pitch inside and out.
byuu wrote:
I am less fine with it being a surface mount connector. Getting that wired up to a breadboard for prototyping will be an absolute nightmare.
Surface mount isn't as nasty as it seems. Before last spring term, I had absolutely 0 surface mount experience. After a dozen projects or so this summer, I'm down to 0.5mm pitch without any issues. 2mm pitch is HUGE for smd. I ordered 2 samples of the -50's, so that should work out to 4 connectors (in case I wreck one or two along the way...). Tell you what, if it fits, I'll send you one on a 0.1" breadboard header.
> Assuming you're specifically looking to put a not-0.1" connector into a 0.1" breadboard without a converter, I fear you're doomed to failure anyway
Getting things to breadboards is always fun. For my serial controller cable, I wanted to bypass the controller ports and run the 1.25mm x 11-pin FFC directly into a breadboard, but nobody makes 1.25mm breakout boards. So the idea was to mount an adapter to perfboard, then add an IDC header to it, then use an IDC cable to connect to an IDC breakout board.
In this case, worst case, I'd probably try soldering wire between each pin of a through-hole connector to a through-hole IDC header. Whatever works.
byuu wrote:
>In this case, worst case, I'd probably try soldering wire between each pin of a through-hole connector to a through-hole IDC header. Whatever works.
If that SMD socket works, looking at the footprint, I would guess the pins would be large enough to accommodate soldering an IDC cable directly to the pins. You could even bend the pins so they point down instead of out.
If you wanted to bypass the controller port via the FPC cable, here's a connector (again, surface mount...)
http://www.kyocera-connector.com/prdct/ ... /6207.html
I have through hole 1.25mm FFC connectors. I decided against it because I figured out how to make my own controller cables using 24-28AWG crimp terminals. They go right onto the SNES controller port terminals. It was a side step to try and get past the horrors of those Retro-Bit cables. Nicer not requiring people to take the SNES apart. Downside is I have never found affordable 24-28AWG crimpers, but I just solder stranded wire onto the terminals and that seems to work just as well.
Fun side note: the CPU actually has three output pins for the controller port. It's just that only one is connected. But if you soldered onto the CPU, you could clock 3 bits at a time via the controller port. Fun, but impractical for plug and play, as is the FFC bypass.
I managed to get the code to compile for the Atmega*U2 series chips, even all the way down to the 8U2 (though I'm not going to bother with it since the 16U2 costs $0.01 more than the 8U2 and has the same footprint and pinout, but twice the flash memory). I'm waiting to hear back on a second opinion on the changes I made to get it to compile, and then I need to double-check my schematic. Then I can trace the board. This might actually work!
Just wondering, but does your USART adapter make any use of the LED on the Teensy++? That's the one pin assignment I'm still unsure of with regards to porting the design over to the 16U2. Everything else matches up great, I'm just not sure on the LED. It's getting annoying enough to track it down that I'm about to just assign it to whichever GPIO fits best on the board, and if you need/want it, I'll go through the code and reassign it there...
Now that I've hunted through the documentation and various schematics, I think I've finalized the board, so I can start tracing. With this, I also have a pretty good idea on price.
ATMega16U2-AU: $4
ISL84544H: $1
USB-B Header: $1
16MHz Crystal: $0.50
Resistors/Caps/LED: $1-2
Reset Switch (optional): $0.50
PCB: $2-5 (varies)
SNES cable/port: varies
So the total cost is ~$10-13 plus the cost of the connector and cable (I'll be ripping the connector off a broken multitap I have sitting around) and maybe an enclosure, if you feel so inclined.
Revised board design:
Also, I should be getting those Samtec connectors in today or tomorrow, so I'll know soon enough whether or not they work for the expansion port.
I hooked a regular LED up to the power rail, which can be disconnected via the DIP switch. It was just there to say "the device is plugged in and receiving power." It isn't necessary at all, may as well keep the cost down.
You may be set on using the SNES connector, but personally I use DB9 male on the board. I also offer a DB9 female passthru so that the same controller port can do both controlling and PC communication.
Anyway, it looks neat. There may be more demand at $13, but it'll still be really small.
> Also, I should be getting those Samtec connectors in today or tomorrow, so I'll know soon enough whether or not they work for the expansion port.
Awesome, can't wait!
As far as the cost goes, that's more a matter of cost to build than anything. I'm not expecting to sell any. Routing traces ended up being far less painful than I expected. I may add a power indicator LED to the USB power line, that wouldn't take much. It wouldn't take much to modify this board for DB9 footprints, either.
I finally got around to opening my Naki Tribal Tap, and was pleasantly surprised to find that the 7-connector cable is actually terminated on the board side by a 0.1" Molex connector. That, and the controller ports are each attached to a small board that breaks out to 0.1" through-hole headers. With this discovery, I'm going to change up the board footprint accordingly, and the really nice part is the cable will be reusable, since I can just put a Molex header (or just 0.1" pins) on the board and leave the cable intact. Personally, I'd say this is even better than DB9. You could plug this directly in to a breadboard with just some straight pins.
I managed to get it all traced only to realize I had flipped one of the headers >.< Oh well, I think this should be good, other than perhaps choosing a different crystal and/or reset button. I may also consider adding another LED so I have one for power, one for monitoring Rx, and one for monitoring Tx. As it is, since it's not really using the LED that's there, if I leave it at 2, one is power, and the other I'll program to indicate Rx/Tx activity both to the same LED. I may play around with the spacing on the LEDs a bit to accommodate through-hole LEDs or surface mount, that way if I put it in an enclosure, I can opt for through holes and bend the leads 90 degrees to shine out the front of the enclosure...
I finally got around to mounting header pins on the controller ports. The pinout on the ports was broken out to 2.50mm , so I had to bend the 2.54mm pins a bit to get them to fit, but I bent them back afterward and they work just fine in a breadboard. I also transplanted the extra pins while I was at it, so all 3 of them have all 7 connections populated. It was surprisingly relatively painless, and I'm really happy with the results. I now have a matching set of cable and ports, all broken out to 0.1" headers, and all with the full pinout
You have male ends there, but the SNES deck is also the male end. So extension cables (male on one end, female on the other) won't connect your SNES to your board :/
This will be good for the passthrough portion, of course.
I'm not using an extension cable for my board, I'm using the cable from a couple posts back. It has the female controller port on one end and a standard Molex connector on the other. My board will have the passthru port mounted permanently (on the left of the board in this image), and a Molex header on the other. That way, I can connect the controller cable, but can also remove it if I need it for a later project (as you well know, 7-connector cables are more than a little difficult to come by). Here, I added the connectors to the board image, maybe that will help you see what I'm going for. Look at the cable I posted above and you should see it plugs right in to the header on the right-hand side of the board, and that's how I'll be connecting to the SNES.
Well, at this point I really need to figure out whether or not I have any way of testing this thing once I've built it. I don't have an SNES flashcart, so I can't run my own code. On your project page, you mention several potential use cases that sound like they could be done with retail carts. Could you elaborate on any of those ideas, or am I understanding that incorrectly?
Ok, so I finally got one of
these working on a HiROM board (
SHVC-1J3M-11, to be specific), so I do now have the ability to run my own code, so long as it's HiROM. I build a LoROM board as well (
SHVC-1A3M-30), but I can't get it to boot. I have a 3rd working FlashROM, but I don't have another donor board handy. I took a look at the SNES Software package on your USART project page, but I can't really make heads or tails of what's what. I see what seems to be PC-side code and other code that seems to be meant to run on the SNES, but I don't see a ROM in that package, or instructions on what mapping to use, or a description of what I should expect to see/do/etc. once it's running.
Edit: Turns out I did have a
SHVC-1A3B-13 sitting around, but it won't boot either :-/
I got the Samtec headers in today, and after a bit of Dremeling, it fits beautifully. The part number is MEC2-30(/40/50)-02-L-DV. AVNET sells them for $5. My offer to assemble and send you one still stands, once I get around to dragging my etching materials out again...
http://avnetexpress.avnet.com/store/em/EMController/Connector-Card-Edge/Samtec-Inc/MEC2-30-02-L-DV-WT/_/R-5000874036739/A-5000874036739/An-0?action=part&catalogId=500201&langId=-1&storeId=500201&listIndex=-1&page=2&rank=5
Man, you're a hero!
The site seems to be sold out ... but I guess I can back-order a big quantity of them. And only 500 before a price break!
Your link goes to the -WT version, but I don't see weld tabs on your picture ... did you dremel them off? I think I'd prefer to get the non-WT version to skip that if so.
Version -02, I didn't think the card was that thick, but it looks like it fits like a glove, so -02 it is!
Did you test all of the contacts to make sure they're all working, and not bridging any pins? (still not sure if the pitch is 2mm or 0.078")
How are the bottom pins that are now sticking out of the SNES? What I would really like is a way to get that into a 14x2 IDC header (female end), so that I can get the expansion port connected to a breadboard for prototyping. The spec sheet makes those pins look like they're surface mount or something. Your picture kind of looks like they're coming off teh board, but they're impossibly tiny. I'd really prefer to not solder to each and every pin if it can be avoided ... what's the easiest way to get this to wire up to a 14x2 IDC header? Worst case if I have to learn surface mount soldering, so be it.
In that case, I'd like to get a PCB fabbed that just breaks off to a male IDC header, then I can just run an IDC cable between that board and a breadboard.
I'd like to be able to do it on my end, because I'd like to offer these for sale. I'll be happy to pay you for any trouble.
Again, thanks so much. Been trying to get people to help me connect to this thing for almost two years now.
The site isn't sold out, Samtec parts just tend to not be stocked by wholesalers like AVNET and DigiKey. They don't sell enough of them to keep them in stock, but you can still order them and it just takes a couple extra days for them to get the parts from Samtec and then send them on to you. The -02 thickness only comes with weld tabs, I dremeled them off. The only issue I can forsee is that the socket isn't very deep, and I'm not sure how good a connection you'll get if the board it's mounted too isn't completely flush with the bottom of the SNES. Breaking this out to an ICD header is easy. I've already made EAGLE footprints for both the -01 and -02 variants. I didn't get any samples of the -01's, but the -02 seems to fit snugly enough. I tried etching a board for it and failed twice... I hate broken traces
I'll try again tomorrow if I get the chance. Honestly, it would be easier to mount male pins to the board, which would mate with a standard IDC ribbon cable. You'd need an additional male-male adapter on the other end of the cable to connect it to a breadboard, but that's not a big deal...
Yes, these are surface mount parts, and no, I couldn't find a through-hole alternative. 2mm pitch is pretty gigantic for SMD, so it shouldn't be too hard. The one annoying thing is that the pins are a bit recessed under the connector, so they are a little tricky to get to. I've been meaning to write up a blog post chronicling my experiences in learning to surface mount solder... maybe I'll get around to it one of these days. There is a lot of information on the internet, but it took a lot of trial and error to find something that worked well and consistently for me. Some tips off the top of my head:
Equipment:
Absolute necessity
------------------
Decent soldering iron, adjustable temp, preferably w/removable tips. It doesn't have to be a $200 iron, mine was $35, but the $15 electronics store crap isn't worth the cardboard packaging it comes in.
Liquid rosin flux. Stay away from water-soluble flux, it's more trouble than it's worth, especially early on. I have a bottle with a brush attached to the cap, but some people prefer syringes (they make less mess).
High quality, fine-tipped tweezers. I prefer bent tips. You want tips fine enough that you have to worry about jabbing yourself with them. Big, fat tweezers are useless. Look somewhere like Jameco or SparkFun, somewhere dedicated to electronics hobby work, and they'll have good tweezers.
Desoldering braid. Use it for removing excess solder from bridged pins. On surface mount pins, the surface tension of the solder is such that desoldering braid will almost never actually desolder the pin. I tend to just flood the whole row of pins with solder, creating one big bridge, then suck it back up with the desoldering braid and it's done.
Nice to have
------------
Brass tip cleaner. It's a lot nicer and works far better than a sponge.
Desoldering pump. Useful on through-hole pins, not so much on surface mount.
ChipQuik. This is the easiest way to desolder surface mount chips. It's a low-temp solder that stays liquid for a very long time. Apply the flux that comes with it, flood every pin on the chip with ChipQuik, then go back around one more time to heat up all of the ChipQuik and pull the chip right off.
Magnifying glass. Nice if it's attached to a helping hand clamp as well.
Dental pick. It's nice for a lot of things...
My basic strategy is clean the board with 99% isopropyl alcohol, then apply liquid flux to the pins. Position the chip, then apply solder to one of the pins in one of the corners. Once the corner is tacked down, reheat the solder you just applied while manipulating the chip with the tweezers to ensure the pins are all properly aligned. Now, apply solder to the opposite corner and repeat the heat-and-position until the pins are perfectly aligned. Next, I apply solder across all of the pins, typically bridging all of the pins together on smaller pitch parts. Then, use the desoldering braid to remove excess solder and any bridges. Check for shorts and fix as necessary. Keep in mind that the more you reheat the same solder, the less it wants to flow, so some times you have to add new solder to a bridged pin in order to get it to flow into the desoldering braid. Getting solder to flow nicely is one of the most important things to get a feel for, and it takes practice. Solder won't flow onto to a cold pin or pad, you have to apply the iron to the connection itself and then bring the solder to it, don't apply the solder to the iron and then bring that to the connection.
...that's most of the tips I can think of right now... it's late, I need sleep. If I get a board etched successfully, I'll let you know how it goes.
> Third time's the charm.
Hot damn, you are absolutely amazing!
How much will I have to pay you to help me be able to make these in bulk?
I've been working with Sullins Corp for a few weeks now, they finally got back that they weren't interested in making a custom adapter, so that's out, and this is my only shot.
Okay ... so starting off, I can buy the Samtec connectors and a dremel tool, but how did you get the PCB with the traces to each pin like that? And what's your part# for the IDC male header? Guessing it's just a 40-row cut to size ... I hear those things snap easily.
Would love to know all the parts and tools you're using to do the surface mount soldering as well. But anyway yeah, I'll buy whatever's needed so I can put these together.
The only issue I see with this connector is, as I said before, it isn't very deep. You can kind of see by the photo, but the PCB kind of goes into the port at an angle because the slot isn't deep enough to go in flush. I'm not sure if that will affect the connection. I would suggest using surface mount IDC pins like
these to help this fact (the through-hole pins make the issue worse because they make a gap between the bottom of the console and the PCB). I did some continuity testing to make sure that the pins on the IDC connector were making connections into the console, but I don't have a pinout for the expansion connector to know where inside the console to test continuity. A handful of the pins registered continuity to the game cart slot, so I took that as a good sign, but I wasn't sure how many of the pins were *supposed* to be connected, so I couldn't tell you whether or not there were issues. I did confirm that the connections are good between the IDC pins and the socket contacts. I also confirmed that there are no shorts between IDC pins when it's plugged in (i.e. the socket is properly centered so the socket connectors aren't bridging multiple pins). Just curious, but how many of these are you realistically looking to build? If you don't want to invest in the money, time, and effort to get set up for surface-mount soldering, I'd be willing to do assembly for you as long as it wasn't a huge quantity. With professionally fabricated PCB's, parts would probably run about $10 a unit for the design I used here. If you want something different, let me know and I can give you a cost estimate. As far as assembly goes, cutting the connectors down to size requires the most time out of anything, and soldering will be pretty simple on professional PCB's, since they have soldermask.
Actually, if I use surface-mount IDC pins, I can alleviate the board-propping issue by fitting the entire board inside the recess created by the removable cover. That should be much more reliable, but it requires a 2-layer board (which isn't a problem, I just can't reliably etch one myself...).
Something like this:
Okay, I have an order for a half dozen of the Samtec's on their way.
> I don't have a pinout for the expansion connector to know where inside the console to test continuity
Oh, just take the SNES board out of its case, you can see the solder points for all the pins clearly on the other side of the board.
The male connector was soldered on through-hole style.
> Just curious, but how many of these are you realistically looking to build?
Initially, I wanted 500. But the cost of $5 per connector is too high for that. So I'd say 100. But of course, I need something actually working first, so probably 20-25 for now until we have the actual comm board between the PC and SNES working.
> soldering will be pretty simple on professional PCB's, since they have soldermask.
Not sure what that means, but I assume it means it's 'pre-tinned', so all we have to do is heat the pins with a dry iron and move on?
It'd be even cooler if we could stick these things in a toaster oven to reflow the solder
> Actually, if I use surface-mount IDC pins, I can alleviate the board-propping issue by fitting the entire board inside the recess created by the removable cover. That should be much more reliable, but it requires a 2-layer board (which isn't a problem, I just can't reliably etch one myself...)
Sounds good, let's do it. Looks like we want a 4cm x 1.5cm (max 5cm x 1.5cm) board, surface mount on each side.
If you can do the EAGLE map or whatever, I'll put in the order for 50 or so boards to start us out. Just be careful with the placement of the Samtec connector, that has to be perfect for it to fit.
I know of a good place to get prototype PCB's in low quantities (1-3), so how about this: I'll go ahead and order myself the parts to build one, and once I'm happy with it, I'll send it to you so you can test it out and see if you're happy with the design. At that point, once we're both satisfied, then we can figure out the logistics of a larger order. With this design, the connector should sit pretty snugly in the recess, and the board should be close to flush with the bottom of the SNES case, so when you start looking into designing actual add-ons for this, all you'll need to do is have
one of these on your add-on.
byuu wrote:
Sounds good, let's do it. Looks like we want a 4cm x 1.5cm (max 5cm x 1.5cm) board, surface mount on each side.
Measuring the full gap with calipers, it looks like at maximum you could fit a 17mm×65mm 2mm-thick PCB in there, with a 2mm radius quarter-circle for the corners. Obviously smaller (like you said) reduces chance for error.
Continuity looks good, but hold off ordering any more connectors for now, I want to get a sample of the -01 thickness to compare. The -02 makes a good solid connection, so don't worry about the ones you've already ordered, but I think the -01 might be a better fit. Also, I have calipers, so I can measure the recess just fine. I don't want to fit it exactly, or it would be a pain to remove. Besides, PCB's are sold by area, so it doesn't make sense to add a bunch of unnecessary empty space to the board. I want to add enough of a tail to one side that our indicates a "right" way to put it in, but I don't want to have it exactly the same size as the recess. I'll mark pin numbers on the silkscreen layer to match the pin numbers on the SNES PCB silkscreen.
I'm a little confused as to what's going on now. First talk of a controller port serial communication setup and now expansion port connectors. This is meant for debugging stuff? What is the expansion port meant for? MSU-1 as a separate device finally?
Sorry if it should be obvious, the thread was split so it's kind of odd.
We were originally talking about creating a hardware serial debugger that communicated through the controller port. Then, when I came across a connector compatible with the expansion port, we got sidetracked. Eventually, the idea is to take the hardware debugger idea and use the expansion port instead of the controller port, since the expansion port gives you a full 8-bit data bus, rather than the 1-bit serial bus coming out of the controller port. So it's all related to the original hardware debugger project, it just took a leap in a different direction when I found that connector, since byuu's apparently been looking for one for a very long time... Also, the way this adapter works, you could use it to develop any kind of expansion port device that you like, not just the hardware debugger we've been discussing. From what I've read, the MSU-1 can't be an expansion device anymore, but that doesn't stop someone from creating their own device along that same idea...
Anyway, I drew up some photos of where to cut the Samtec connectors to get them to fit properly. Notice that you actually cut out 30 pins and use the the divider between pins 29+30/31+32 as the outer edge of the final connector. You shouldn't have to remove pins 29 and 30, but I did (just ripped them out with a pair of needlenosed pliers). I would probably just leave them in, since they don't actually come out cleanly. In the first photo, the top connector is the finished one that I have mounted on the board, held next to an uncut one to show where each cut occurs.
I just placed an order for prototype PCB's, should take a month or so to get them. By then, I should have the Samtec -01 samples and some surface-mount IDC headers as well, so I should be able to assemble the prototypes as soon as the boards arrive.
Whew, a month lead time on prototype PCBs? o.O
I can wait, but looks like I won't be dumping my US SNES carts any quicker, heh.
Hopefully I can rig up my Samtecs somehow just to start prototyping. The Teensy won't even handle 2.68MB/s bandwidth, but as long as I use one pin of the data bus for now, it should be fine for beating the controller port speeds.
You can get PCB's quicker, but it costs more. I went with batch PCB service since I only wanted 3 for prototypes, which is why it takes so long. If you want one sooner, I can try to etch one myself... I've been meaning to try a 2-layer board for awhile now...
Well... I was bored today, so what the heck.
I don't have any surface-mount IDC pins, but I can at least attest to the fact that continuity is good, so the vias worked... egads, DIY vias suck :S
It is a thing of beauty
How are you getting these parts so fast, by the way? My order hasn't even shipped yet >.>
I'm really happy with this, how might I go about placing an order for 100 of the PCBs?
More than I'll need, but what the heck, at 50 cents a piece I don't see why not.
I'd say we should go for red on the color of the board. Like you said, give it a little flair.
Thank you again for putting the time into doing this, I greatly appreciate it. It's going to be a huge help for my dev efforts to have such a fast uplink.
As soon as I get my initial 3 prototype boards back to confirm that I like the placement and board outline/size, I'll send you the gerber files and you can order them
here. For 100 boards with red soldermask, you're looking at $0.85/pcb for HASL finish (solder-coated pads) or $1.45/pcb for ENIG (gold-plated pads). I typically prefer ENIG, but I've never done a large run of PCB's where it cost more than $10 or so to get ENIG, so it might not be worth it to you. My parts so far have all been free samples direct from Samtec, so that's how I got them so quickly, but I'm surprised yours are taking THAT long. I'd contact the distributor you purchased from and see if there's some issue holding up your order. I've figured a few things out regarding cutting up the Samtec connectors that should make the process far less annoying than I'd feared, so that's nice too...
> As soon as I get my initial 3 prototype boards back
Oh I thought that was your prototype board.
So that's your hand-made one, it looks great assembled!
And yeah at that price, maybe we'll go with 50 for now instead.
byuu wrote:
> As soon as I get my initial 3 prototype boards back
Oh I thought that was your prototype board.
So that's your hand-made one, it looks great assembled!
Yeah, my bad on the ambiguity. Yes, this was a hand-etched board. The reason I want to wait on the boards I ordered is that they will actually be cut to the size I specified and placed exactly the way the final product will be. Basically, those will show me how the boards actually fit in the case recess, whereas the handmade one is just roughly cut to the size of the part footprints. Once I see how that all works out, then I'll call the design final and ship you the necessary files. If you want to talk logistics and pricing, maybe we should have that discussion in PM, since that's not really relevant to the discussion of the project.
byuu wrote:
And yeah at that price, maybe we'll go with 50 for now instead.
Any reason for so many? Large fixed overhead when ordering a batch of any size? Given that they're currently just going to be used for research by you and perhaps a few others, it'll be a while until you'd need the rest, and by then, you might have come up with some improvements to the board.
Speaking of improvements, the -01 sockets fit better. The -02's are fine, so don't worry about the ones you already ordered, but the -01 is a much tighter fit. I initially thought it was too narrow, which was why I went with the -02 in the first place, but definitely go with -01 in the future. Other than that, there really isn't anything to improve, as this is just a simple physical adapter, and any devices built to take advantage of it need to be on a separate board due to clearance issues that would manifest if you just tried building a board with the card edge socket directly on it.
> Any reason for so many?
I'd like to be able to sell them to people who want to prototype cool stuff to do with the expansion port.
> Speaking of improvements, the -01 sockets fit better.
Okay, cool. Thanks for testing both. I'll just use the -02s for practice surface-mount soldering and dremeling then.
Yay! My six ~2" connectors arrived today ... in this box:
... yeah.
Anyway, man, I have no ability currently to solder to these incredibly tiny surface mount pins o.O
Will have to wait on the PCBs. Hopefully it's easier that way.
Very happy with your refilling side work. I definitely want to get all the same parts you have to reproduce this
Just got this email today
maaaan... I was going to breadboard one of the serial adapters tonight, but the Arduino folks decided that the USART clock pin would be the perfect choice for the Tx LED, meaning both my Leonardo and my SparkFun Pro Micro are useless here
Looks like you guys are not alone in the quest to make expansion port adapters.
Here is this guys attempt with the NES expansion port.
Ok, so I really don't know why I didn't think of this before, but why are we still using USART for the expansion port design? From what I understand you originally settled on USART because it was more stable at higher speeds than UART, and because a USB<->USART conversion allowed you to communicate via a virtual COM port, using standard serial communication. This made sense for the 1-bit serial interface in the original controller port design. However, the expansion port is a parallel interface, so you're unnecessarily converting USB<->Serial<->Parallel. So why not just go straight USB<->Parallel? I'm not fully familiar with the specifics, but isn't there a standard parallel equivalent of a serial COM port? I mean, obviously I know about parallel ports, but what is the standard software interface over a parallel port? In particular, going back to the FTDI chip idea, the
FT232H supports a synchronous parallel mode that they call synchronous FIFO, which apparently supports up to 40MByte/s over USB2.0. I don't know how that appears to the PC, or what would be involved in communicating with a synchronous FIFO device, but it might be worth looking into in order to get the full 8-bit parallel interface and high-speed USB2.0 speeds.
Serial simplified interfacing, as myself and byuu aren't EE experts. I started out with just a level shifter to RS-232 over controller port, and we added the Teensy to upgrade it. That FT232H looks promising, with its 8-bit synchronous interface. Please someone look at that and determine whether it could be hooked to the SNES expansion port!
Yes, it could be hooked up to the expansion port. I understand your use of serial to simplify the computer interface. My question was whether or not there was a similar, standard, simple interface on the PC side for parallel communication analagous to a "parallel COM port". I'm not sure what the synchronous parallel FIFO looks like on the PC side or how you would go about talking to it. I know byuu didn't like the idea of having to compile against the FTDI D2XX drivers, but it really does look like a nice chip. Reading through the datasheet, I've already confirmed that the I/O's are 5v tolerant, so that's always nice. In addition to the FT245 parallel FIFO interface, there's also the
FT1248 interface, so I'm not sure which is preferable...
Things in the USB communications device class still present a connection that is conceptually bitwise serial, even if it never exists as encapsulated RS232 on the wire. And, I believe, these USB CDC devices can exist in a variant that needs no drivers written for windows (or less surprisingly linux)
I suppose there's something to be said for being able to act like a mass storage class like a Retrode, but that's awfully wish-list-y.
Mass storage wouldn't be able to support real-time data streaming, like for debugging, or for emulating an expansion device on the PC and interfacing it with the console.
Indeed, it has to be a bidirectional protocol.
I don't like the idea of requiring extra drivers on Linux and Windows, but if it's the difference between having a 2.68MB/s expansion port interface, and a 30KB/s controller port interface, I'll live =)
By the way, did the fabbed PCBs arrive? Ready to place my order for a batch of them :D
Presuming of course the -1 and -2 are the same spacing for the surface mount portion.
The PCB's were supposed to get here yesterday, but it seems there was a mix-up in the shipping, and they got send somewhere in California instead >.< Yes, the footprints should be the same for both. The -2 has the rows spaced a bit farther apart, but I made the footprints longer than they needed to be, so the same footprint should work for both.
Update: Yeah, I just confirmed they got sent to the wrong address. Since there's no way of knowing when (if ever) they'll find their way to me, Laen just added a new order to this Friday's panel. Judging from the turnaround time on the last order, I expect them to get here around December 3rd. Unless I can get USPS to deliver the original package to me, I suppose we'll just have to wait.
Hmm, well honestly, it's not that big of a risk/cost. Just two connector points, and if it doesn't work out, it doesn't work out. Worst case, it's surface-mount soldering practice.
I'm willing to go ahead and order 50 production boards. What's the best way to do that? Color's not too important. Red would be cool, but green is also fine.
Also, I've never really used a dremel. What's the best bit for filing down the Samtec, and how did you rebuild the side?
I've got six of them sitting here, so it'd be fun to see if I can replicate your card edge connector.
If you buy a Dremel tool, it should come with an assortment of tips. Here are the 3 that I use (note that there are a lot of similar tips, you don't need *exactly* these, just use the same *kind* of tip, since these are what I've found to work best):
Cutting head (for the initial cut):
http://www.dremel.com/en-us/Accessories ... px?pid=426Sanding drum (for initial, course sanding when you're taking off a lot of material):
http://www.dremel.com/en-us/Accessories ... px?pid=407Grinding stone (works well for the final smooth sanding):
http://www.dremel.com/en-us/Accessories ... px?pid=932First of all, start from one end of the socket and count 14 rows. Looking at the bottom of the socket, take a pair of needle-nosed pliers and carefully pull the pins out of rows 15 and 16 (it's easy to break the pins and make them unable to be pulled out if you're not careful). Then, take the cutting head and cut right down the middle of row 16, being careful to leave row 15 fully intact. Use the sanding drum to sand the edge down, still leaving row 15 intact, including the divider between rows 15 and 16. That divider will become the outer edge of the final socket. Use the grinding stone to get a nice, smooth, flat surface.
If you want to rebuild the cart edge, get something the same thickness as the card edge and cut it to be just slightly wider than the expansion port's card edge. Something non-stick is good. I used an old PCB that failed to etch properly. You want to be able to insert it into the socket and have it fit snugly, and it should be wide enough that the edge is about right in the middle of row 15. This will ensure that the newly filled endcap won't flow into the rest of the socket as you make it. Now, to fill in the gap, the secret ingredient is...
...hot glue! I find high temp works better than low or "all-temp" glue. Press the glue gun solidly against the side of the socket and use pressure to fill the socket. Don't try to fill it from the top. Keep adding glue until it overflows out the top of the socket (make sure that the overflow completely fills the socket), then pull the glue gun away and add a bit of glue to the side of the socket. Allow the glue to cool before removing the card (or whatever you placed in the socket). I find that about 20 seconds in the freezer is usually sufficient. You can also try coating the edge of the card with a non-stick coating like silicone (or butter
). Then, just Dremel the glue down flush with the connector. The glue tends to gum up the Dremel tips, so try to keep the glue as cold as possible (throw it back in the freezer for a bit, and take breaks, the friction of the Dremel heats it back up). Also, you'll probably have to scrape off the Dremel tips after a bit if they get too bad (the plastic from the sockets will do it too). Also, the Dremel tool should come with a rectangular gray stone, which is meant for cleaning and shaping the grinding stone, so you can use that (I wouldn't suggest using it on the sanding drum though...)
The -01 connectors are black, so I'm working on getting black hot glue. I know you can buy it online, but for now, I'm playing around with dyeing my own.
I'd really like to get the PCB's in before we place a large order, but if you're anxious to get your hands on one, I could send you my hand-etched one. I'm not using it right now, and once I get these PCB's in, I'll just be able to build another one, so it's no big loss to me.
So, the PCB's finally got delivered... to Lake Oswego >.< However, I just so happen to have a friend that lives 5 minutes away and is awesome enough to agree to go knock on a stranger's door and ask if they have my package. It's crazy, but it just might work...
> if you're anxious to get your hands on one, I could send you my hand-etched one. I'm not using it right now, and once I get these PCB's in, I'll just be able to build another one, so it's no big loss to me.
Hmm, actually ... if you're up for it and don't mind, I think that could work, yes. I really appreciate the offer.
Having one to use for now would allow me to start on the breadboarding work. I can pick up the 28-pin board headers, ribbon cable, etc and try and get something simple up and going with the Teensy.
Obviously, the Teensy won't be capable of handling the full bandwidth. But it'll be interesting to see how far beyond 40KB/s we can push it. My guess is anything we can possibly do without using DMA will be fast enough. Even a block move will knock things way below the Teensy's limit.
PM your shipping address and I'll send it on Monday. Also, looks like the Lake Oswego delivery may have been a return to sender, so I may be able to get my hands on the original order after all. I shot an email off to the guy to see if he got them back and to see about getting them shipped to me again.
byuu, I replied to your PM, but I'm not sure if it sent or not. If you didn't get it, do me a favor and chime in over at this thread
viewtopic.php?f=13&t=9498
Hi, received PM. Thanks so much for sending!
And yeah wow, that PCB looks absolutely fantastically amazing o.O
Really appreciate all your help with this, been trying to get this done for several years now with no luck until now.
After Thanksgiving is fine, ordering immediately probably won't have any work started until after that anyway.
Yeah, I'm impressed that something, in quantity, has finally materialized.
I just had a few other ideas for the edge filler that I'll play around with when I get the chance. Hot glue works, but it is still very flexible once it has cooled, unlike the very rigid plastic that makes up the rest of the socket. I can think of a few other options that should cure much more solidly, I just need to figure out how to properly dye them without compromising the curing process.