Last week I designed and milled an ATTiny44-driven charlieplexed matrix. This was supposed to serve as a temporary board I could run some tests on. But designing an board with an ATMega controller that powers 16 charlieplexed LEDs on a vinyl cut trace proved turned out longer than I thought, and so the temporary became permanent.
I finally managed to vinyl cut some traces and weed them, and not just onto any surface, but onto thin clear film. It looks great! Settings: defaults for copper with force 70, speed 2.5, a +2 HW pen force on the CBA Modela. But the real difference between this attempt and the numerous failed attempts that preceded was that this time I spaced out my traces and made them thicker. Kudos to Toni for the tip.
My design had one major flaw: it allowed powering the board through a 9V battery (regulatd) as well s the 5V non-regulated FTDI. With the FTDI connected, the 5V voltage regulator would instantly heat and, unless the board was disconnected in time, eventually burn. Turns out voltage regulators don't like power coming in on the wrong pin (the FTDI VCC and the voltage regulator's voltage out were connected to the same VCC line). To solve this, I removed the VCC pin from the on-board VCC header. This way the board is powered only by the battery. I also learned, finally, how to distinguish a 3.3V voltage regulator from a 5V one: the former is labelled LBA and the latter LDB.
Another hurdle I passed on Friday night was an interrupt issue. Listening on PCINT0_vect, I noticed that all interrupts were handled twice: a second handler would be invoked right after the first one exited. This resulted in variables having unexpected values, as the second interrupt would reset the values that were just written by the first. Duplicte printouts were also indicated that something was going wrong. After consulting the Tiny44's datasheet as well as Google, I found out that the PCIF0 flag needs to be cleared at the end of the ISR (by writing a logical '1' in it) to prevent duplication. I still don't know what causes this erratic behavor.
The Python/Tkinter app is an extension of my assignment from week 11.
On Friday, 3:30AM, I finally had a perfectly working board that displayed a Margarita recipe. Too bad were ran out of lime. I updated the application on Saturday, when I needed a break from writing a paper due the day after.