Close

Résumé

A project log for Pavapro - portable AVR programmer

Pavapro is tiny programmer you can bring anywhere. You can load binary file into it and bring/use it as you wish. And a bit more than that.

jaromirsukubajaromir.sukuba 01/03/2015 at 18:250 Comments

When I wrote my first thoughts project log more than month ago, I had no idea whether I'll be able to cram all the functionality into single ATmega328 contained in Trinket pro.

Fortunately, thanks to quite high code density of AVR code, as well as writing in plain C and great fatfs library I used in my project, the goals were met - so I can write the FLASH of target MCU from pavapro, set up fuses, edit and assemble small programs (and acting like small micropower AVR IDE), you can use it as serial terminal, crude e-book reader or you can have shopping list here and look like ultimate nerd in bus or in your favourite coffeehouse. It all took a solid piece of code (more than 3000 lines of code, not counting all the temporary testing code) resulting in full Trinket pro FLASH memory. All what is left is 20 bytes out of 28kBytes of FLASH... the last lines of code were a bit tough, I had to adjust code written previously, to free up a few dozens byte here and there for new code. Looking back, the pavapro seems to be more software than hardware oriented project, though hardware gave me some headaches too. Except of a few design flaws on the PCB (fixed in current HW files on github) and some incorrectly ordered components, I had problems with my 3D printer, that broke one day before deadline. In fact, it was night before deadline, as I'm doing most of the development during the nights, when my 1,5r son is finally sleeping and I have time for my hobbies. It can be seen also on my photo album - I set up for all the photos that didn't get into project logs and the others are in original resolution (I down-scalled all the pictures before uploading, to save your bandwidth when viewing project logs) - where most of the photos are slightly yellow-ish. Meh.

Though, there is a single thing I didn't make until contest deadline: absolutely simplistic and cut-down version of pavapro, without display or proper keyboard - though there is solid ground for building such as device. All necessary routines are already there and working, in fact it is more question of deleting code than writing a code. I had also other plans, for the case when I wouldn't be so FLASH starved - like BASIC or BrainFuck interpreter, I think it would go nicely with the spirit of pavapro.

Now I can consider the project mostly finished and closed, mainly because of the fact the ATmega328 in Trinket pro is full now. I believe some optimization could be used to free a few dozens or even hundreds bytes of memory, nonetheless to bring some more features, more FLASH would be needed. I'm not aware of any 28-pin AVR with more than 32kB of FLASH, compatible with ATmega328p and moving design to ATmega644 or similar would have significant impact on the hardware.

After all, developing pavapro was a great fun, so the meaning of contest was probably fulfilled. I spent nights learning new things, resulting in my own mini-computer, ultimate nerd status symbol and finished open-source project with 100% usage of FOSS development tools.

Discussions