Don't use it unless you have a programmer to undo it, this is not final at all!!!!!!
To upgrade bootloaders: 1. Upload ds30Loader-v00.hex with the existing bootloader. 2. Remove the jumper and reset the PIC 3. Download buspirate.hex with the ds 30 loader GUI.
Notes: It currently uses timeout and not jumper, this needs to be fixed. Programs in under 10 seconds with no error messages! Corrects problem on some PICs that can't upgrade at 115200bps. No MODE LED indicator yet. Needs different Bus Pirate firmware compile. Need to examine the memory location to make sure we're getting the most out of the pic, it seems to be located at the second-to-last page. Why??
OpenOCD is a popular open source JTAG utility. Zach Welch, a regular contributor to the project, has offered to help add Bus Pirate support. You can follow the progress in his git repository.
The current plan is to port the excellent work done by the USBPROG project to the Bus Pirate. Here are some tentative goals: * Port the AVR/USB-based microcontroller code from USBPROG to the Bus Pirate. Modify the code to work through the PIC serial port. * Add a Bus Pirate device to OpenOCD based on the existing USBPROG source code. Modify the code to write and read through a serial port. * Add message header, checksum to the existing USBPROG protocol.
Goals: 48 channels of 10bit PWM LED control Ethernet interface up to 120mA per channel LED current set with a single resistor (no individual resistors needed!?!?)
Seeed Studio bought 500 additional PIC24FJ64GA002-SOs that went unused after the Hack a Day Bus Pirate presale. I've been considering various ways to use these chips since they'll be reasonably priced and immediately available.
The design that I'm most interested in working up at the moment is a 48 channel LED controller with an ethernet interface.
The board would use the 24FJ64GA002-SO as the main microcontroller, and an ENC28J60 for the network connection. A 25AA02E48 EEPROM would hold settings and a unique MAC address so multiple boards can share the same network.
The LEDs would be driven by three TI TLC5940s, each with 16 channels of 10bit PWM. The current of the LEDs connected to the TLC5940 is set with a single resistor, ideally this would be done with a digital pot for easy network configuration. This chip is cascadable, so an expansion header would make it possible to stack multiple expansion boards on top of the base.
This design will have a bootloader, but it will be brought to a serial header only. I'll ask seeed to find a cheap USB->serial cable and make the header compatible with that.
Like the #twatch, I'd like to give the board a 'default' demo mode, probably an implementation of the internet-driven daft punk table.
Until now we've called this project by the codename 'SUMP PUMP', because it's a data pump for the open source SUMP logic analyzer client. This name is far to clever though, because SUMP infringes on the name of the original project, and it won't index well in search engines.
We'd like to hear your suggestions for a name for this project. If we choose your name, we'll send you the final hardware for free.
I program with an ICD2, but I started with a self-built JDM, and self-build ICD2 clone. I eventually bought the real-deal ICD2 so I could debug at 3.3volts (PICKIT2 wasn't really a debugger at the time).
Draft SMPS for Bus Pirate PIC programmer. This isn't final, so the license is Creative Commons-BY-SA-NC.
I have a demo firmware that will hold the output at 13volts, but there's still a problem enabling the PNP transistor (VPP out drops to <2volts). It might be my transistor pinout is wrong, or maybe the 1n4148 is a bad switcher, or maybe the whole design is flawed (using the NPN instead of a FET).
I'll do more testing after the web platform project is out the door.
I'm putting together a collection of circuits for the PIC programmer 13volt VPP supply.
I'm going to prototype a charge pump and a boost converter. The boost converter will be able to make lots of voltages, up to hundreds of volts, but I plan to clamp it at <20 with a zener. I'm also going to try making the boost converter with a BC547 transistor instead of a FET, because the PIC is only 3.3volts and most FETS want 5v for full-on.
Used the source that was linked on Hack a Day recently to make a test STK500 compatible AVR programmer firmware for the Bus Pirate. Can connect to AVR studio, but can't program the ATtiny13A in the Christmas card project yet - there may be incompatibilities with the current version of AVRstudio, or maybe something isn't quite right in the firmware port.
Ideally, it would be nice to have all 32 channels of IO that SUMP supports, but if routing is really difficult I don't mind dropping a few.
I think some channels should be left buffer-free. They could be used with <3.3volts IO and with peripherals like a high-speed parallel interface ADC for o-scope functionality.
Speaking of ADC, there should be ENable, clock, power, and ground signals at the IO header if this is supported.
The FT2232 has what they call the MPSSE engine which acts as a JTAG programmer, the FT232RL doesn't have that feature. The FT2232 would be able to program any JTAG device, the challenge is to find a project that already supports the device in question so you don't have to write your own program. URJTAG might support the 28pin AVR chip.
We can use a cheaper USB chip if we include SPI Flash with the design. We would just have to include a JTAG header and use a JTAG programmer to put the SUMP design into the flash before it is sold.
There's been a strong push for USB 2.0 support. I'm not sold on it being a requirement because the SUMP client is UART only, someone would have to add support for whatever proprietary USB device driver, just having a USB 2.0 connection won't make 115200bps go any faster.
However, I thought you used the FTDI chip in bitbang mode to JTAG program. I thought all the FTDI-based JTAG programmers did that. Now I see they use the MPSSE, and it's only on the 2232 (H is the USB 2.0 version). I googled around but couldn't find a simple 232R bitbang JTAG programmer to cannibalize, which seems the ideal option to me.
The 'H' (USB 2.0) version of the 2232 has two MPSSEs, so we could route 2 extra wires for the UART and add high-speed SPI data dumps via USB2.0 in a firmware update (assuming someone made the SUMP client compatible as well). Probably don't actually need two units for this, but maybe it's easier to route.
The 2232H looks like a pain to implement. It requires a 3.3volt supply, crystal, and the IO is 3.3volt only (though 5volt tolerant), supply pins everywhere. It's also a 64pin chip, which is a bit more expensive to place and QC. It may also require an external EEPROM for ASYNC uart mode (page 42 of the datasheet), and that will have to be programmed too, but page 20 says it defaults to dual async serial without.
I started preparing a partlist for Seeed based on a 2232H device, but I stopped when I saw all the support parts for the FT2232H. After looking at designs and datasheets, I think we should hash out a few things so we don't have to get an additional quote later.
Maybe we should consider a cheap microcontroller with USB and implement the Xilinx XSFV programmer in the micro for updates? I've implemented an XSFV programmer port for PIC, and I have a Spartan-3 dev-board, I'll test them together. We could make an SPI interface to the FPGA instead of UART, that leaves room for faster IO with updated clients (and might be easier to implement on the FPGA). The whole thing could be upgradable; USB-> bootloader->PIC, USB->XSFV player->FPGA.
USB 2.0 would be sexy, but a full-speed USB PIC has the potential for 12Mbps (I think). If the interface to the FPGA was SPI, then even an emulated serial port interface could be really really fast. A firmware update could implement a different interface (Full-speed, HID, etc) if anyone ever developed a client to support it.
I see few possible design, then: 2232H - USB2.0 connection with on-chip programmer, potential for SPI FPGA data interface via MPSSE2. 232R - USB connection with FPGA bootloader factory programmed, maybe route the IO pins for JTAG programming and hope someone is interested. UART connection to FPGA data. uC - USB microcontroller with XSFV player for FPGA updates, and bootloader for microcontroller updates. SPI connection to FPGA data. (I'd start looking at some of the '18fxxjxx' USB pics, they're 3volts and much cheaper than the 5volt parts)
Here's a picture of our November project, an AVR ATTINY13A-based blinking Christmas card/ornament. It'll be available at Seeed Studio assembled, and as a kit, well under $20 (shipped).
We got the PCBs yesterday and tested the design today. We were expecting regular green PCBs, but got black, which isn't a very traditional Christmas color... Would you prefer red, green, black, or another color?
There's some urgency with this project - in order to deliver anywhere close to the Holidays we have to order a number of these now, instead of the usual preorder. That's a bit daunting. If you have a suggestion for quantity, or would just like to buy one, please let us know so we can get a handle on how many to order.
The how-to article should be out in the next week, maybe on Thursday as usual, but hopefully on Tuesday.