Hello fellow freaks! After close to two months hard work during my end-of-year school holidays, i've finally gotten my ButtLoad project to the point where I think it is stable enough for a public beta. By all means try it out but i'd appreciate it if you would post your thoughts, suggestions, requests and bug reports here so I can attend to them.
Firstly, what is ButtLoad? In short, it's a replacement for an AVRISP but with more features. All you need to get it going is a AVRButterfly board, avaliable from our very own Smokey (www.smileymicros.com) or the current AVRFreaks T-Shirt offer. Once loaded, the system's ready to go - no hardware modifications, existing programmers or bootstrap cables to worry about! Since all the changes are in software, all you need to revert your butterfly back into its previous condition is just reload your old firmware.
ButtLoad is a cheap alternative to the more expensive programmers, and is faster to build. Not only that, but it offers more features than the official AVRISP - and you can always use the Butterfly as a development board afterwards!
AVRISP Emulation - works with AVRStudio
Self powered - does not need to be connected to a circuit to interface with AVRStudio
Transparent support for large flash memory AVRs (up to 256KB)
Can store a 256kb HEX file, EEPROM, fuse and lockbytes in non-volatile memory
The last one is what makes ButtLoad so special. Unlike other programmers, ButtLoad allows you to store a complete application into the onboard Dataflash for later retrieval. That means you can program your AVRs without the nessesity of a computer after the initial storage.
Again, I stress this is a BETA release. Not all the features I intend have been implemented. The next major feature will probably be the ability to program Atmel dataflash via SPI in the same way that the system programs AVRs. Because this is a BETA there may (will?) be bugs in the code - this is why I need bug reports. This also means that the code is still "rough" in some places. Those who are afraid of a 16 year-old's awful programming shield your eyes.
A semi-formatted manual is included in the \Support\ directory. This will also be revised for the release of the complete and finished program.
I've created an academy project at http://tinyurl.com/afbad . Please go there for the download.
The maximum speed of the USI system in SPI mode is 115200Hz at 7.3Mhz system clock. Because of this (and compare granularity), BUTTLOAD's maximum ISP speed is 113,427KHz.
If no program is in the storage and a READ command in sent, all 0xFFs will be returned. If the data being read is larger than the loaded data, the extra bytes will also return their dataflash contents (rather than, and not nessesarily, all 0xFF).
A maximum of 10 fuse bytes and 10 lock bytes can be stored in memory at any one time (writing the same fuse overwrites the existing value). If it is attempted to write more than this maximum, the extra bytes will be ignored.
All HEX files must use continuous addresses from 0x0000. HEX file whose addresses are non-linear wil fail to store and program correctly.
IMPORTANT: Ensure that the target AVR's voltage does not exceed 3V at any point in time. Exceeding this maximum will cause permanent damage to your Butterfly. If you wish to program 5V parts, a level converter of some sort is nessesary.
For those without the AVRGCC, or those who's WinAVR component versions are not up to date, a precompiled .HEX file is included. The code is released under the GPL licence for now. You will need the latest AVRLibC to compile. Enjoy!
Finally, everyone say a BIG thankyou to our very own BPar. After I damaged my own Butterfly during development, he stepped in and loaned me his time, effort, equipment and wisdom. I couldn't have finished this without his help.
- Dean :twisted: