Week 7 - Embedded Programming

This week, we had to program our board from two weeks ago. This was the board I produced at that time:

As absurd as it may sound, I found out this week that my dog chewed my board one day when I wasn't at home (Yes, the dog literally ate my homework). Evidence will be provided soon (i.e., pictures).

So, I had the dubious pleasure of remaking the board from scratch...

When I finally got my new board done, I went ahead to program it. I tried several methods - including using the Arduino IDE 1.0, with the added ATtiny libraries. I followed the instructions, set the board to ATtiny44 external (20mhz clock), and tried to burn the bootloader, which yielded the annoying generic error as seen in the image below.

I then went ahead with the process of testing everything:

  • - Checked the polarity of the serial and power connections on the programmer and the board
  • - Tried another machine
  • - Used an old usb hub, as Google hinted that the problem might be with using a USB 3.0 port
  • - Tested with a multi-meter, looking for shorts, OC, or some other weird stuff. All seemed to be perfectly fine.

I even tried using the expensive ISP programmer, which has a led indicator that should let you know if something is wired in the wrong way. Surprise surprise, it was a steady green! So why wasn't the computer recognizing it?

I then tried to ditch the IDE and use the compiler directly (makefile approach). This yielded similar results:

When that didn't work, the next step was to reproduce the board, assuming that I stuffed it in the wrong way. I made yet another board - the 3rd attempt, but alas - I got the same results :(.

It is therefore clear that something in the design process went wrong. I compared my circuit with the one I found in a tutorial from a couple years ago, and could not have identified anything wrong with my design. The next solution is to start the schematic from scratch so I'm not biased, which I plan to do, but unfortunately for this week I ran out of time ..

UPDATE: A couple of weeks later, when designing and making another board seemed to fail, I decided to test my programmer. Using the AVRISP II instead of my FabISP programmer (which worked on week 2) succesfully programmed this board, proving that my programmer was damaged.

Find me on ...

guyz (at) mit dot edu