какие фьюзы выставить для atmega328 для ардуино

IT миниблог

О том что нужно не потерять

Прошиваем Arduino программатором USBASP

какие фьюзы выставить для atmega328 для ардуино. Смотреть фото какие фьюзы выставить для atmega328 для ардуино. Смотреть картинку какие фьюзы выставить для atmega328 для ардуино. Картинка про какие фьюзы выставить для atmega328 для ардуино. Фото какие фьюзы выставить для atmega328 для ардуино

При замене чипа на arduino или при изготовлении самодельной Arduino часто возникает необходимость в прошивке чистого чипа Atmega328/168. У многих возникают с этим проблемы, опишу процесс по пунктам.

Для прошивки нам понадобится сама Arduino с распаянным / установленным чипом и программатор USBASP.

Из софта нужны будут следующие файлы:

Загрузчик (Bootloader) ATmegaBOOT_168_atmega328 (скачать)

Теперь подключаемся к Arduino по IСSP.

какие фьюзы выставить для atmega328 для ардуино. Смотреть фото какие фьюзы выставить для atmega328 для ардуино. Смотреть картинку какие фьюзы выставить для atmega328 для ардуино. Картинка про какие фьюзы выставить для atmega328 для ардуино. Фото какие фьюзы выставить для atmega328 для ардуино

Замыкаем JP3 на USBASP, так как частота нового контроллера слишком мала.

какие фьюзы выставить для atmega328 для ардуино. Смотреть фото какие фьюзы выставить для atmega328 для ардуино. Смотреть картинку какие фьюзы выставить для atmega328 для ардуино. Картинка про какие фьюзы выставить для atmega328 для ардуино. Фото какие фьюзы выставить для atmega328 для ардуиноОткрываем AVRDUDE_PROG, и сразу переключаемся на вкладку FUSES выставляем все как на картинке

какие фьюзы выставить для atmega328 для ардуино. Смотреть фото какие фьюзы выставить для atmega328 для ардуино. Смотреть картинку какие фьюзы выставить для atmega328 для ардуино. Картинка про какие фьюзы выставить для atmega328 для ардуино. Фото какие фьюзы выставить для atmega328 для ардуино В примере на картинке FUSES установленны для ARDUINO NANO 328!

Вот список для остальных контроллеров:

Фьюзы установленные по умолчанию в Arduino (только с ATmega328)
Arduino Uno
Low Fuse 0xFF
High Fuse 0xDE
Extended Fuse 0x05

Arduino Duemilanove or Nano w/ ATmega328
Low Fuse 0xFF
High Fuse 0xDA
Extended Fuse 0x05

Arduino BT w/ ATmega328
Low Fuse 0xFF
High Fuse 0xD8
Extended Fuse 0x05

LilyPad Arduino w/ ATmega328
Low Fuse 0xFF
High Fuse 0xDA
Extended Fuse 0x05

Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328
Low Fuse 0xFF
High Fuse 0xDA
Extended Fuse 0x05

После прошивки FUSES прошиваем загрузчик.

какие фьюзы выставить для atmega328 для ардуино. Смотреть фото какие фьюзы выставить для atmega328 для ардуино. Смотреть картинку какие фьюзы выставить для atmega328 для ардуино. Картинка про какие фьюзы выставить для atmega328 для ардуино. Фото какие фьюзы выставить для atmega328 для ардуино

Прошиваем Arduino программатором USBASP : 3 комментария

Спасибо! Я не знал про перемычку.

Считал фьюзы с помощью AVRDUDESHELL с Arduino UNO и NANO, они оказались одинаковые вот такого типа: LOW – 0xF7, HIGH – 0xDE, EXTENDED – 0xFD, LOCK – 0x3F. Хочу перешить загрузчики на Optiboot, какие фьюзы мне лучше поставить, какие были или которые указаны у Вас?

Источник

Про Ардуино и не только

воскресенье, 19 августа 2018 г.

Что такое Фьюзы. Чтение и запись фьюзов Ардуино

какие фьюзы выставить для atmega328 для ардуино. Смотреть фото какие фьюзы выставить для atmega328 для ардуино. Смотреть картинку какие фьюзы выставить для atmega328 для ардуино. Картинка про какие фьюзы выставить для atmega328 для ардуино. Фото какие фьюзы выставить для atmega328 для ардуино

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

При работе с конфигурационными битами нужно помнить один важный момент: если бит содержит логическую единицу, то это означает что он не запрограммирован, соответственно, запрограммированный конфигурационный бит содержит логический ноль. Такая логика основана на принципе хранения данных в EEPROM: чистая микросхема памяти содержит во всех ячейках единицы, а термин запрограммирована по отношению к такой ячейке означает, что в нее записали ноль.

Фьюзы ATmega328 / ATmega328p

Микроконтроллеры ATmega328 и ATmega328p, на базе которых построено большинство плат семейства Ардуино, имеют 3 байта конфигурации: младший, старший и дополнительный. Их описание приведено ниже в таблицах.

Младший конфигурационный байт ATmega328/P

Номер битаНаваниеОписаниеЗначение по умолчанию
7CKDIV8Divide clock by 80 (запрограммирован)
6CKOUTClock output1 (не запрограммирован)
5SUT1Select start-up time1 (не запрограммирован)
4SUT0Select start-up time0 (запрограммирован)
3CKSEL3Select Clock source0 (запрограммирован)
2CKSEL2Select Clock source0 (запрограммирован)
1CKSEL1Select Clock source1 (не запрограммирован)
0CKSEL0Select Clock source0 (запрограммирован)

Старший конфигурационный байт ATmega328/P

Номер битаНаваниеОписаниеЗначение по умолчанию
7RSTDISBLExternal Reset Disable1 (не запрограммирован)
6DWENdebugWIRE Enable1 (не запрограммирован)
5SPIENEnable Serial Program and Data Downloading0 (запрограммирован)
4WDTONWatchdog Timer Always On1 (не запрограммирован)
3EESAVEEEPROM memory is preserved through the Chip Erase1 (не запрограммирован)
2BOOTSZ1Select Boot Size0 (запрограммирован)
1BOOTSZ0Select Boot Size0 (запрограммирован)
0BOOTRSTSelect Reset Vector0 (запрограммирован)

Дополнительный конфигурационный байт ATmega328/P

Номер битаНаваниеОписаниеЗначение по умолчанию
71
61
51
41
31
2BODLEVEL2Brown-out Detector trigger level1 (не запрограммирован)
1BODLEVEL1Brown-out Detector trigger level1 (не запрограммирован)
0BODLEVEL0Brown-out Detector trigger level1 (не запрограммирован)

uno.name=Arduino/Genuino Uno
.
uno.bootloader.low_fuses=0xFF
uno.bootloader.high_fuses=0xDE
uno.bootloader.extended_fuses=0x05

Для расшифровки шестнадцатеричных значений конфигурационных байтов удобно использовать онлайн калькулятор Engbedded Atmel AVR® Fuse Calculator:

какие фьюзы выставить для atmega328 для ардуино. Смотреть фото какие фьюзы выставить для atmega328 для ардуино. Смотреть картинку какие фьюзы выставить для atmega328 для ардуино. Картинка про какие фьюзы выставить для atmega328 для ардуино. Фото какие фьюзы выставить для atmega328 для ардуино

Рассмотрим назначение конфигурационных битов более подробно.

CKDIV8

CKOUT

Конфигурационные биты SUT совместно с битами CKSEL определяют длительность задержки при старте микроконтроллера. Задержка необходима для того, чтобы источник тактовой частоты стабилизировался после подачи питания и вошел в свой рабочий режим. Величина задержки зависит от выбранного источника и составляет от 0 до 65мс. Конкретные значения можно найти в даташите.

CKSEL

Современные микроконтроллеры способны работать с различными источниками тактового сигнала. Выбор источника осуществляется установкой конфигурационных битов CKSEL. В таблице ниже приведены источники тактового сигнала, поддерживаемые микроконтроллерами ATmega328 / ATmega328P, и соответствующие им значения CKSEL.

Источник тактового сигналаЗначение CKSEL3..0
Экономичный кварцевый генератор1111-1000
Кварцевый генератор0111-0110
Низкочастотный кварцевый генератор0101-0100
Внутренний RC-генератор на 128кГц0011
Внутренний калиброванный RC-генератор0010
Внешний сигнал синхронизации0000
Зарезервировано0001

RSTDISBL

Фьюз RSTDISBL управляет работой цифрового вывода микроконтроллера, совмещенного с входом внешнего сброса. Если RSTDISBL запрограммирован, то вывод может быть использован как обычный цифровой пин ввода/вывода. Если фьюз RSTDISBL не запрограммирован, то вывод используется для внешнего сигнала сброса: низкий уровень напряжения на нем приводит к генерации сигнала сброса микроконтроллера. Отключение внешнего сброса может быть оправдано при работе с микроконтроллерами, имеющими небольшое количество выводов, в других случаях лучше не трогать этот фьюз.

Источник

Узнайте о битах конфигурации ATmega328P и о том, как использовать их с внешним кварцевым резонатором

В данном проекте приводится введение во fuse-биты ATmega328P и показывается, как установить их для использования внешнего кварцевого резонатора 16 МГц.

Обзор статьи

Fuse-биты, также известные как фьюзы или биты конфигурации, – это настройки микроконтроллера для управления определенными действиями, которые обычно не изменяются во время выполнения программного кода. В данной статье вкратце объясняется, какие действия находятся в ATmega328P, и как их устанавливать. Fuse-биты для выбора источника тактового сигнала будут рассмотрены более подробно, в том числе, как и зачем выбрать внешний кварцевый резонатор 16 МГц.

Схема программирования ATMega328P

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

какие фьюзы выставить для atmega328 для ардуино. Смотреть фото какие фьюзы выставить для atmega328 для ардуино. Смотреть картинку какие фьюзы выставить для atmega328 для ардуино. Картинка про какие фьюзы выставить для atmega328 для ардуино. Фото какие фьюзы выставить для atmega328 для ардуино Схема программирования ATmega328P

Биты конфигурации ATmega328P

Три байта конфигурации

В ATmega328P в общей сложности имеется 19 бит конфигурации, и они разделены на три разных байта конфигурации. Три бита конфигурации содержатся в «дополнительном байте конфигурации», восемь – в «старшем байте конфигурации», и еще восемь – в «младшем байте конфигурации».

Ниже приводится таблица 31-5 из технического описания ATmega328P версии от ноября 2016 года. Как вы можете видеть, весь дополнительный байт конфигурации работает с уровнем контроля понижения напряжения питания микроконтроллера (brownout).Контроль понижения напряжения питания (brownout) является особенность многих микроконтроллеров, что позволяет им перезагружаться, когда напряжение питания падает ниже определенного уровня. В случае ATMega328P в качестве минимально допустимого напряжения питания можно выбрать одно из трех разных напряжений (1,8 В, 2,7 В или 4,3 В).

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

Таблица 31-5. Дополнительный байт конфигурации ATmega328P

Название бита конфигурацииНомер битаОписаниеЗначение по умолчанию
71
61
51
41
31
BODLEVEL22Уровень срабатывания детектора понижения напряжения питания1 (не запрограммирован)
BODLEVEL11Уровень срабатывания детектора понижения напряжения питания1 (не запрограммирован)
BODLEVEL00Уровень срабатывания детектора понижения напряжения питания1 (не запрограммирован)

Ниже приведена таблица 31-6 из технического описания. Биты 2-0 используются для установки размера области загрузки ATmega328P; размер области загрузки относится к объему памяти, зарезервированному для установки «загрузчика», аналогичного функции загрузчика, используемого в линейке отладочных плат Arduino. Назначение оставшихся битов в старшем байте конфигурации достаточно понятно из описаний в таблице. Два бита, которых следует избегать, если вы не уверены, что знаете, что делаете, это бит 7, бит RSTDISBL (выключение внешнего сброса), и бит 5 бит SPIEN (включение последовательного периферийного интерфейса). Отключение одного из них часто является причиной появления «кирпичных» микроконтроллеров Atmel; поэтому хорошим советом будет: «оставить их в покое».

Таблица 31-6. Старший байт конфигурации

Название бита конфигурацииНомер битаОписаниеЗначение по умолчанию
RSTDISBL7Выключение внешнего сброса1 (не запрограммирован)
DWEN6Включение DebugWire1 (не запрограммирован)
SPIEN5Включение последовательного программирования и загрузки данных0 (запрограммирован, SPI программирование включено)
WDTON4Сторожевой таймер всегда включен1 (не запрограммирован)
EESAVE3Память EEPROM сохраняется при стирании чипа1 (не запрограммирован), EEPROM не защищена
BOOTSZ12Выбор размера области загрузки (смотрите параметры загрузчика)0 (запрограммирован)
BOOTSZ01Выбор размера области загрузки (смотрите параметры загрузчика)0 (запрограммирован)
BOOTRST0Выбор вектора сброса1 (не запрограммирован)

Подробная информация о назначении всех 19 битов конфигурации содержится в техническом описании ATmega328P; в данной статье будет включено описание настройки младшего байта конфигурации. Однако общий процесс программирования всех битов конфигурации аналогичен.

Варианты выбора младшего байта конфигурации

Младший байт конфигурации выбирает источник тактового сигнала ATmega328P и управляет некоторыми деталями работы тактовой синхронизации. Ниже приведена таблица 31-7 из технического описания.

Таблица 31-7. Младший байт конфигурации

Название бита конфигурацииНомер битаОписаниеЗначение по умолчанию
CKDIV87Делитель на 80 (запрограммирован)
CKOUT6Выход тактового сигнала1 (не запрограммирован)
SUT15Выбор времени запуска1 (не запрограммирован)
SUT04Выбор времени запуска0 (запрограммирован)
CKSEL33Выбор источника тактового сигнала0 (запрограммирован)
CKSEL22Выбор источника тактового сигнала0 (запрограммирован)
CKSEL11Выбор источника тактового сигнала1 (не запрограммирован)
CKSEL00Выбор источника тактового сигнала0 (запрограммирован)

Не забывайте, что программирование бита конфигурации состоит в том, чтобы установить его в состояние низкого логического уровня, т.е. 0. Например, обратите внимание, что бит 7 используется для включения/выключения деления частоты тактового сигнала на 8; чтобы включить деление тактовой частоты на 8, бит 7 должен быть установлен в 0, а для отключения деления бит 7 должен быть установлен в 1.

Примечание: для всех битов конфигурации, ‘1’ означает не запрограммированный, а ‘0’ – запрограммированный.

Значения по умолчанию младшего байта конфигурации

Вау! По общему признанию, чтобы установить 8 бит младшего байта конфигурации, требуется много данных, но всё это необходимо, и нет «пути обхода» (рискуя казаться чрезмерно критичным, автор данной статьи считает, что техническое описание может быть написано более четко, чтобы передать детали этого довольно запутанного процесса).

К счастью, есть много информации, которая в техническом описании указана четко, значения по умолчанию, установленные в ATmega328, не содержат ошибок. Посмотрите на таблицу 31-7, представленную ранее:

Примечание:

Примечание:

Теперь вам должно быть понятно, что младший байт конфигурации предварительно запрограммирован на 01100010 (что в шестнадцатеричной нотации равно 0x62), и что это значит для работы микроконтроллера. Если что-то из этого вам непонятно, не удивляйтесь: это сложный вопрос. Вероятно, вам стоит потратить время и перечитать разделы 13 и 31 технического описания ATmega328P.

Теперь сделаем некоторые изменения

Если вы знакомы с семейством микроконтроллерных платформ Arduino, особенно с Arduino Uno, вы, вероятно, помните, что она использует микроконтроллер ATmega328P. Возможно, вы также помните, что UNO имеет внешнюю схему генератора, состоящую из кристалла 16 МГц и двух небольших керамических конденсаторов (часто около 22 пФ каждый). Вы можете также вспомнить, что рабочая частота UNO равна 16 МГц.

Но как насчет ATmega328P? Можете ли вы определить его стандартную рабочую частоту, когда он поставляется с завода?

Вы знаете, что по умолчанию источник тактового сигнала в ATmega328P – это внутренний RC генератор, но вы помните его частоту? Ответ в приложении 2 в таблице 31-7: 8 МГц. И поскольку значение по умолчанию бита 7 младшего байта конфигурации равно 0, деление тактовой частоты на 8 включено. Таким образом, стандартная рабочая частота ATmega328P равна. погодите. 1 МГц.

Но предположим, ваш проект требует тактовую частоту ATmega328P 16 МГц, знаете ли вы, как это сделать? Как обычно, требуется и аппаратное, и программное вмешательство.

Аппаратные изменения: добавим кварцевый резонатор

Чтобы запустить ATmega328P на частоте 16 МГц, вам нужно добавить в схему, показанную в самом начале статьи, внешний кварцевый резонатор. Требуются только три новые детали: резонатор 16 МГц и два керамических конденсатора 22 пФ. Полученная схема показана ниже, а после нее показана фотография собранного макета.

какие фьюзы выставить для atmega328 для ардуино. Смотреть фото какие фьюзы выставить для atmega328 для ардуино. Смотреть картинку какие фьюзы выставить для atmega328 для ардуино. Картинка про какие фьюзы выставить для atmega328 для ардуино. Фото какие фьюзы выставить для atmega328 для ардуино Схема программирования ATmega328P с внешним кварцем и программатором AVR Pocket какие фьюзы выставить для atmega328 для ардуино. Смотреть фото какие фьюзы выставить для atmega328 для ардуино. Смотреть картинку какие фьюзы выставить для atmega328 для ардуино. Картинка про какие фьюзы выставить для atmega328 для ардуино. Фото какие фьюзы выставить для atmega328 для ардуино Схема программирования ATmega328P с внешним кварцем и программатором AVR Pocket

Программные изменения: изменение настроек младшего байта конфигурации

После того, как вы добавили схему кварцевого генератора на 16 МГц и дважды перепроверили разводку, следующая цель – определить, какие изменения в битах конфигурации необходимы для кварцевого генератора низкой мощности. Дополнительный и старший байты конфигурации не зависят от изменений генератора; необходимо изменить только младший байт конфигурации.

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

Рассмотрим младший байт конфигурации бит за битом.

Примечание: для всех битов конфигурации, ‘1’ означает не запрограммированный, а ‘0’ – запрограммированный.

Таблица 13-3 указывает, что для работы с частотой от 8,0 до 16,0 МГц биты 3-1 (CKSEL[3:1]) должны быть установлены в 111. Но что с CKSEL0? Читаем дальше.

Таблица 13-3. Режимы кварцевого генератора малой мощности (1)

Диапазон частот, МГцCKSEL[3:1] (2)Диапазон номиналов конденсаторов C1 и C2, пФ
0,4 – 0,9100 (3)
0,9 – 3,010112 – 22
3,0 – 8,011012 – 22
8,0 – 16,011112 – 22

Примечание:

Биты 5 и 4 управляют временем запуска, а значение по умолчанию 10 обеспечивает задержку запуска на 6 тактовых циклов после выключения или снижения энергопотребления плюс дополнительную задержку запуска на 14 тактовых циклов плюс 65 миллисекунд после сброса. Из таблицы 13-4 видно, что, чтобы быть в безопасной зоне для кварцевого генератора малой мощности, вам необходима максимально возможная задержка в 16000 тактовых циклов после выключения или снижения энергопотребления, поэтому SUT1 должен быть установлен в 1, плюс дополнительная задержка запуска на 14 тактовых циклов и 65 миллисекунд после сброса, поэтому SUT0 должен быть установлен в 1. Кроме того, CKSEL0 должен быть установлен в 1.

Таблица 13-4. Время запуска при выборе кварцевого генератора малой мощности

Резонатор генератора источника / условия питанияВремя запуска после выключения и снижения энергопотребленияДополнительная задержка после сброса (VCC = 5.0 В)CKSEL0SUT[1:0]
Керамический резонатор, быстро нарастающее напряжение питания258 тактовых циклов14 тактовых циклов + 4,1 мс (1)000
Керамический резонатор, медленно нарастающее напряжение питания258 тактовых циклов14 тактовых циклов + 65 мс (2)001
Керамический резонатор, BOD включен1 тактовый цикл14 тактовых циклов (2)010
Керамический резонатор, быстро нарастающее напряжение питания1 тактовый цикл14 тактовых циклов + 4,1 мс (2)011
Керамический резонатор, медленно нарастающее напряжение питания1 тактовый цикл14 тактовых циклов + 65 мс (2)100
Кварцевый резонатор, BOD включен16 тактовых циклов14 тактовых циклов101
Кварцевый резонатор, быстро нарастающее напряжение питания16 тактовых циклов14 тактовых циклов + 4,1 мс110
Кварцевый резонатор, медленно нарастающее напряжение питания16 тактовых циклов14 тактовых циклов + 65 мс111

Примечание:

Таким образом, бит 7 равен 1, бит 6 равен 1, бит 5 равен 1, бит 4 равен 1, биты 3-0 равны 1111. Следовательно, младший байт конфигурации должен быть равен 11111111, что в шестнадцатеричной нотации равно 0xFF. Наконец-то мы получили его!

Avrdude

Avrdude – это утилита с командной строкой, которая более подробно объясняется в этой статье. Это единственный программный инструмент, необходимый для программирования изменений байтов конфигурации в ATmega328P и длинного списка других микроконтроллеров Atmel. Скриншот ниже – это реальный сеанс avrdude с карманным программатором AVR, подключенным к ATmega328P, как показано на принципиальной схеме и макетной сборке выше. Номера строк были добавлены на скриншот, чтобы упростить описание сессии программирования.

Строки 1-3 были сгенерированы avrdude, как только программа была запущена.

Строка 5 показывает, что активный каталог изменяется на место, где была установлена avrdude. В этом случае каталог также называется «avrdude». Вы должны перейти в каталог, в который установили avrdude на свой компьютер.

Строка 7 – это команда, чтобы указать avrdude, какие используются программатор и микроконтроллер. В этом случае программатор AVR Pocket использует драйвер USBTiny, а используемый микроконтроллер – ATmega328P.

Строки 9-17 – это отклики avrdude. Строка 13 представляет сигнатуру ATmega328P в шестнадцатеричной нотации 0x1e950f. Строка 15 представляет байты конфигурации, запрограммированные в ATmega328P в текущее время, также в шестнадцатеричной нотации; в этом случае байты конфигурации запрограммированы на заводе и имеют значения по умолчанию. Дополнительный байт конфигурации равен 0xFF, старший байт конфигурации равен 0xD9, и младший байт конфигурации равен 0x62.

Строка 20 – это команда, чтобы сказать avrdude, какие используются программатор и микроконтроллер, и изменить младший байт конфигурации на 0xFF.

Строки 22-45 – это ответы от avrdude. Каждая строка представляет выполненный шаг, а строка 43 представляет программирование новых битов конфигурации в ATmega328P. Дополнительный байт конфигурации равен 0xFF, старший байт конфигурации равен 0xD9, и младший байт конфигурации равен 0xFF.

Строка 48 – это команда, указывающая avrdude, какие используются программатор и микроконтроллер, и изменить младший байт конфигурации на 0x62 (установка младшего байта конфигурации на 0x62 необходима, только если вы хотите вернуться к исходной конфигурации, поскольку значение 0x62 является значением по умолчанию).

Строки 50-73 – это ответы от avrdude. Каждая строка представляет выполненный шаг, а строка 71 представляет программирование новых битов конфигурации в ATmega328P. Дополнительный байт конфигурации равен 0xFF, старший байт конфигурации равен 0xD9, и младший байт конфигурации равен 0x62. Теперь байты конфигурации снова запрограммированы на заводские значения по умолчанию.

какие фьюзы выставить для atmega328 для ардуино. Смотреть фото какие фьюзы выставить для atmega328 для ардуино. Смотреть картинку какие фьюзы выставить для atmega328 для ардуино. Картинка про какие фьюзы выставить для atmega328 для ардуино. Фото какие фьюзы выставить для atmega328 для ардуино Примеры чтения и записи младшего байта конфигурации с помощью avrdude

«Прошивка» младшего байта конфигурации

Когда всё (и аппаратное, и программное обеспечение) готово, реальное перепрограммирование байтов конфигурации довольно противоречиво; оно происходит так быстро, что, если вы не смотрите внимательно, то можете упустить его. Таким образом, стоит представить некоторые доказательства выполненных изменений. Это достаточно легко сделать, используя ту же программу мигания светодиодом, что и в статье «Макетирование и программирование ATmega328P и ATtiny45 с помощью Atmel Studio 7». Если она всё еще запрограммирована в ваш ATmega328P, то вы готовы; если нет, то создайте файл с кодом, приведенным ниже, и запрограммируйте микроконтроллер скомпилированной программой.

New_Blink.c мигает желтым светодиодом, включая его на ½ секунды и выключая на ½, 60 раз в минуту. Убедитесь, что программа всё еще делает это на вашем макете.

Как вы (надеюсь) вспомните, ATmega328P использует свой откалиброванный внутренний генератор и не полагается на 16-мегагерцовый кварцевый резонатор, который вы только что добавили. В данный момент резонатор игнорируется из-за настроек младшего байта конфигурации (помните, что младший байт конфигурации всё еще установлен в заводское значение по умолчанию 0x62, которое указывает на использование внутреннего геренатора). К счастью, наличие резонатора и двух конденсаторов 22 пФ ничем не мешает использованию внутреннего генератора. Чтобы перейти на 16-мегагерцовый кварцевый генератор, выполните следующие два шага:

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

Мало того, что значение младшего байта конфигурации 0x62 вызывает использование внутреннего генератора 8 МГц, оно также указывает на то, что включена функция деления на 8. Поэтому эффективная частота генератора составляет 1 МГц, что отражено в строке 3 кода New_Blink.c (важно понимать, что строка 3 не контролирует частоту, с которой запускается ATmega328P, а просто сообщает компилятору, что микроконтроллер должен работать на частоте 1 МГц, чтобы код выполнялся с нужной скоростью).

Поскольку вы изменили младший байт конфигурации с 0x62 на 0xFF, вы изменили используемый генератор на кварцевый генератор 16 МГц. Кроме того, вы отключили функцию деления на 8. Чистый эффект этих двух изменений заключается в том, что тактовая частота ATmega328P теперь составляет 16 МГц, но строка 3 New_Blink.c всё еще сообщает компилятору, что микроконтроллер работает на частоте 1 МГц. Поэтому скорость мигания теперь в 16 раз больше, чем должна быть. Что делать?

А есть способ проще?

Вы можете спросить: «А нет более простого способа?», и ответ: «Да». Есть несколько онлайн-приложений, которые будут определять настроки байта конфигурации, отображающие выбранные функции, и одним из самых популярных является калькулятор EngBedded’s AVR Fuse Calculator. Тем не менее, веб-сайты могут исчезать, и всегда хорошо знать, как сделать это самостоятельно; таким образом вы можете в дополнение к «что» понять «как» и «почему».

Что дальше?

В следующей статье из серии мы обсудим работу Atmel Studio 7 более подробно и рассмотрим более дешевый способ получения genuine Atmel ICE программатора.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *