FabISP ProgPro is a project to connect FabISP-programmer with a professional programming environment of Atmel Corporation: Atmel Studio. Not only Atmel Studio is de facto standard integrated development environment in industry for AVR MCUs and has the latest compiler toolchain, but it also has a lot of helpful features to learn embedded programming. It has an easy to use simulator for the debugging, straight links to the datasheets and original Atmel libraries with context-sensitive hints on parameters and functions supported by the framework.

Environment supports natively Assembly, C and C++. Framework includes functionalities such as touch screen and wireless networking. Arduino libraries can be used with a plugin to connect Arduino environment. The free version of the plugin has all the necessary functions including the serial terminal and burning the bootloader.

Step 1

External Tool

Step one is to make a tutorial of programming with the external tool. All the codes can be written on Atmel Studio, compiled with the Atmel toolchain and flashed to the MCU from Atmel Studio, using AVRDude configured as external tool and FabISP-programmer. See the link: http://fabacademy.org/archives/2015/eu/students/ylioja.jani/htm/week11.htm, third paragraph.

External tool works beautifully except for two things. First, command parameters to the external tool must be manually adjusted each time the device ID of the MCU changes. And second, there is no illustrative and easy way to program the fuses. The fuses can be programmed on command line and some of them, a few clock options, can be accessed by burning the bootloader with Arduino plugin. Also, programming the fuses from .elf might be possible in principle, but it's not practical either.

Links & Media
Step 2

Internal Tool

Writing a native-like, third party tool in XML would resolve the problems of the use of the external tool. There would be no need to manually adjust programming command parameters and fuses could be programmed setting them on and off, one by one on the GUI. Fuses would have illustrative names identical to the datasheet.

The native tool gives a reading of the operating voltage of the target PCB. It is a very useful feature, when starting to program a new device. For this, also FabISP should encounter small changes, both HW and SW. My version already has a software controlled status LED and cast plastic casing for durability. (See the links)

Links & Media

It is not an easy task to learn embedded programming from the scratch in a short period of time. Everything that will help to get started as fast as possible is therefore important. I believe FabISP ProgPRO is a strong candidate for the programming platform in Fab Academy, as well as in embedded systems programming courses. This could also increase the manufacturing and use of FabISP-programmer in education, hobbies, universities and professionally in companies and further help to integrate Fab Labs into these interest groups.


Discuss this Project on discuss.fablabs.io