Eggplant! wrote:I'm not sure if the board software allows this, but I'd prefer an HTML table over an embedded image if possible. That way you can add things like links to the forum topics or web sites, be able to copy/paste information, etc.

unfortunately html-tables are not possible in this forum. If they were, I would have done it that way. I added the URLs beneath the table for easy clicking.

I am a novice here and have no way of updating the firmware nor the programming skills to do so. I am willing to buy an MCU that has all the latest firmware mods to the ITC (Ice Tube Clock) already burnt and certifiably verified working unit.

I've decided to make a clock with custom firmware as a gift for someone special, but after downloading the firmware mods from the board I was unable to compile on my platform. After some digging I realized that none of the firmware mods available here are updated for use with avr-libc 1.8.0. I decided to use DigiSage's firmware as my starting point and present here new version of DigiSage's code that is unchanged in functionality but will compile with avr-libc 1.8.0. Actually, all I can really say for sure is that it compiles with some warnings (didn't bother to correct those) on my Mac running 10.6.8 with Objective Development's AVR Crosspack 2012-12-07. I have also sent the firmware to my ice tube clock with avrdude and confirmed that it starts up and runs fine.

Like I said, it's a little ugly but it compiles on my machine now and I'm only uploading it because someone else might find it useful.

Can anyone point me to a link that will give me info on compiling these firmware packages the ICE Tube Clock?

I am not aware of any such resource. If you have an ATMEGA328P-PU, I would recommend playing with my firmware. It has installation instructions, compiles cleanly, and the code is clearly written.

Some of the older firmware projects no longer compile on recent versions of GCC, so the code will need to be modified in order for them to compile. This is the procedure I used to get the Adafruit code to compile and run on my clock. The procedure for older firmware projects based on the Adafruit code should be similar.

EDIT: The version of GCC that comes with WinAVR is quite old, and these firmwares probably do compile just fine in that environment.

First, the original Adafruit Ice Tube Clock code defines several pointers in program memory which are not declared as constants. These pointers are alphatable_p and numbertable_p in fonttable.h as well as digittable_p and segmenttable_p in iv.c. Recent versions of GCC do not allow nonconstant program memory pointers, so each of these pointers must be declared constant. For example, the definition of alphatable_p should be changed to

Second, interrupt names in the original firmware have been deprecated and should be changed to their nondeprecated counterparts. Current and deprecated interrupt names are listed in the avr-libc documentation. Different firmwares may use different interrupts, but the following interrupt name changes were required for the Adafruit GPS firmware:

SIG_OVERFLOW0 -> TIMER0_OVF_vect

SIG_PIN_CHANGE2 -> PCINT2_vect

SIG_PIN_CHANGE0 -> PCINT0_vect

SIG_INTERRUPT0 -> INT0_vect

SIG_COMPARATOR -> ANALOG_COMP_vect

After these changes, the firmware should compile with the "make" command. The next step is to program the chip, so open the Makefile and make sure the avrdude programmer variables are set correctly. The following settings worked for me with with the Adafruit USBtinyISP:

On the Ice Tube Clock, set the brightness to minimum. Unplug the clock and disassemble the case. Remove the side PCB and VFD tube. If using a USBtinyISP, disconnect the power jumper. Reconnect the clock's power adapter and connect your AVR ISP programmer, ensuring PIN 1 on the ISP cable and PIN 1 on the Ice Tube Clock ISP header match. Install the new firmware to the Ice Tube Clock's ATMEGA168V chip by executing the "make full" command.

Porting a firmware to the ATMEGA328P-PU is described in another thread.