The discussion today focused on embedded programming. I did my MS and PhD work in Electrical/Computer Engineering with a focus on Embedded Systems. I have plenty of experience with this.
If you ever have a question about a chip, the datasheet can be
your best friend (or worst enemy depending on how well it is
written...) The AtTiny44 datasheet falls in line with other Avr
datasheets in that it is very well written and description of the
different hardware and example techniques are very easy to
Some neat things I learned about the AtTiny44 for the datasheet are
I've been programming AVRs for years, more specifically the ATmega128 using C, ASM and Wiring. I am familiar with many of the tools such as AVRStudio, Codevision AVR, avr-GCC, Win-AVR, AvrDude, PonyProg, etc.
In fact I even wrote my own super minimalist AVR IDE years ago (In 2005-6ish).
Feel free to download it for Windows and test it out, it is quite old so it only supports a few serial and parallel port programmers, mainly the DAPA Programmer. Honestly, I should update this project since it uses FLTK and is cross platform. I think that by updating it to allow USBtiny it could be a useful tool for FabModules (even though it isn't written in python).
I gave Terence Fagan tips when he attempted to write his assembly code program which can be found here.
Here are some other tools I typically use when writing ASM for AVR chips.
Delays are incredibly useful, but calculating them can be an annoying task in ASM (you are limited by the size of a memory location, 256 loops) so you have to have nested loops of NOP statements. These are some websites and tools I find useful when writing loops.
At some point I wrote a tutorial on how to write your own precompiled
libraries for AVRs. I'll try to dig that up and post it if I can find
In linux, there are many setups that work well for development. Personally, I find kate or gedit text editors with a terminal plugin the most useful. But I've used Eclipse which works well too, though I find it rather bloated for AVRcoding.
In Windows, AVRstudio is hands-down the best tool. It supports ASM and GCC and has a great built-in graphical debugger. Win-AVR is also a usable setup. You can even roll your own with notepad++ or SciTE. I just learned about VisualMicro for VisualStudio which seems to have a nice GUI debugger for arduinoif you are into that sort of thing (M$ products that is).
OK, so for the "trying something new" part of the homework, I
looked at pyMite (python on a chip) but it didn't seem useful at all
since it doesn't support python libraries (which would be the only
reason I would actually want to use it) and it isn't actively
In the end, I opted for trying to install the ATtiny setup for Arduino. I have never used any of these ATtiny series chips in Arduino (well, years ago I hacked together a custom solution for ATTiny2313, but that was barely useable at the time, had to generate the hex file, then use avrdude manually to upload it. I eventually came up with my own drag and drop block system for visually coding for the ATtiny2313. This was back in 2007-2008, years before modkit or the others out there). I also had not really used an ISP programmer with the Arduino IDE, I always used the serial connection.
Installation was simple, but not being super familiar with windows, I hit a couple of stumbling blocks. Here are the steps I got to work on Windows 7.
Once you are ready to program the chip, first select "tools-->Board--> Attiny44 (external 20MHz clock)"
Then select "tools-->Programmer--> USBtiny" (Or FabISP if you changed your programmers.txt file)
Now burn the bootloader Tools --> burn Bootloader
And finally you can program the chip the typical way (Click the --> icon next to the check mark on the IDE)
When done, you should have successful blinky!
I enjoy using Arduino to sketch concepts out and now that FabAcademy
has shown me how useful some of the ATtiny series chips can be, I'll
definitely start using them more often in my preliminary designs,
especially since I don't have to use a serial programmer of any kind.
From time to time I might still use ASM on AVRs for time-critical designs or when ASM makes something easier or faster. In general I think my workflow is the following:
1. Arduino/Wiring IDE for "sketching" concepts in Atmega/Attiny chips
2. Depending on my OS, I'll use either Win-AVR or AVRstudio for C/ASM in windows or Gedit or Eclipse in Linux
Here are all my design files for this week.