Thursday, October 8, 2009

Standalone MON08 Device Programmer

Abraham Lincoln once said, "Give me six hours to chop down a tree and I will spend the first four sharpening the axe." In that spirit, I spend a lot of time building and refining the tools I use. So far, I've never regretted a minute of that effort, regardless of how much of a pain it was at the time.

My packing bench automation system is probably the best example of that, and I'll devote a post to it some other time, after I've added a few more of the features I've got on my list. But here's what I've been working on for a good portion of the past week:

It's a prototype of a standalone device programmer for Freescale HC08 microcontrollers, like those used in the OpenTracker+ and Tracker2. It's shown here with anMC908JL16 processor for the OT1+, which is presently the only thing it's set up to work with.

The hardware required to connect to an HC08 is actually very simple. I built my first programmer (way back before the OpenTracker 1) with parts I found in my junk box. I later upgraded to a board I bought from an outfit in the Czech Republic, and eventually to a USB pod from P&E Micro, of which I now have roughly a double handful thanks to package deals on development kits, freebies from Freescale, seminar handouts, and so on.

But all of those have required the use of P&E's programming software. Fortunately it's available for free, but they don't make it easy to find, and more importantly, they don't want you using it for automated production programming. For that, you'll need one of their $500 or $900 gadgets, or a nicer ($1200 + programming algorithms) system from one of their competitors.

I've never bothered, because with some creative use of a keyboard and mouse scripting tool I've been able to reduce the programming process to a single keystroke. Programming takes 30 or 40 seconds, much of which is avoidable overhead caused by P&E's software. It's a good job for a temp, and when the kids are out of school for the summer I can put them to work building up a stockpile of programmed MCUs.

Still, it's far from perfect. It could be much faster, and on occasion it'll choke and require some attention from a trained operator to get going again. More importantly, it requires a PC and it isn't something I can easily send off to a contract manufacturer. I'm making a major effort right now to reduce all of the post-assembly programming and testing operations to automated, standalone processes that can be easily run by anyone with minimal training - i.e., put the board in the programming fixture, press a button, and get a pass/fail result and maybe a test result printout on receipt tape.

Since I really need several of these things, and the $500 units aren't exactly what I want anyway, I decided to spend some time doing it myself. It's meant a few days at my workbench muttering and cursing - the programming process requires having the target processor boot a built-in program in ROM, then communicating with that program to load another program into RAM (which I had to write), starting that second program, and then communicating with it to actually do the erasing, programming, and verifying. And the one I/O pin you're guaranteed to have access to is not connected to any serial hardware, so it's all bit-banged. That tiny program, roughly 200 bytes, required several hours of coding and debugging. But the worst is over, and it's up and running now.

The unit shown above programs and verifies an OT1+ MCU in roughly 8 seconds. Pop the MCU in the socket, hit the button, and wait for the 'done' message. Lather, rinse, and repeat. P&E's "high speed" algorithm takes 20 seconds just to do the program and verify operation, not counting algorithm loading and user interface overhead. I haven't put any real effort into speeding up the process yet, but I think I can cut it down to 4 or 5 seconds without much trouble.

The code is still immature and doesn't elegantly handle error conditions (it just stops and displays a message, with no automatic retries or anything) but I've already added one useful feature I haven't seen elsewhere - it automatically detects when you've removed the target MCU, so it can clear the 'done' message and avoid any possible confusion when the operator gets distracted and forgets whether the chip in the socket is really done or if they just haven't pressed the button yet.

Total cash outlay for this prototype was roughly $10, including the perfboard (I hate FR-2, but the FR-4 perfboards were $30 and weren't the right size), button, ribbon cable, and connectors. Everything else I already had on hand. The green PCB is an AW-PROTO board, one of several dozen I had made for in-house prototyping of circuits build around the MC9S08AW series MCUs. I've got a big pile of those 16x2 backlit LCD modules, probably from when Electronic Goldmine or someone had a clearance sale. I actually got it mounted upside down, but I decided it doesn't really matter which way the board faces.

When the device is more mature, I may offer it as a commercial product. Might not be worth the effort required to document and support it, though. But in any case, I ought to be able to distribute a few to my overseas resellers to handle re-flashing of corrupted OT1+ and Tracker2 processors, and I'm looking forward to integrating it with the new automated OT2m test fixture that's in the works now.

Monday, September 21, 2009

OT2m Version 2.0

Pictured above is the first hand-assembled OT2m prototype with the new version 2.0 PCB. It's working well, but I think I'm going to make one or two small tweaks before it enters production.

The most obvious difference between version 2.0 and version 1.0 is that the demodulator is a CML Micro MX614 instead of the NJM2211 from NJR. Getting consistently good performance from the 2211 has been a pain. The switch to the MX614 is going to mean a cost increase of at least a few bucks, but I think it'll be worth it for the improved RX performance and decreased testing and tuning burden.

Less obvious is the addition of ESD suppressors on all external connections. I have yet to attack it with my ESD zapper, but it should be considerably more resistant to static discharge than the previous version. I won't guarantee that it'll survive a nuclear EMP, but it should tolerate some rough handling. The ESD suppressors also introduce some capacitance that should help improve RFI immunity, though that's never really been a problem with the 1.0 board and its existing inductive filtering.

The power supply section's be rearranged a bit and has proper reverse-bias protection now, that also protects the VN920 solid state relay - correcting an oversight in the last version that resulted in a couple of accidental magic smoke releases. D11 is undersized in this picture because I forgot to order the proper part.

The solder jumper SJ1 is there to bypass the reverse bias protection. This is in case you want to power the unit through the high-current pads and still want the supply voltage measurement to work.

What you can't see under that pretty black solder mask is that the board routing has been completely redone, mostly by hand. Eagle PCB's new follow-me router makes it much easier to lay out traces manually and resulted in a better arrangement of components, especially in the sensitive audio input section. The most critical traces are 14 mils wide there (version 1.0 was mostly 8 mil traces) and only a few of the shorter traces are under 10 mils anywhere.

This batch of boards was also made with twice as much copper - 2 oz per square foot, versus 1 oz for the version 1.0 production boards. This means more power handling capability in the solid state relay section in particular. The prototypes were done with a lead-free HASL finish, but I've had the production boards quoted with electroless nickel / immersion gold like the OT1+ boards.

The only other real change in this version is that the (never used) FRAM expansion has been removed, and those four I/O lines have been rerouted to the MON08 header at the front of the board. This should make it easier to wire up a keypad to go with an LCD display if I can ever find the time to finish the coding for the user interface.

Absolutely no firmware changes are required for the new board. Transmit audio is still generated by the processor, not the modem IC so it's still capable of 300 baud or PSK31 output. There's also some extra filtering on the audio output.

Decode performance is quite satisfactory. With the WA8LMF Track 2 test, it decodes 987 packets. The best I've heard reported for any other TNC is 970 for the uTNT. My KPC-3 scored 967. The highest ever recorded, to my knowledge, was 991 for an early Tracker2 connected to the output of the same KPC-3's TCM3105 chip. I'd have considered the TCM3105 for the new T2 board, but they've been discontinued for years.

It looks like the OT2m is going to be out of stock for a little while. The existing stock is enough for maybe two weeks at this rate, and it's going to take at least twice that long to finish testing the new board, make some minor tweaks, source all of the new parts, and get production started - which means new pick and place programming and a new solder stencil. I think six to eight weeks is more realistic.

I'm also going to have to have more enclosures produced, which doesn't usually take that long, but I've been a little unhappy with the consistency of the last batch or two from my current supplier. I've got a small pile of case pieces that just won't fit with the others. It wastes parts, and wastes time when you get an out-of-spec cover or end panel and have to disassemble it again.

Thursday, April 23, 2009


Just my luck... Car accident exactly on the city line. Police and CHP are still trying to sort it out. No one hurt, thankfully. Car's going to be out of commission for a while, though.

Friday, March 6, 2009

Vacuum Molding

I picked up a vacuum former the other day for under a hundred bucks, figured I'd see if I could put it to use making radomes and such, or at least to prototype packaging. I ordered a bunch of different plastics from McMaster-Carr, and Charlie and I spent the evening molding shapes out HDPE, ABS, PETG, Acrylic, and (unsuccessfully) PVC. Haven't tried the polycarbonate yet. I'll post more of my results later, but shown above is the most functional thing we've come up with so far.

We used Jeff (the same scarab carving that served as a test subject for the MDX-20's piezo scanner, 3-axis milling, and urethane casting) to make a mold in 1/32" FDA-approved HDPE and then mixed up a batch of Jello Jigglers and cast a Jello Jeff. Shown above are the original, vacuum-formed mold, and Jello casting. Jeff's got a bit of an undercut around the base, so de-molding the Jello is tricky. Still, it worked reasonably well.

Tuesday, February 3, 2009


Found this guy on my office floor this morning. I hate spiders. Didn't squish him, though. Kept him around long enough to check him out under the microscope and then dumped him outside. The camera on the new boom microscope can't get any lower magnification than this - I had it on the 1x objective and 0.5x reducer. Works well for PCB inspection and assembly, though.

Working on commercial tracker stuff today, and trying some tweaks to my SSTV gadget to try to make it work reliably with the new camera modules. They're driving me nuts, and I think I may have destroyed at least one of them.

Monday, January 5, 2009

Finding a New Bank

When I set up my business checking account back in '04, I decided to go with a local bank - Mid-State Bank & Trust - on the theory that they'd be more likely to provide decent customer service. I'd had bad experiences in the past with both Bank of America and Wells Fargo, and I'd vowed that Wells Fargo in particular would never get another dime of my business. (The reasons are numerous - look up their class action lawsuits and take your pick.)

Some months ago Mid-State was acquired by Rabobank, and I'd hoped that being part of a big multinational bank might improve some of their online services; the website had always been terribly clunky and difficult to use. Alas, it's gotten far worse since then. I can no longer make payments on my line of credit, the system won't work with Firefox, and doing the most trivial of tasks is frustrating.

Worse, their service has really gone downhill. I'm currently missing a wire transfer and despite promises to track it down, I've heard nothing. It's a common pattern - call them up with a problem, they promise to look into it, and then nothing. I'm also missing mailings from them, important stuff like a routing number change that ended in me having to destroy 500 unused checks. And every time I send a wire transfer, the confirmation email comes from (and the return receipt goes to) a domain held by a squatter. Rabobank won't acknowledge the problem - like maybe they don't think that could be a massive invitation for phishing.

So today I decided to contact a few big banks with the same simple set of questions - can I make international wire transfers through your online banking system, can they be in foreign currencies, and what's the transfer fee? How the banks respond to the message (sent through their online contact form) will be as important as the actual answer - I'm tired of dealing with a bank that won't get anything done unless you park yourself physically in a branch.

I'll update this as it progresses, but here are the results so far. All questions were submitted at around 10:00 AM on Monday, January 5.

Union Bank of California
Immediate auto-confirmation by email promising response in 1 business day.

Received an email at 2:30 PM stating that online wire transfers are possible and to call a representative.

Called 800 number at 4:10 PM, got a recording (in English and Japanese) telling me to leave a message for a call-back within one day. Left a message.

Got a call back at 10:00 AM the next day seeking more information to direct my call. Was promised another return call within 30 minutes. Nothing yet, two days later.

Got a response at 5:54 PM on Wednesday. Looks like a form letter pieced together from several canned paragraphs, not all of them quite relevant to what I asked. Wire transfers must be made from a bank; no response to the fee inquiry.

Email response came in on Wednesday at 7:09 PM.

Called toll-free number (it has a 'Z' in it!) and spoke to a very friendly rep after navigating a reasonably short voice menu. Found out that they offer $15 wires (incoming and outgoing) and several currencies, and that they have an option for 5 free transfers a month. Also found out that I can't open an account because there's no branch close enough and they have to make a site visit. I was very pleased with the customer service, but it unfortunately it does me absolutely no good!

Wells Fargo
Got an email response at 11:53 AM on Tuesday. Wire transfers are available through their Commercial Electronic Office. Got a URL (no fees listed that I can find, mostly fluff and a lot of clicking to get a few nuggets of information) and a phone number.

Called the number provided and got a human after a short recorded announcement. I thought this was a good sign at first, but then it turned out the number I'd reached was only for password resets and token reassignments. The poor guy was confused and didn't seem to know why that number would have been given to me, but after a couple of minutes of awkward silence while he conferred with his team lead by IM he got me another number to call.

This turned out to be the main catch-all customer service number, which dropped me into a voice menu system. It kept insisting on an account number to speak to a banker, but after a few tries it gave up and transferred me anyway.

The next person I spoke to (after a hold of a couple of minutes) couldn't talk to me if I wasn't a customer, and put me on hold for a couple minutes longer while I was transferred to someone who could.

At this point I finally got some questions answered. Wire transfers can be done online for $15 in numerous currencies, and incoming wires are $7.50, but there's a 6-month waiting period before you can enroll. Until then I'd be stuck doing $30 transfers from a branch.

The fees are acceptable and they seem to offer a broad selection of services, but the 6-month delay would be hard to swallow, and what I went through trying to find this out tells me that Wells Fargo is still the same bureaucratic hell that I remember.

Bank of America
1:30 PM - Got a form letter response advising me to call the wire transfer department. Called, got a voice response system. Got to a live operator, was informed there's no online wire transfer option. Outgoing wires are $45, she didn't know incoming rates or currency exchange fees.


Of the 5 banks I contacted, HSBC is the only one that seems to offer any real improvement over Rabobank in terms of fees and customer service. And it's the only one that won't take me on as a customer. Union Bank of California could still redeem themselves by calling back with the information I requested, but I'm not holding out much hope at this point.

I'd be happy to pay travel expenses for an HSBC rep to come up here and make the required site inspection, but alas, I don't think that's going to happen.

Looks like I'm stuck with Rabobank for now, unless another option presents itself.


Things are getting even worse with Rabobank. I submitted a payment yesterday on my business line of credit - used to be you could manage it directly and it worked pretty well. Now, to make a payment, you go to 'Messaging' and select the 'Line of Credit Payment' form letter. Apparently they print that out and enter it manually. Only this time they took the money from the line of credit and put it in checking.

So this morning I started Round 2 of the bank search, and started checking with local banks instead of the big ones:

Santa Lucia Bank
Santa Barbara Bank & Trust
Community Bank of Santa Maria
Heritage Oaks Bank
Mission Community Bank
Los Padres Bank

Only those last two don't have so much as an email address on their website, so I'm going to have to call or visit in person, and I don't think there's much hope of them having online wire transfers if they don't even have email. Community Bank of Santa Maria sent back an out-of-office response, so at least there's one person there with email. When she's in.