Programming the ATMEL Microcontroller

Your ATMega328 microcontroller comes pre-programmed, but perhaps you’d like to dive into Mark Wilson’s open-source code and do your own modifications.

First, you’ll want to install the Arduino IDE (I'm sure you already have this if you’re actually thinking about modifying the code.) The source code for the µKenbak-1 is available here.

You’re probably used to plugging into an Arduino and uploading the code, but there is no Arduino inside this project. There are other ways to upload the code using a programmer (I’ll leave that up to you) but the easiest way is to simply remove the ATMega328 chip from the µKenbak-1 and replace the ATMega328 chip in an Arduino Uno, then upload like usual.

You will need to make a small change to the code before you upload the new code. The code defaults to using a DS1307 RTC module. I use a DS3231 RTC module in my kit. You will need to update the following starting at line 16 of clock.h:

static const int RTC_I2C_ADDR = 0x68; // ADDR: I2C address, 0x00 means no RTC (no SRAM, use top of EEPROM)
static const int RTC_CONTROL_OFFSET = 0x0E; // CTRL: location of RTC control register, 0x00 means ignore
static const int RTC_USER_SRAM_OFFSET = 0x00; // SRAM: location of first byte of user SRAM in RTC, 0x00 means RTC has no SRAM, use top of EEPROM

Pop that chip out when done and put it back in the µKenbak-1.