Главная » Микроконтроллеры
Призовой фонд
на октябрь 2020 г.
1. 1500 руб
Сайт Паяльник
2. Тестер компонентов MG328
Сайт Паяльник
3. 150 руб.
От пользователей

Похожие статьи:



Прямоугольный переключатель, 2 контакта, 5 шт.

Программирование микроконтроллеров AVR

AVR-микроконтроллеры предоставляют пользователю несколько различных интерфейсов для программирования. Это последовательное программирование при высоком напряжении, последовательное программирование при низком напряжении через SPI, параллельное программирование при высоком напряжении и программирование по интерфейсу JTAG. Первый тип программирования встречается только в моделях AVR семейства ATtiny, последний - доступен некоторым моделям старшего семейства. Модели ATmega с наиболее развитой периферией могут поддерживать до трех различных интерфейсов программирования.

Подавляющее большинство AVR-микроконтроллеров обладают также способностью самопрограммирования, благодаря чему содержимое памяти программ можно модифицировать непосредственно из пользовательской программы. Кроме этого FLASH-память может быть перепрограммирована в режиме отладки через однопроводной интерфейс dW, имеющийся в ряде моделей ATmega и во всех новых моделях ATtiny.   

Программирование при высоком напряжении (параллельное и последовательное) требует значительного числа выводов микроконтроллера и дополнительного источника напряжения 12 В. По этой причине конструкция программаторов достаточно сложна. При высоковольтном программировании достигается наибольшая скорость записи и предоставляется максимальный доступ к ресурсам AVR. Чаще всего этот вид программирования применяется при крупносерийном заводском производстве.

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

Низковольтное последовательное программирование через SPI, наиболее распространено. Это способ стоит признать основным при программировании AVR-микроконтроллеров. Его поддерживают все модели с ядром AVR, за исключением двух устаревших представителей младшего семейства ATtiny11x и ATtiny28x. В данном разделе будет приведено описание двух программаторов работающих в подобном режиме. Первый из них можно рекомендовать для быстрого старта. Он имеет простую конструкцию и работает под управлением популярной радиолюбительской программы PonyProg2000. Второй, намного более совершенный, является функциональным аналогом AVR ISP фирмы ATMEL. Этот программатор интегрируется с IDE AVR Studio и позволяет реализовать алгоритмы программирования с максимально возможной точностью.

Особенности последовательного низковольтного программирования

Для взаимодействия программатора с микроконтроллером при последовательном низковольтном программировании используется аппаратный модуль SPI. Это очень практичное решение, позволяющее использовать минимальное число выводов и изменять алгоритмы работы устройства предварительно запаянного на плату. В виду последней причины программирование через SPI называют также еще внутрисхемным программированием или ISP (In System Programming).

Внутрисхемное программирование потребует задействовать у микроконтроллера в общей сложности 5 выводов. Это 3 линии модуля SPI (MISO, MOSI, SCK), вывод RESET и общий провод GND. В моделях семейства ATmega, имеющих на борту 64 и более кбайт FLASH-памяти, вместо MISO, MOSI используются выводы PDO и PDI, соответственно. В случае если программатор и микроконтроллер получают питание от одного источника, то дополнительно понадобится также вывод VCC, соединяющий шины питания. Перевод микроконтроллера в режим программирования осуществляется подачей низкого логического уровня на линию RESET. Длина шлейфа, соединяющего программатор с устройством, не должна превышать 15…20 см. 

Схема подключения программатора при внутрисхемном программировании одного микроконтроллера
Рис.1а Схема подключения программатора при
внутрисхемном программировании одного микроконтроллера

На рис.1а показана схема соединения программатора с AVR-микроконтроллером, при программировании через ISP. Для более надежной работы последовательно линиям MISO, MOSI, SCK рекомендуется включать сопротивления небольшого номинала. Напряжение питания программатора и устройства не должно иметь больших различий. Внутрисхемное программирование двух и более микроконтроллеров также возможно (рис.1б). В этом случае необходимо помнить об одном важном условии: в момент программирования на шине должен находиться только один активный микроконтроллер. Поэтому при проектировании платы заранее нужно предусмотреть переключатели (джампера J1, J2 на рис.1б), с помощью которых можно выборочно подавать напряжение на каждый программируемый микроконтроллер. После программирования модуль SPI или линии ввода-вывода, совпадающие с MISO, MOSI и SCK, могут быть использованы по своему прямому назначению.

При внутрисхемном программировании для чтения и записи доступны FLASH–память программ, EEPROM-память данных, биты защиты и управляющие FUSE–биты. Кроме этого могут быть считаны калибровочные ячейки и ячейки идентификатора.

Схема подключения программатора при внутрисхемном программировании 2-х и более микроконтроллеров
Рис.1а Схема подключения программатора при
внутрисхемном программировании 2-х и более микроконтроллеров

Изменения некоторых FUSE–битов необходимо производить с большой осторожностью. Особенно если демонтировать микроконтроллер уже не представляется возможным. Главным образом это касается битов RSTDISBL и DWEN (если таковые имеется). Сброс любого из них в дальнейшем сделает невозможным использование линии RESET микроконтроллера. При RSTDISBL=0 вывод RESET настраивается как линия порта ввода-вывода, а при DWEN=0 – вход RESET служит однопроводным отладочным интерфейсом dW. Естественно, что в обоих случаях работа программатора с микроконтроллером будет заблокирована. Кроме того во время внутрисхемного программирования микроконтроллеры AVR должны работать от собственного источника тактовой частоты, выбор которого осуществляется битами CKSEL3:CKSEL0. Если их настройка произведена некорректно (например, вместо внутреннего RC-генератора, выбран внешний кварцевый резонатор), то устройство может вообще отказаться работать. Еще один FUSE–бит, о котором следует помнить, - это SPIEN. SPIEN не доступен во время последовательного низковольтного программирования. Однако его установка при программировании в каком-либо другом режиме запретит работу модуля SPI. Напомним, что активизированным FUSE–битам соответствует состояние лог.0.

Все поступающие в продажу микроконтроллеры AVR изначально оптимизированы для внутрисхемного программирования. Биты DWEN, RSTDISBL, SPIEN имеют состояние 1, 1 и 0 соответственно, а CKSEL3:CKSEL0 установлены таким образом, что в качестве источника тактовой частоты запускается внутренний RC-генератор (как правило, на частоте 1 МГц), не требующий ни каких дополнительных деталей.

Перейти к следующей части:

Теги:

Котов Игорь Юрьевич Опубликована: 2012 г. 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (2) | Я собрал (0) | Подписаться

0
Сергей #
Неужели я первый прочитал эту статью? Для общего представления о программировании МК, так очень даже неплохо. Правда заметил одну ошибочку, а точнее опечатку: два раза написано Рис. 1а, хотя и так понятно, что второй рисунок - это Рис. 1б.
Автору благодарность
Ответить
0
Владимир #
Тема, в общем, для "голого" МК заезженная, но никто не пишет, как в спаянной схеме без коммутаций разойтись с задействованным интерфейсом SPI (по совместительству ISP).
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическое сопротивление?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

AVR-программатор USB ASP
AVR-программатор USB ASP
Ветрогенератор Бокс для хранения компонентов
вверх