Atmega168pa au как прошить

Atmega168pa au как прошить

Загрузка скетча или прошивка контроллера Ардуино – основная операция, с которой рано или поздно сталкивается любой ардуинщик. Именно возможность быстро и без лишних проблем загрузить в память контроллера управляющую программу и стала одной из основных причин успеха платформы Arduino. В этой статье мы узнаем, как прошиваются Arduino Uno, Nano, Mega и другие платы на основе Atmega с использованием Arduino IDE, программатора или другой платы Ардуино.

Загрузка скетча в плату Ардуино

Давайте сначала разберемся с тем, что происходит внутри ардуино, когда мы решаем изменить внутреннюю программу, управляющую им.

Что происходит, когда мы жмем кнопку «Загрузить»

Плата Ардуино – это микроконтроллер AVR (Atmega8/168/328 или Atmega1280/2560), который прошивается загрузчиком. В микроконтроллер записывается программа, называемая прошивкой, которая позволяет получать сигналы с датчиков, обрабатывать нажатия кнопок, общаться с различными устройствами через интерфейсы, управлять исполнительными процессами.

Обычно прошивка записывается в кристалл микроконтроллера при помощи специальных устройств, называемых программаторами. Для разных микроконтроллеров существуют различные программаторы – от специализированных до универсальных. Важным отличием Ардуино от других контроллеров является возможность залить прошивку через обычный USB кабель. Это достигается при помощи специальной программы – загрузчика (Bootloader). Для прошивки не требуются лишние провода, не нужно подключать дополнительные устройства или нажимать что-то на плате. Также при работе через загрузчик нельзя добраться до опасных настроек, которые выведут из строя Ардуино.

При подключении платы Ардуино к источнику питания, внутри него начинается активная деятельность микропрограмм. При запуске микроконтроллера управление получает загрузчик. Первые 2 секунды он проверяет, поступил ли новый код от пользователя. Кроме того загрузчик подает импульсы на пин, к которому подключен светодиод, и он начинает мигать. Это означает, что загрузчик установлен и работает исправно. Когда подается скетч, загрузчик записывает его во флеш-память микроконтроллера. Затем эта программа подается на выполнение. Если данные не поступили, загрузчик запускает предыдущую программу. Во время выполнения программы внутри Ардуино выполняется ряд операций по инициализации и настройке среды окружения, и только после этого начинается выполнение кода.

Вызов setup и loop при загрузке

В самом коде имеются несколько основных функций, на их примере можно рассмотреть работу микроконтроллера.

Команда void setup() – в ней записываются данные, которые микроконтроллер выполняет в момент загрузки, а после может про них забыть. В этой функции указываются номера пинов, к которым подключается устройство, подключаются и инициализируются библиотеки, устанавливается скорость работы с последовательным портом.

Функция void loop – в нее помещаются команды, которые должны выполняться, пока включена плата. Микроконтроллер начнет выполнять программы, начиная с первой, и когда дойдет до конца, сразу вернется в начало, чтобы повторить эту же последовательность бесконечное число раз.

Загрузка скетча в Arduino IDE

В Ардуино IDE компиляция скетча начинается при нажатии кнопки Verify, после этого скетч может быть загружен в память Ардуино через USB с помощью кнопки Upload. Перед загрузкой кода программы нужно установить все параметры в меню Tools. В этом меню выбираются порт, к которому подключена плата, и платформу. В окне Arduino IDE внизу будет отображен ход компиляции скетча. При успешной выгрузке скетча будет получено сообщение «Done uploading». Запуск скетча начинается сразу после окончания загрузки. Для расширения возможностей можно подключать дополнительные внешние библиотеки, разработанные командой Ардуино или сторонними авторами.

Обзор возможных вариантов загрузки скетча

Кратко весь алгоритм можно записать следующим образом: Написание кода >> компиляция >> загрузка в микроконтроллер. При загрузке скетча используется Bootloader (Загрузчик). Он представляет собой небольшую программу, которая загружается в микроконтроллер на Ардуино. С помощью этой программы можно загружать скетч, не используя дополнительные аппаратные средства. При работе загрузчика на плате будет мигать светодиод.

1. Загрузка в Arduino IDE. Самый простой и удобный вариант загрузки кода. Все, что нужно сделать – это написать или найти нужный скетч и загрузить его.

  1. Ускоренная загрузка скетча в Arduino IDE. С помощью этого метода можно увеличить скорость загрузки в микроконтроллер в два раза. Для этого нужно лишь зайти в Настройки и снять галочку с пункта Проверка кода. Пропуская шаг проверки, будет уменьшено количество байтов, которые передаются во время загрузки. При этом все равно некоторые из видов проверок будут осуществлены, но они не занимают долгого времени. Отключать проверку кода не рекомендуется, если Ардуино помещается в какой-либо ответственный проект (например, в спутник). Также можно провести проверку, если подключение производится через очень длинный USB кабель (порядка 10 метров).

Уменьшение времени загрузки при помощи отключения проверки работает с любой платой Ардуино, которая использует USB соединение. Все эти микроконтроллеры используют загрузчик avrdude. Платы, которые используют загрузчик Catarina, не нуждаются в отключении проверки кода, так как этот загрузчик работает быстрее.

  1. Загрузка скетча в Ардуино через Bluetooth. Этот способ используется, когда нужно обойтись без физического соединения Ардуино и компьютера – например, в силовых цепях или радиочастотных цепях. Для реализации загрузки потребуется Bluetooth-модуль, который оснащен платой-адаптером для Ардуино. Этот модуль нужно подключить к компьютеру через переходник USB-UART-TTL. Работа с модулем осуществляется с помощью AT-команд.
  2. Загрузка при помощи Андроид-устройства. Для осуществления такого типа загрузки кода понадобятся провода USB-A – USB-B и USB-Host (OTG-кабель), Ардуино и устройство на базе Андроид с поддержкой режима host. На Андроид-устройство нужно установить программу ArduinoDroid или ArduinoCommander из Google Play. Все устройства нужно соединить при помощи кабелей, после этого можно включать Ардуино и загружать на него код. Нужно запустить установленную программу. При включении начнется обновление IDE, на что понадобится некоторое время.

Сначала работа будет рассмотрена на примере программы ArduinoCommander. После ее запуска нужно нажать USB-Device. Затем нужно наддать Autodetect, чтобы Андроид-устройство выполнило поиск Ардуино и отобразило его на экране. Как только Ардуино появится на экране, нужно на него нажать. Чтобы перейти в меню, нужно щелкнуть в нижнем правом углу. В этом меню можно загрузить скетч с SD-карты.

ArduinoDroid представляет собой среду разработки, компилятор и загрузчик одновременно. Начать компиляцию скетча нужно нажав на кнопку Lightning-Button. После завершения компиляции нужно нажать на кнопку загрузки. Загрузка занимает несколько секунд. По окончании загрузки ардуино запустит на выполнение новый код.

    Программирование при помощи Raspberry Pi. Можно загружать скетчи двумя способами – при помощи Arduino >Структура памяти Ардуино, где располагается скетч и данные

На микроконтроллере Ардуино имеется 3 вида памяти – флеш-память, которая используется для хранения скетчей, ОЗУ для хранения переменных и EEPROM для хранения постоянной информации. Из этих типов памяти флеш-память и EEPROM являются энергонезависимыми, то есть информация сохраняется при выключении питания. ОЗУ используется только для хранения данных, которые имеют отношение к исполняемой программе.

Микроконтроллер ATmega168, который используется на части плат Ардуино, имеет 16 Кб флеш-памяти, 1024 байта для ОЗУ и 512 байт EEPROM. Важно обратить внимание на малый объем ОЗУ. Большие программы могут полностью ее израсходовать, что приведет к сбою в программе. По этой причине нужно следить за тем, сколько строк занимает программа, и по возможности удалять лишнее. Уменьшить объем кода можно несколькими способами:

  • Можно отправить часть информации на компьютер.
  • Для таблиц и других крупных массивов использовать минимальный тип данных для хранения.
  • Данные, которые остаются неизменными, можно объявить константами при помощи слова const перед объявлением переменной.
  • Меньше использовать рекурсию. При ее вызове в памяти, называемой стеком, выделяется фрагмент, в котором хранятся различные данные. Если часто вызывать рекурсию, стеки будут занимать большой объем памяти и могут израсходовать ее.
  • Неизменяемые строки можно сохранять во флеш-памяти во время работы программы. Для этого используется функция PROGMEM.
Читайте также:  Газовый котел протерм леопард неисправности

На объем памяти не влияют размер имени переменных и комментарии. Компилятор устроен таким образом, что не включает эти данные в скомпилированный скетч.

Для измерения объема занимаемой памяти ОЗУ используется скетч из библиотеки MemoryFree. В ней имеется специальная функция free­Memory, которая возвращает объем доступной памяти. Также эта библиотека широко используется для диагностики проблем, которые связаны с нехваткой памяти.

Оптимизация флеш-памяти. Как только будет окончена процедура компиляции, в окне появится информация о занимаемой памяти кодом. Если скетч занимает большую часть памяти, нужно произвести оптимизацию использования флеш-памяти:

  • Использование констант. Аналогично как и для ОЗУ задавать неизменяющиеся значения константами.
  • Удалить ненужные Serial.println. Эта команда используется, когда нужно увидеть значения переменных в разных местах программы, нередко эта информация просто не нужна. При этом команды занимают место в памяти, поэтому, убедившись в корректной работе программы, некоторые строки можно удалить.
  • Отказ от загрузчика – можно программировать микроконтроллер через контакты ICSP на плате с использованием аппаратных программаторов.

Флеш память является безопасным и удобным способом хранения данных, но некоторые факторы ограничивают ее использование. Для флеш-памяти характерна запись данных блоками по 64 байта. Также флеш-память гарантирует сохранность информации для 100000циклов записи, после чего информация искажается. Во флеш-памяти имеется загрузчик, который нельзя удалять или искажать. Это может привести к разрушению самой платы.

EEPROM память используется для хранения всех данных, которые потребуются после отключения питания. Для записи информации в EEPROM нужно использовать специальную библиотеку EEPROM.h, которая входит в число стандартных библиотек в Arduino IDE. Чтение и запись информации в EEPROM происходит медленно, порядка 3 мс. Также гарантируется надежность хранения данных для 100000 циклов записи, потому лучше не выполнять запись в цикле.

Варианты прошивки Ардуино

Прошивка с помощью Arduino IDE

Прошить плату при помощи среды разработки Arduino IDE можно в несколько шагов. В первую очередь нужно скачать и установить саму программу Arduino IDE. Также дополнительно нужно скачать и установить драйвер CH341. Плату Ардуино нужно подключить к компьютеру и подождать несколько минут, пока Windows ее опознает и запомнит.

После этого нужно загрузить программу Arduino IDE и выбрать нужную плату: Инструменты – Плата. Также нужно выбрать порт, к которому она подключена: Инструменты – Порт. Готовая прошивка открывается двойным кликом, чтобы ее загрузить на плату, нужно нажать кнопку «Загрузить» вверху панели инструментов.

В некоторых ситуациях может возникнуть ошибка из-за наличия кириллицы (русских букв) в пути к папке с кодами. Для этого файл со скетчами лучше создать и сохранить в корне диска с английским наименованием.

Прошивка с помощью программатора

Одни из самых простых способов прошивки платы – при помощи программатора. Заливка будет производиться в несколько этапов.

В первую очередь нужно подключить программатор к плате и к компьютеру. Если программатор не опознается компьютером, нужно скачать и установить драйверы.

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

Затем нужно выбрать программатор, к которому подключен контроллер. В данном случае используется USBasp.

Последний шаг – нажать на «записать загрузчик» в меню Сервис.

После этого начнется загрузка. Завершение произойдет примерно через 10 секунд.

Прошивка Arduino через Arduino

Для того чтобы прошить одну плату с помощью другой, нужно взять 2 Ардуино, провода и USB. В первую очередь нужно настроить плату, которая будет выступать в качестве программатора. Ее нужно подключить к компьютеру, открыть среду разработки Arduino IDE и найти в примерах специальный скетч ArduinoISP. Нужно выбрать этот пример и прошить плату.

Теперь можно подключать вторую плату, которую нужно прошить, к первой. После этого нужно зайти в меню Инструменты и выставить там прошиваемую плату и тип программатора.

Можно начать прошивать устройство. Как только прошивка будет открыта или написана, нужно перейти в меню Скетч >> загрузить через программатор. Для заливания прошивки не подходит стандартная кнопка загрузки, так как в этом случае прошивка будет загружена на первую плату, на которой уже имеется прошивка.

Заключение

В этой статье мы рассмотрели различные аспекты загрузки скетчей в Arduino Uno и Nano. Прошивка плат на базе микроконтроллеров ATmega328 и ATmega256, как правило, не сложна и может выполняться одним нажатием кнопки в Arduino IDE. За эту простоту мы должны благодарить встроенную программу-загрузчик, выполняющую за нас все основные действия на низком уровне.

Еще одним вариантом перепрошивки контроллера является использование другой платы адуино или специальных программаторов, использующих микросхемы CP2102 CH340, FTDI и другие. Этот метод требует дополнительных усилий и затрат, но позволяет гибко изменять параметры прошивки. Какой из двух вариантов выбрать – решать вам. Для новичков, безусловно, первым шагом станет использование Arduino IDE, благо, ее создатели сделали все, чтобы упростить этот процесс.

Начну с того, что внеплановый выход нашей традиционной рубрики связан с моим скорым отъездом, поэтому воскресенье переносится на сегодня 🙂

А теперь по теме: я заметил, что некоторые участники направляют свои минусометы на пост "вопросов и ответов" по неизвестным мне причинам.. Но я догадываюсь, что скорее всего это происходит потому, что пост не несет им какой-либо полезной нагрузки и я их, конечно же, понимаю, но от помощи, пока есть люди, которым она нужна, мы отказаться тоже не можем, поэтому, по возможности, вместе с картинкой из рубрики я буду иногда добавлять под нее что нибудь полезное. Итак, попробуем..

Зачастую бывает ситуация когда вам нужно поставить в плату Arduino новый микроконтроллер ATmega328P, купленный, например, в Китае или радиомагазине. Но просто вставить чистый мк в плату нельзя, точнее можно, но пользы от него будет как с козла молока — загрузить какой-нибудь код через Arduino IDE как ни пытайся, не получится. А дело тут в том, что помимо самого мк, для Arduino нужно что бы в этом мк уже был зашит специальный код — так называемая программа-загрузчик (bootloader), более подробно о которой можно почитать, например, здесь: http://easyelectronics.ru/avr-uchebnyj-kurs-ispolzovanie-boo.

И тут встает вопрос прошивки чистого мк этой самой программкой, для последующего использования его в связке с Arduino..

К счастью, сделать это очень просто — вам понадобится сама плата Arduino, заметьте, с уже вставленным в неё "хорошим" оригинальным мк (на картинке отсутствует), кварцевый резонатор на 16МГц, макетная плата, чистый мк и 6-8 проводков.

По сути, плата Arduino будет выполнять роль обычного ISP-программатора.

Далее по пунктам:

1. Выбираем «Файл>>Примеры>>Arduino ISP»

2. Загружаем в нашу Arduino выбранный пример.

3. Далее «Сервис>>Плата» и выбираем тип платы для которой хотим записать загрузчик, в нашем случае — «Arduino UNO»

4. Далее «Сервис>>Программатор>>Arduino as ISP»

5. Подключаем наш ATmega328P согласно пинам из Arduino ISP

// pin name: not-mega: mega(1280 and 2560)
// slave reset: 10: 53
// MOSI: 11: 51
// MISO: 12: 50
// SCK: 13: 52

6. Между ногами 9 и 10, прошиваемого контроллера, подключаем резонатор номиналом 16 MHz

Читайте также:  Брелок фонарик со светодиодом

Вот так выглядит схема подключения, обратите внимание на специальную метку на микроконтроллере, она не даст вам ошибиться с подключаемыми к программатору ножками мк.

7. В меню сервис выбираем «Записать загрузчик».

Arduino начнет мигать лампочками и через некоторое время порадует нас сообщением об успешной загрузке bootloader-а в наш чистый мк. Все готово, теперь можно вынуть оригинальный мк из платы и вставить туда наш "свежеиспеченный" микроконтроллер, ну а оригинальный можно использовать, например, уже в конкретном проекте, где громоздкая отладочная плата Arduino больше не понадобится. Только перед этим, конечно, нужно не забыть обвязать этот мк необходимыми компонентами, схем подключения которых в сети большое количество.

На этом все, надеюсь кому-то эта информация будет полезной, всем добра и удачных компиляций! 🙂

Материал для поста был взят с сайта http://bigbarrel.ru/

Найдены возможные дубликаты

даа, давай пили) я сам столько всего хочу выложить да постоянно то одно, то другое, никак руки не доходят

Оу, очень интересно) ну все, ждем

и мой вопрос из предыдущего поста: кто знает о максимальном весе для беспилотников? протолкнули закон о 250 граммах или нет?

Вчера читал что подписали ограничение в 30 кг. Ссылку, увы, не сохранил.

Подтверждаю, тоже где-то читал что беспилотникам до 30 кг не нужно каких-то оформлений и прочего.

Задам тоже вопрос. Вот допустим есть 2 геркона и 2 светодиода. надо сделать так, чтобы они плавно загорались независимо друг от друга.

Как я понимаю "многозадачность" достигается отказом от функции Delay().

и с помощью millis() я их заставил таки работать независимо друг от друга.

теперь как сделать так, чтобы светодиоды зажигались и затухали плавно, под управлением герконов. (Геркон замкнулся — соответствующий светодиод плавно разгорается и горит пока геркон не разомкнется. Потом плавно затухает.)

я пробовал использовать millis() внутри цикла for(), вместо delay() , диоды загораются, но вполнакала и сразу.

кто занимается созданием плат с процессором ATmega? Нужен недорогой и рабочий вариант контроллера. Есть ардуинка, несколько модулей для нее и скетч рабочий, нужно все в одну плату соединить, но бюджет не больше 4,5 т.р /шт, и пока на очереди партия 6шт.

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

По идее если использовать программатор, и лить в него обычный ардуинокод — разницы 0.

Искал схемы и разводку под самодельную ардуинку. Из годного нашел только nanino. Может у кого есть готовые lay файлы? Хочется протравить себе пару платок)

некоторые участники направляют свои минусометы на пост "вопросов и ответов" по неизвестным мне причинам

встречный вопрос: нафига тебе этот пост в горячем?! ВиО посты набирают

20 рейта, зато 100+ камментов, не это ли показатель востребованности?

Ни в коем случае мне не нужны эти посты в горячем, вы меня не так поняли, мне лучше что бы их вообще нельзя было оценивать, просто по отрицательным оценкам я вижу что некоторым такие посты не нравятся и это не очень круто. Я понимаю что всем, конечно, не угодишь, но все-таки хотелось бы учитывать пожелания/мнения как можно большей части участников, отсюда и такие нововведения.

Ну например я специально подписался на сообщество ардуино что бы минусить все посты в нем. И не потому что посты плохие, вовсе не в этом дело. Просто я считаю ардуино — наебкой века. "Мы взяли процессор и запихнули его в свою плату, что бы вы могли подключить нашу плату к макетке, вместо того что бы сразу впихнуть проц в макетку". А с тонны проектов которые выдаются за серьезные и идут на конкурсы, мой пукан вообще улетает в небеса.

Так что не принимайте на свой счет. Посты хорошие, люди говно. (Перефразировал: © Народ то у нас хороший, да только вот люди говно).

Arduino — входной билет для многих людей в мир электроники, понижает уровень вхождения, чем снимает с электронщиков богообразие, показывая, что в принципе это просто. Поигравшись в ардуино, люди начинают делать свои проекты уже на отдельных платах и мк. Не спорю, многие остаются на уже готовом, потому что это проще и отвечает их задачам. Плюс ардуино — отличный вариант для отладки логики работы, потому что для прототипа не нужно практически ничего. Зато потом готовый вариант можно сразу делать без косяков. Либо делать сразу без косяков, но это далеко не всегда выходит.

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

Поэтому такие злорадные поцаны для меня те, кто из разряда уберхакеров превратился в обычных разбирающихся, не более того. Потому что я сам думал что все это сложно, купил плату и понял, что это нихуя не сложно. Но для этого мне понадобился готовый продукт.

И да — попробуй воткни ATmega1280 в макетку.

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

Конечно, можете минусить, я понимаю, что мое мнение расходиться с общественным. Но тем не менее, на вопрос откуда минуса в посте я дал ответ, хотя и понимал, что словлю минусов.

На счет же машин, это не то же самое. Машину покупают в 99% для того что бы просто ездить с тем или иным уровнем комфорта, и абсолютно не важно из чего она состоит, главное что она цель свою выполняет. А в случае плат — ими занимаются те, кто разрабатывают "машины" для тех кто будет на них "ездить". Повторюсь, я не имею ниче против проектов кому к примеру нужно че нить простенькое что можно собрать без пайки и сразу пользоваться, когда найти проектировщика будет сложнее чем сделать самому на коленке за пол часа, но у меня дико подгорает когда появляются "проектировщики", которые делают на ардуино сложные системы и идут с этим делом на конкурсы. Если возвратиться к примеру с машинами, то это скорее так: проектировщик автомобиля вместо того что бы самостоятельно сделать хороший продукт, тупо заимствует уже готовые решения, которые осталось только соединить и вуаля. Ой простите, кажется я привел пример автоваза, с которого, напомню, подгорает у многих именно по этой причине.
Нет, конечно сборка из кусочков это то же работа и она то же требует умений, однако нужно понимать где что использовать, так например собирать компьютер по транзистору, естественно не будет иметь смысла, или в том же вазе с нуля разрабатывать модель руля для какой нить бюджетной линейки авто.

Читайте также:  Вязаные тапочки крючком мастер класс

Приветствую всех пользователей хабра, в частности тех, кто страдает темой Arduino, как и я.

Меня уже давно спрашивают — можно ли прошивать hex файлы при помощи Arduino? Изменять фьюзы? Считывать прошивку? И всякое такое… Ответ — можно, и я сегодня вам расскажу, как я это делаю.


(Данное видео дублирует представленную ниже информацию)

Arduino — как по мне отличный старт для новичка, но нужно расти дальше, мир микроконтроллеров прекрасен и дарит огромные возможности, но, увы Arduino это довольно-таки узкопрофильное направление.

Небольшая предыстория:
Одного прекрасного дня, я наткнулся на отличный проект на ATtiny13, но увы автор выгрузил в сеть только hex-файл и схему, ну и конечно же, я так и не смог его попробовать в железе. Меня этот вопрос мучил всё больше и больше, и тут я случайно наткнулся на одно видео в сети, где автор утверждал, что он при помощи Arduino прошил другой микроконтроллер, имея только hex-файл, ну и схему, само собой. Именно он мне подсказал — используй SinaProg, но с Arduino’вскими файлами…

Загуглив на тему SinaProg, я скачал SinaProg 2.1.1.RUS, но он работать отказывался с Arduino, потому я закинул пару-тройку файлов из Arduino IDE в папку SinaProg 2.1.1data и всё заработало.

Пройдёмся коротко по возможностям софта:

В блоке Hex-file выбираем hex или eep(первый — прошивка, второй — содержимое энергонезависимой памяти).

А той части, где кнопка ">", мы можем видеть всякие сообщения, типа «OK», или «ERROR», сама же кнопка ">" открывает логи Avrdude.

В блоке Flash есть кнопки:

Program — запись hex-файла в микроконтроллер(возможно, когда выбран Hex-file);
Verify — проверка прошивки, что в микроконтроллере, и hex-файла(проще говоря, их сравнение), если всё норм — программа говорит OK;
Read — считать hex-файл.

С блоком EEPROM всё по аналогии.

Далее блок Device, тут можно выбрать нужный микроконтроллер, вот весь список поддерживаемых(список выдрал из файла Device.txt, который лежит в папке SinaProg 2.1.1data):

Шутка, вон их сколько:

AT90CAN128
AT90CAN32
AT90CAN64
AT90PWM2
AT90PWM2B
AT90PWM3
AT90PWM3B
AT90USB1286
AT90USB1287
AT90USB162
AT90USB646
AT90USB647
AT90USB82
AT90s1200
AT90s2313
AT90s2323
AT90s2333
AT90s2343
AT90s4414
AT90s4433
AT90s4434
AT90s8515
AT90s8535
ATmega103
ATmega128
ATmega1280
ATmega1281
ATmega1284P
ATmega128RFA1
ATmega16
ATmega161
ATmega162
ATmega163
ATmega164P
ATmega168
ATmega169
ATmega2560
ATmega2561
ATmega32
ATmega324P
ATmega325
ATmega3250
ATmega328P
ATmega329
ATmega3290
ATmega3290P
ATmega329P
ATmega48
ATmega64
ATmega640
ATmega644
ATmega644P
ATmega645
ATmega6450
ATmega649
ATmega6490
ATmega8
ATmega8515
ATmega8535
ATmega88
ATtiny11
ATtiny12
ATtiny13
ATtiny15
ATtiny22 2343
ATtiny2313
ATtiny24
ATtiny25
ATtiny26
ATtiny261
ATtiny44
ATtiny45
ATtiny461
ATtiny84
ATtiny85
ATtiny861
ATtiny88
ATxmega64A1
ATxmega128A1
ATxmega128A1D
ATxmega192A1
ATxmega256A1
ATxmega64A3
ATxmega128A3
ATxmega192A3
ATxmega256A3
ATxmega256A3B
ATxmega16A4
ATxmega32A4
ATxmega64A4
ATxmega128A4

Как видите, есть все популярные микроконтроллеры фирмы ATmel, в частности ATmega328P, ATmega8, ATtiny13, ATtiny2313 и всякие другие…

Далее — кнопка Search, если её нажать, то программа попытается прочитать сигнатуры того микроконтроллера, который подключен к программатору, проще говоря, поищет микроконтроллер. Потом может ответить „OK“ или „ERROR“ в информационном блоке, если всё нормально, или нет, соответственно.

В блоке Fuses есть предустановки для ATmega8 для работы на разных частотах, но, увы, только для ATmega8 и ATmega32, можно добавить в файле Fuse.txt (который лежит в папке SinaProg 2.1.1data).

Есть кнопка Program — записать предустановки, смотрим на абзац выше.

А так же Advanced — лихая кнопка, после её нажатия можно увидеть вот такое окно:

Device signature — какие-то циферки, я так понял это идентификатор микроконтроллера, по ним программа опознаёт, что за микроконтроллер мы ей суём.

Информационная часть, всё как выше.

Чуть ниже идут фьюзы… если уж зачешется, то не забывайте их сначала считать кнопкой Read(чтобы не нарочно изменить важные фьюзы, например «SPIEN» или «RSTDSBL»), записать фьюзы — кнопка Write, кнопка Chip Erase стирает микроконтроллер, что-то примерно напоминает — форматирование флешки на компьютере(но фьюзы не устанавливаются по умолчанию, так что забывать об этом не стоит).

Пару слов о фьюз-битах — это такие как бы тонкие подстройки микроконтроллера, то частоту поднять, то убавить, то вкл/выкл тактирование от внутренней RC цепочки то ещё что-то… в общем, туда лезть только в крайнем случае, иначе можно заблокировать микроконтроллер(нашаманить так, что перестанет работать, серьёзно), и уже без Atmega fusebit doctor никак.

Вот первая ссылка с гугла по запросу «калькулятор фьюзов», но предупреждаю, тыкать что-то там, не зная зачем оно, и потом это записывать в микроконтроллер — ни к чему хорошему не приведёт, я-то знаю.

Далее ещё какой-то информационный блок, не вникал особо. Ну и кнопка выход, я думаю вы уже об этом догадались, даже если и не знаете английский.

Итак, последний блок основного окна программы — Programmer, тут выбирается тип программатора, если вы используете Arduino в качестве программатора — ставьте всё, как у меня на скрине, только не COM19, это у меня такой, у вас, наверное, будет другой, в любом случае точно не COM1, первый это системный, актуален только для программаторов, которые подключаются к реальному COM порту, например, Программатор Громова. На ноутбуке COM-порта может не быть, а на компьютерах, как правило, COM-порт ещё есть, особенно тех, что постарше. Можно использовать и другой программатор, к примеру, USBASP, только не забываем выбрать его в списке, скорость для него я ставлю такую же как и в случае с AVRISP.

Список поддерживаемых программаторов:

Gromov
USBtiny
ALF
Arduino
AT ISP
AVR109
AVR910
AVR911
AVRISP
AVRISP 2
AVRISP mkII
AVRISP v2
Bascom
Blaster
BSD
Butterfly
C2N232I
DAPA
DASA
DASA 3
Dragon_DW
Dragon_HVSP
Dragon_ISP
Dragon_JTAG
Dragon_PP
DT006
ERE-ISP-AVR
Frank-STK200
Futurlec
JTAG 1
JTAG 1Slow
JTAG 2Slow
JTAG 2
JTAG 2Fast
JTAG 2ISP
JTAG 2dW
JTAG mkI
JTAG mkII
MIB510
pAVR
Picoweb
Pony-STK200
ponyser
SI Prog
SP12
STK200
STK500
STK500 HVSP
STK500 PP
STK500 v1
STK500 v2
STK600
STK600 HVSP
STK600 PP
USBasp
Xil

Лично я тестировал только на программаторах AVRISP(Arduino с прошитым скетчем ArduinoISP) и USBasp, на двух микроконтроллерах — ATmega8 и ATtiny13.

Чтобы можно было шить/читать/изменять фьюзы/ убить микроконтроллер при помощи Arduino, предварительно нужно зашить скетч ArduinoISP, подключив всё, как я писал, например вот тут:

Если в двух словах, то подключаем пины Reset, MOSI, MISO, SCK микроконтроллера, который будем прошивать/считывать прошивку/изменять фьюзы так, как указано в скетче в комментариях, а именно:

Вот пример подключения к ардуине ATmega8:

Ну и по аналогии… Ищем карту пинов, например, в даташите (техдокументация на МК) интересующего нас микроконтроллера, вот, к примеру, первая ссылка из гугла по запросу «ATmega8 pdf».

PS У меня было такое, что ATtiny13 перестала прошиваться, на попытки её программирования, после того, как я попробовал запустить её на частоте 128 kHz, откопал где-то вот такой, слегка модифицированный код ArduinoISP который заставляет прошивку/изменение фьюзов происходить медленнее в несколько раз и может ещё какая-то магия, не разбирался, честно.

Ссылка на основную публикацию
Adblock detector