среда, 28 августа 2019 г.

FLProg Arduino Atmega8 и немного Visual Studio

Здравствуйте. Немного поднаторев в программе FLProg и научившись составлять простые алгоритмы для прошивки Arduino разных версий типа uno, nano, mini решил попробовать прошить микроконтроллер ATmega8, но не с помощью USBasp, а используя в качестве программатора все ту же Arduino UNO, а саму прошивку написать, пользуясь визуальным языком программирования FLProg. Собрав с различных сайтов много полезной информации, приступил к реализации своего проекта. И вот как я это сделал и что в итоге получилось в картинках.
Первым делом с официального сайта загрузил и установил последнюю версию FLProg версия 5.3.0, в ней есть, библиотеки и сама среда для разработки прошивок Arduino IDE версия 1.8.9 интегрирована, так что ее отдельно устанавливать не пришлось.










1.После установки программы подключил Arduino UNO к USB порту, нашел папку (у меня здесь по умолчанию C:\Program Files (x86)\FLProg\ideV3) и запустил файл «arduino exe». Теперь все готово для создания программатора на базе UNO.













2.В меню «Инструменты - Плата» выбрал «UNO», программатор «AVRISP mkll» и «Порт COM5» возможно у вас номер порта будет другой.


















3.Далее в меню «Файл-Примеры» выбрал скетч «ArduinoISP»


















4. Затем перешел к пункту меню «Скетч» и нажал  «Загрузка» или что тоже самое стрелка в кружке. Все прошивка залита, программатор готов.













5. Далее перешел в меню «Файл – Настройки» здесь я нечего не менял только в поле «Дополнительные ссылки для Менеджера плат» вставил вот эту ссылку (https://raw.githubusercontent.com/sleemanj/optiboot/master/dists/package_gogo_diy_atmega8_series_index.json) и нажал  окей.















6. И снова выбрал «Инструменты-Плата» далее перешел в раздел «Менеджер плат» там нашел установочный пакет, он был в самом низу, как показано на картинке 7.














7. Сейчас у меня он уже установлен, а у вас будет кнопка установить в правом углу жмем ее, ждем и после инсталляции это окно закрываем.

















8. Опять перехожу в «Инструменты-Плата» и ищу ATmega8/A и выбираю ее.














9. Теперь снова к пункту «Инструменты - Программатор» и меняю его нажатием с «AVRISP mkll» на «Arduino as ISP» вот так.













10. Если все правильно, то должны появиться дополнительные настройки микроконтроллера, здесь я нечего не менял. Теперь временно отключаю питание UNO и подключаю к ней ATmega8 (мануал здесь) он заранее размещен на макетной плате и согласно верхнего рисунка соединяю к нему шесть проводов. Проверяю все ли правильно и снова подаю питание, в меню «Инструменты» см. картинку 10 жму «Записать загрузчик».


















11. Наконец-то микроконтроллер ATmega8 готов к заливке. Пробую скетч с мигающим светодиодом, все работает, но надо что-то посерьёзнее. Подключаю LCD дисплей 1602 к шине I2C через плату конвертер. Нужно соединить два провода для питания VCC, GND (ножки 7 и 8) и два провода к пинам A4-SDA, A5-SCL микросхемы ATmega8 (ноги 27 и 28 соответственно). Пробую записать скетч из примеров, перехожу «Файл-Примеры» выбираю программку «LiquidCrystal_I2C – BlinkingCursor» 11 рисунок.
















12. Далее в меню «Скетч» выбираю и жму «Загрузить через программатор», перемигивание светодиодов на UNO свидетельствует о том, что идет загрузка файла.


















Через несколько секунд на дисплее появился текст с мигающим курсором и без см. фото ниже, и надпись в программе загрузка завершена, рисунок 13, если нет ничего, то необходимо настроить контрастность на плате I2C.


















Все отлично работает. Закрываю программу Arduino IDE и отключаю устройство.














Дополнительно уже к этой схеме добавляю часы реального времени DS3132 также к шине I2C, еще соединяю три кнопки без фиксации для  управления таймером одним контактом к минусу другим к ножкам микроконтроллера D2, D3, D4 и пятивольтовое реле два провода к питанию, а третий управляющий провод к пину D7 мк. ATmega8.















Снова включаю и теперь уже запускаю программу FLProg, создаю входы и выход выбираю в настройках часы и дисплей и пробую составить алгоритм работы простого таймера, который будет включать и отключать нагрузку через реле по истечению установленного времени,  ранее я уже делал что-то подобное, но для Arduino Nano в ней флэш памяти 32к а в ATmega8 не более 8к с учетом загрузчика.
















Ну вот, кажется, вариант таймера готов. Триггеров, экранов, переменных, всего надо поменьше и вот ОН момент. Нажимаю Компилировать, пока все идет хорошо.


















Появилось окно программы Arduino IDE, здесь выбираю «Скетч» и жму «Загрузить через программатор», еще несколько секунд ожидания и прошивка записана в микроконтроллер. Появилась надпись загрузка завершена и размеры файла, я так полагаю что залез впритык, рисунок 16.


















Немного о работе таймера. Время задается в секундах в верхней строке,  например для 3-х минутного отчета необходимо набрать 180 секунд. Управление тремя кнопками - одна кнопка пуск, две другие добавить и убавить на одну секунду, при одновременном  нажатие последних происходит сброс счетчика. В нижней строчке идет прямой отчет в формате часов. Визуально в конце заметно раннее срабатывание реле на 1с., но при старте показания на дисплее тоже отстают, так что есть компенсация.
Работа таймера на видео.

И напоследок еще хочу немного сказать про программу «Visual Studio 2019». Очень удобная для отладки редактирования и уменьшения файла если включить Release.
Пробовал такой вариант. Составляю программку в FLProg компилирую и пытаюсь «Загрузить через программатор», а она не лезет, тогда из окна Arduino IDE копирую код скетча в буфер и вставляю его в окно Visual Studio включаю конфигурацию Release и нажимаю зеленую стрелочку «Пуск», есть файл стал легче, пошла загрузка.














Чтобы Visual Studio работала с Arduino и микроконтроллерами, необходимо установить в меню «Расширения» см. на рисунке дополнительный пакет, настроить связи, подключить библиотеки и теперь создаваемые прошивки можно записывать напрямую из VS в Ардуину в моем случае в Атмегу8.

P.S. Это моя шпаргалка, а то через месяц все забуду.

1 комментарий:

  1. Добрый день. Давно искал такое решение. Сам в программирование не силён, а вот в FLPROG могу кое что написать. Так вот для не больших проектов использовать arduino жалко, а как записать скетч в чистый мк не знал.На просторах интернета такой информации не нашол. Долго ломал голову как запихать ардуиновский скетч в мк. Спасибо вам большое! Буду пробывать.

    ОтветитьУдалить

Архив

Популярные сообщения