Documentation

Assembly and Firmware

As the CPU of our controller is the Arduino nano card, which, according to the technical specifications, already has 32Kb flash memory available for our firmware. However, for the sake of many pleasant moments, part of this memory was without conscience given to the bootloader leaving us nothing at all 30720 bytes. What can grieve us.

Since in this case all the planned functional was no longer stored in memory. Therefore, I had to make not an easy choice, or reduce the functionality or ... In general, unfortunately I had to give up the convenience of installing the firmware. And for this we need some penny device. For all those who are suffering and who do not want to spend extra $ 3, I will leave the possibility to download firmware with cut-down functionality (not essential features) and a reduced size of the sketch.

1. Required Devices

To flash the controller chip, you need the AVR Programmer USB ATMEGA8 ATMEGA128 with the 10PIN TO 6PIN ADAPTER adapter.

If the firmware is less than 30720 bytes, it can be flashed with standard firmware through the utilities that are presented below or in the section software, in this case, the programmer will not be needed.

To flash the communication module, we need USB-TTL конвертер (Search with a switch for 5 and 3.3 volts, or a version of 3.3 volts) based on FTDI, PL2303 or a similar chip.

2. Firmware Process

Firmware microcontroller can be made separately from the motherboard. For firmware use the utility Khazama AVR Programmer (you can take in the section Programs)  

If you pour the firmware through the programmer, then perform clause 2.1. - 2.2 you do not need! Feel free to proceed to the point 2.3 

2.1. To flash the chip through the bootloader, run the ArduinoUploader program:

The program can be downloaded from the link below.

Выбираем номер COM порта и тип микроконтроллера. А так же выбираем файл прошивки. Обратите внимание таким способом прошить можно только урезанную прошивку AQ_CH08W либо прошивку для версии AQ_CH04L. Для заливки полнофункциональной версии для AQ_CH08W необходим программатор USBasp. Далее в поле AVR Dude Params прописываем команды согласно примеру ниже:

-F -v -pm328p -cstk500v1 -P\\.\COM2 -b57600 -D -Uflash:w:"C:\Users\Doc\Desktop\AQ_CH04L.hex":i

Путь к прошивке и номер порта указываете свой. Запускаем прошивку. Если все сделано правильно то процесс прошивки будет виден в окне:

Можно подключить оставшиеся устройства на шину I2С. На этом прошивка закончена 

 

2.3. Прошивка через программатор.

 

Внимание! Неправильное подключение программатора к разъему ICSP гарантированно выводит устройство из строя. Внимательно смотрите схему подключения!!! 
Внимание! При прошивке чипа на программаторе необходимо выставить режим работы 5V.

При первом подключении вам необходимо будет установить драйвера для 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 у вас не подключено.

При первом запуске устройства в память контроллера будет записан адрес вашего экрана. И если на шине будут находится к примеру те же часы, то не факт что прошивка будет правильно инициализирована! Если же по каким-то причинам адрес экрана не про инициализируется, например если вы будите прошивать чип без подключенного экрана, то инициализация произойдет при последующих запусках как только при запуске будет обнаружено устройство на шине I2C. Причем только одно!!! При успешной инициализации и подключенном спикере, вы услышите два коротких сигнала, если в процессе запуска возникнут ошибки инициализации устройства сигнал будет один с низкой тональностью.

Прошивка закончена.

 


Яндекс.Метрика