ORDERED NEW INTERFACE PCBS THEN FOUND A BOARD ALREADY ASSEMBLED
The original M600 reader used the external connector hooked to a very funky bit of hardware that I cobbled together quickly from a prototype enclosure for an earlier project. I had re-used the wiring of the connector for the Documation reader, but cut away all the connections to the old logic. I then built the Brian Knittel designed interface using phenolic breadboards and discrete wires.
It was a proof of concept. One that I never replaced with a production quality implementation. After powering it up in my new lab, I found that the link was no longer working properly over the USB line. I suspect that it was an intermittent connection to one of the eight data bit lines from the USB module over to the SX28 microcontroller chip. The symptom was that some valid commands would receive responses indicating that the character was invalid, while others appeared to work.
Rather than debugging this further, given the fragility nature of this work that had long outlived its useful lifetime, I decided to build a PCB based interface that could be put in a small box hooked to the external connector. It would be the same interface I was building into the M1000 reader, but housed externally for the M600.
I hunted in vain for any blank PCB blanks, since fab runs produce a minimum of five boards even when you only need one or two to assemble. Having found no blanks, I dusted off the design files from my PC and shipped them to a PCB fab company to make another five. They should arrive next week and were pretty inexpensive, only $2 plus shipping for the entire batch.
Alas, the day after I bought the new run, I looked in a box and found a completed interface board. I decided to tear apart the funky breadboard interface and build a proper one in a plastic enclosure using the existing cabled external connector. I spent about half a day carefully building this, testing the connections and preparing it for use.
NEW PCB INTERFACE FAILS MUCH LIKE THE PCB INTERFACE IN THE M1000
I fired it up and found that it was failing in a similar way to the one I had built into the M1000. That told me something is wrong independent of the readers. One reality of the interface is that the USB to parallel module specified by Brian was long out of production and unavailable, causing me to make use of seemingly compatible alternatives.
In fact the first module I used, the one that was hooked to the funky breadboard implementation, was truly compatible. It had worked properly for many years. That successful substitute is itself no longer available, so that the PCB based interfaces made use of a third type of USB module. Neither of which seems to be working properly, although the evidence is muddied as I check out the reader with some hardware flaws of its own.
I looked closely at the original and my properly working modules, noticing that the signal to write data out over USB is a normal logic sense, make a high pulse to write and return to low value otherwise. Peering at my new USB modules, I see that they are marked #WR, implying that the write signal is inverted logic. It should normally sit high with a pulse down to low to cause a write.
If these markings are indeed correct with the two working modules different from the new nonworking modules, then I have found my smoking gun. This would make the module latch in the data byte at the wrong time, likely before it is even set up by the microcontroller. That matches the all zero status I was seeing from the M1000 and the bits not changing as the reader state changes.
It appears I would need to invert the WR signal, which fortunately I can do with moderate rework since my PCB has a quad NAND (open collector) IC installed with two of the gates unused. I need only scratch off the trace holding one input high, break the trace between SX28 and USB module for the WR line, then tack wires from SX28 WR to the input of the gate and from the output of the gate to the USB module #WR pin.
I will do this with one of my boards and verify that it works before I convert the other one, but I am hopeful that this will give me good functionality.
BAD IC FOUND IN M1000 AND REPLACED
I found some output signals from the M1000 were not assuming valid voltage levels at the connector. After some debugging, I found that a chip that drives these was malfunctioning. It was a 7417 non inverting open collector buffer in a PDIP package. I didn't have any spares and placed an order from Digikey for a few.
Later that day I did some googling and found a surplus electronics component operation nearby in Palm Bay Florida - MRAM Surplus. It takes a bit of digging to find the part, similar to the old Weird Stuff in Sunnyvale California for those familiar with digging through cardboard bins with poor markings. I did, however, find two 7417 chips which allowed me to replace the IC as soon as I got back to the workshop.
No comments:
Post a Comment