В качестве CPU нашего контроллера выступает плата Arduino nano, которая согласно техническим характеристикам обладает аж 32Кб flash памяти доступной нам для нашей прошивки. Однако в угоду многих приятных моментов часть этой памяти была без совестно отдана под загрузчик оставив нам всего ничего 30720 байт. Что не может нас не печалить.
Так как в этом случае все задуманный функционал уже не помещался в эту бездонную прорву памяти. А по сему пришлось делать не простой выбор, или уменьшать аппетит или... Вообщем к сожалению пришлось отказаться от удобств по заливке прошивок. А по сему нам понадобиться некоторая копеечная железяка. Для всех страждущих и не желающих тратить лишние 3$ я оставлю возможность загружать прошивки с урезанным функционалом (не существенные возможности) и уменьшенным размером скетча.
1. Необходимые устройства
Для прошивки чипа контроллера необходимы будут программатор AVR Programmer USB ATMEGA8 ATMEGA128 сразу с переходником 10PIN TO 6PIN ADAPTER.
В случае если прошивка будет меньше чем 30720 байт, ее можно прошить стандартными средствами прошивки через утилиты которые представлены ниже либо в разделе программного обеспечения, в данном случае программатор будет не нужен.
Для прошивки модуля связи нам понадобится USB-TTL конвертер (ищите с переключателем на 5 и 3,3 вольт, либо версия на 3,3 вольта) на базе FTDI, PL2303 или аналогичном чипе.
Идеальным будет вариант, когда на USB-TTL адаптере будут выведены DTR и RTS — это позволит быстро загружать прошивку из Arduino IDE, UDK, Sming без ручного переключения GPIO0 на землю.
2. Процесс прошивки
Если же вы будете лить прошивку через программатор то выполнять пункт 2.1. - 2.2 вам не нужно! Смело переходите к пункту 2.3
2.1. Для прошивки чипа через через bootloader запустим программу ArduinoUploader:
Программу можно скачать ниже по ссылке.
Выбираем номер COM порта и тип микроконтроллера. А так же выбираем файл прошивки. Обратите внимание таким способом прошить можно только урезанную прошивку AQ_CH08W либо прошивку для версии AQ_CH04L. Для заливки полнофункциональной версии для AQ_CH08W необходим программатор USBasp. Далее в поле AVR Dude Params прописываем команды согласно примеру ниже:
Путь к прошивке и номер порта указываете свой. Запускаем прошивку. Если все сделано правильно то процесс прошивки будет виден в окне:
Можно подключить оставшиеся устройства на шину I2С. На этом прошивка закончена
2.3. Прошивка через программатор.

При первом подключении вам необходимо будет установить драйвера для USBasp вашего устройства. Последние драйвера можно скачать тут: http://zadig.akeo.ie/ Либо можно взять у нас с сайта:
Когда всё готово нужно запустить Khazama AVR Programmer и проверить видит ли он МК.
Главное окно:
Выбираем правильный тип чипа. В нашем случае это ATMEGA328P. И в меню Command выбираем пункт считать данные с чипа. Должна появиться вот такая надпись:
В ходе работы программы может появляться ошибка:
Связана с версией программы на конечный результат особо не влияет, только раздражает немного... Так что смело можно продолжать.Перед началом прошивки неплохо было бы наш чип почистить: Command - Erase Chip:
Жмем да и получаем чистый чип. Далее проверяем на примере EEPROM что чип очищен. Читаем EEPROM в буфер:
Далее открываем наш EEPROM в буфере программы:
Весь EEPROM записан FF. Что говорит нам о том что все прошло успешно:
Далее необходимо залить саму прошивку. Что касается прошивок. Версии прошивок нужно заливать в соответствие со схемой вашего контроллера, если вы собрали упрощенный вариант с отсутствующим модулем связи и с поддержкой только 4 каналов для подключения оборудования, то выбирайте именно прошивку под этот контроллер. Что будет если залить прошивку от другого типа контроллера я не знаю, скорее всего стабильности это не добавит.
При прошивке контроллера нам необходимо загрузить нашу прошивку в буфер программы File - Load FLASH file to buffer. После того как выбрали прошивку нажимаем кнопку Auto Program.
Есть вариант прошивки с настройкой фьюзов, но его я описывать не буду. Тот кто знает для чего это сам сможет это сделать, для остальных вариант с авто прошивкой будет наиболее простой. Далее начнется заливка прошивки в чип:
После прошивки видим следующее:
Все удачно залилось.
При первом запуске устройства в память контроллера будет записан адрес вашего экрана. И если на шине будут находится к примеру те же часы, то не факт что прошивка будет правильно инициализирована! Если же по каким-то причинам адрес экрана не про инициализируется, например если вы будите прошивать чип без подключенного экрана, то инициализация произойдет при последующих запусках как только при запуске будет обнаружено устройство на шине I2C. Причем только одно!!! При успешной инициализации и подключенном спикере, вы услышите два коротких сигнала, если в процессе запуска возникнут ошибки инициализации устройства сигнал будет один с низкой тональностью.
Прошивка закончена.