Подключаемся к микроконтроллерам AVR для программирования

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

Для начала будем работать с микроконтроллером ATmega8 и программатором AVRISP mkII.

Программатор имеет следующие разъёмы:

Разъёмы программатора AVRISP mkII
Разъёмы программатора AVRISP mkII

Схема подключения ATmega8

Для программирования микроконтроллера необходимо правильно подключить питание и линии интерфейса программирования.

Схема подключения микроконтроллера ATmega8
Схема подключения микроконтроллера ATmega8

Биты установок — фьюзы

Независимо от используемого программатора и среды разработки, для микроконтроллеров AVR необходимо понимать назначение конфигурационных битов — фьюзов.

В наших примерах будем использовать Microchip Studio.

Настройка фьюзов ATmega8
Окно настройки фьюзов микроконтроллера
  • RSTDSBL (ReSeT DiSaBLe) — отключает функцию аппаратного RESET и превращает соответствующий вывод микроконтроллера в обычный порт ввода/вывода.
  • CKSEL0..3 (ClocK SELect) — используются для выбора источника и режима тактирования микроконтроллера: внутренний RC-генератор, внешний кварц и другие варианты.
  • CKDIV8 (ClocK DIVision 8) — при включении делит тактовую частоту на 8.
  • CKOPT (ClocK OPTimization) — управляет режимом работы тактового генератора, его энергопотреблением и помехоустойчивостью.
  • SUT0..1 (Start Up Time) — определяют задержку запуска микроконтроллера после подачи питания или сброса.
  • SPIEN (Serial Programming Interface ENable) — разрешает или запрещает программирование через последовательный интерфейс.
  • JTAGEN (JTAG ENable) — разрешает или запрещает работу интерфейса JTAG.
  • EESAVE (EEPROM SAVE) — позволяет сохранить содержимое EEPROM при стирании микроконтроллера.
  • WDTON (Watch Dog Timer ON) — определяет режим запуска сторожевого таймера.
  • BODEN и BODLEVEL — отвечают за включение и настройку контроля напряжения питания микроконтроллера.
  • BOOTRST (BOOT ReSeT) — позволяет запускать программу из области загрузчика Boot Loader.
Важно: изменять фьюзы необходимо внимательно. Неправильная настройка источника тактирования или отключение RESET может привести к тому, что обычный программатор перестанет видеть микроконтроллер.

Программирование в Microchip Studio

Программный код будем писать в Microchip Studio.

Для перехода к окну программирования микроконтроллера нажимаем Ctrl + Shift + P. В открывшемся окне выбираем программатор, микроконтроллер и необходимые параметры подключения.

Настройка программирования ATmega8 в Microchip Studio
Окно настройки программатора в Microchip Studio

Плата Arduino Nano

В дальнейших уроках мы также будем использовать готовую плату Arduino Nano на базе микроконтроллера ATmega328P.

Эту плату также можно программировать непосредственно через программатор AVRISP mkII.

Обратите внимание: при программировании Arduino Nano через AVRISP mkII встроенный загрузчик Arduino может быть стёрт. После этого обычная загрузка программы через Arduino IDE по USB может перестать работать до восстановления загрузчика.

Расположение выводов ATmega328P

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

Расположение выводов микроконтроллера ATmega328P
Расположение и назначение выводов ATmega328P