After discussing with David Rowe, I set forth to design an open, low-cost USB FXS board. After David’s advice, I also found that a PIC microprocessor would be the best choice for this, both because PICs are very versatile devices with built-in USB functionality and because they are cheap enough.
Before going on, I must confess that I am not an electronics professional. My field is totally different (I am a PhD-level computer and network engineer) and my only experience with electronics is this of an experienced enthusiast. Never before had I undertaken a task so difficult as this. However, I had confidence in my ability to understand and combine bits and pieces from other people’s designs and I found the idea interesting enough. So I said, what the heck, maybe I can do it after all.
That having been said, my first task was to decide the right PIC to use. Parameters: it must have USB functionality and it must be cheap. However, I needed to have a development environment to, ahem, develop (read: spend hours and hours of debugging) the required firmware for the PIC, right? How would I do this?
I started from the ATMega project that I had looked into before proposing it to David. I had proposed it because I thought it would be best to be able to use the USB as a bootloader. So I googled a while, and came up with this design by nuxie1 (BTW, the winner of a recent hackaday design challenge competition).
Nuxie1’s board was easy, I could produce it myself and I could learn a little PIC internals before going into my own design. And this board is based on a PIC2450/2550, which has USB! And, most important of all, Nuxie1 supplied a modified boot loader based on Microchip’s own boot loader for their development board, so I could well use the USB connection to upload and endless series of (my) firmware versions onto the PIC! Thanks Nuxie1, this is exactly what I was looking for!
Nuxie1’s PIC board, assembled
After etching the PCB and soldering everything as required, I needed to somehow get the bootloader loaded into the PIC. Even the programmer for that had to be open, so I used a design named FD-ART2003 (again googled) by foxdelta, a PIC programmer that uses the parallel port of the PC to power the PIC, plus a little program called Winpic800v3.59. I would use these to program my board’s PIC with the initial USB boot loader firmware provided by nuxie1.
When programming the PIC, I ignored an unimportant little error message generated by the Winpic program (a little something about the LVP configuration setting). As it turned out, I had better not overlook this message — but this is covered in my next post!