Программы для радиолюбителей.
1) Atmel Studio
Производитель Atmel, приложение служит в качестве среды разработки приложений для устройств ARM, AVR и контроллеров Cortex-M. Программа распространяется бесплатно.
Скачать программу вы можете с официального сайта Atmel Studio.
2) AVRDUDE
Интерфейс программы консольный, предназначена, чтобы изменять и записывать данные в памяти устройств c AVR архитектурой. В программе применяется технология программирования непосредственно в самой схеме. Приложение на английском, но существуют русификаторы. Распространение свободное.
Скачат программу AVRDUDE.
3)WinAVR
Исходный код программы открыт и свободен для редактирования – это позволяет подправить ее под свои потребности.
Скачат программу WinAVR.
4)BascomAVR
Выполняет роль среды написания кода к Atmel устройствам AVR серии. Язык написания кодов программы, похож на Бэйсик. Доступ к ней ограничен, но есть и свободная версия, без ряда функций и максимальным кодом в 4 килобайта.
Скачат программу BascomAVR.
5)CodeVisionAVR
Программа проста в освоении и способна работать со всеми контроллерами AVR от IDE. В результате получается короткий и емкий код, но не слишком изящный, зато работает. Доступ к ней платный, есть свободная пробная версия, с максимальным кодом в 4 килобайта.
Скачать программу CodeVisionAVR.
6)VM LAB
Комплекс утилит для создания и настройки кода программы, на ряду с этим создает модель работы устройства с контроллерами AVR серии. Софт распространяется свободно.
Скачать программу VM LAB.
7)MPLAB
Работает с продукцией компании Microchip как среда для интеграции кода непосредственно в чип. Бесплатная в распространении.
Скачать программу MPLAB.
8)WinPic800
Служит для перепрошивания контролирующих компонентов из серии контроллеров PIC. Комплект в свободном онлайн доступе. Есть русификаторы.
Скачать программу WinPic800.
9) PICPgm
Очень качественный продукт с высоким качеством работы и скоростью написания кода, стабильно работающий. Служит для перепрошивки PIC-микроконтроллеров. Свободно распространяется.
Скачать программу PICPgm.
10) CooCoxCoIDE
Работает с устройствами в чью архитектуру заложен ARM, как программная среда с высокой степенью интеграции.
Скачать программу CooCoxCoIDE.
11) Keil uVision
Целый комплект программ утилит для прохождения всех по написанию управляющего софта для микроконтроллеров всех производителей. Этот комплект не бесплатный, но, чтобы ознакомиться есть демо-версия, в которой код ограничен 32 килобайтами и еще несколькими параметрами.
Скачать программу Keil uVision.
12) IAREmbedded
Программирование происходит на популярных языках программирования C, а также C++, и на ассемблере. Работает с разными производителями и семействами контроллеров. Распространение продукта платное, также доступна и версия свободного доступа, но с урезанным размером кода.
Скачать программу I AR Embedded.
13) Flow Сode
Один из самых известных графически оформленных инструментов для создания ПО к микроконтроллерам. Возможно приобретение русской версии. Распространяется за деньги, но доступна и свободная версия, ограничивающая серию PIC.
Скачать программу Flow Сode.
15) AlgorithmBuilder
Имеет оформленную визуальную оболочку и работает с AVR устройствами от отечественного производителя. Распространяется бесплатно.
Скачать программу AlgorithmBuilder.
16) MikroC
Пакет инструментов с редакторами кода, библиотеками с готовыми функциями, отладчиками и компилллирующими пакетами. Распространяется за деньги, но есть и бесплатная версия, только ограниченная.
Скачать программу MikroC.
17) ICProgramm
Один из популярнейших механизмов с оболочкой для создания к микроконтроллерам программного обеспечения всех видов и производителей. Русифицированная версия. Распространяется без ограничений.
Скачать программу ICProgramm.
18)PonyProgramm 2000
Программатор для работы с устройствами памяти и микроконтроллерами многих фирм через последовательный доступ. Много встроенных функций и простота в использовании. Распространяется бесплатно.
Скачать программу PonyProgramm 2000.
19) Sina Programm
Это графическая рубашка для консольного проекта AVRdude, со встроенным и удобным fust счетчиком переключателей. Распространяется бесплатно.
Скачать программу Sina Programm.
20) UniProf
Очень прост в использовании, распространяется абсолютно свободно и работает со всеми устройствами серии AVR.
Скачать программу UniProf.
21) Code Composer Studio
Это мощная комплекс программного обеспечения для программирования и прошивки от производителя TexInstInc. Для использования нужно купить. Есть пробная версия с ограничениями со свободным доступом.
Скачать программу Code Composer Studio.
22) Tiva Ware
Очень хорошие и удобные специально под TIVA написанные библиотеки для контроллеров от техасского производителя. Пакет бесплатный.
Скачать программу Tiva Ware.
23) FastAVR
Работает на воьмибитных контроллерах серии AVR. Удобен, так как компилируется язык, похожий на Бэйсик.
Скачать программу FastAVR.
24)Sourcery CodeBench
Служит чтобы создавать приложения под ARM, Cold Fire и целый ряд других. Работает на C, а также C++. Стоимость составляет четыреста долларов (есть пробная версия на месяц).
Скачать программу Sourcery CodeBench.
25) Code System
Целый комплект программ и инструментов для через который удобно работать с промышленным оборудованием, ориентированным на рутинную работу. Есть полностью русская версия. Распространяется свободно и без ограничений.
Скачать программу Code System
26) FlashMagic
Распространение этого продукта свободное, утилита направлена на программирование продукта именно от NXP – S.
Скачать программу FlashMagic.
27) STEPSEVEN-Micro/WIN
Создан специально чтобы работать с устройствами SIMATIC, производимыми Siemens. Бесплатной версии нет.
Скачать программу STEPSEVEN-Micro/WIN.
28) 4DWorkshopIDE
Работает с ориентированными на графику контроллерами и с дисплейными модулями от 4D Systems. Абсолютно бесплатная.
Скачать программу 4DWorkshopIDE.
Comments are now closed for this entry
Устройство и программирование микроконтроллеров AVR. Микроконтроллер и как его победить.
Доброго дня уважаемые радиолюбители!
Приветствую вас на сайте “Радиолюбитель“
Что такое микроконтроллер, и для чего он нужен. Давайте обратимся к его определению:
Микроконтроллер – микросхема, предназначенная для управления электронными устройствами, или по другому – простенький компьютер (микро-ЭВМ), способный выполнять несложные задачи.
То есть, по сути, микроконтроллер – это устройство, позволяющее воплотить в жизнь наши идеи (даже бредовые), но, естественно, в пределах своих возможностей. И самое главное, воплощение идеи в жизнь достигается не созданием навороченных электронных конструкций, а лишь только, в основном, силой нашей мысли (желаете стать волшебником?).
Наибольшей популярностью у радиолюбителей пользуются два вида микроконтроллеров:
– PIC – фирмы Microchip Technology
– AVR – фирмы Atmel
Сразу хочу сделать небольшое отступление и пояснить одну свою позицию. Я не собираюсь ни сейчас, ни потом, рассуждать о достоинствах того или иного вида микроконтроллеров, того или иного программного обеспечения, и вообще всего, что связано с микроконтроллерами, что-то советовать, но а тем более – навязывать читателям. Все это дело вкуса, личных предпочтений и поставленных конечных целей в изучении микроконтроллеров. Ну а так как “необъятное – не объять”, все свое дальнейшее повествование я буду вести применительно к микроконтроллерам AVR и, не очень распространенной, но мной любимой, программы “Algorithm Builder”. У разных типов микроконтроллеров, программ, есть, конечно, различия, но многое у них и общее. А познавать мир микроконтроллеров мы будем так, чтобы потом, полученные знания можно было бы без проблем применить и к PICам, и к любому программному обеспечению. И еще раз напомню, данная серия статей – моя попытка помочь тем, кто впервые услышал о существовании микроконтроллеров и желает постичь работу с ними.
Что нужно для того, чтобы научиться работать с микроконтроллерами? Я бы выделил несколько, на мой взгляд, главных условий:
1. Желание и настойчивость.
Тут все очень просто: есть желание – все получится. А желание с настойчивостью – вообще, вещь суперская.
2. Знание устройства микроконтроллера.
Здесь не важны глубокие знания (да может и вообще не нужны), но знать, что имеется “на борту” микроконтроллера необходимо. Только зная из чего состоит микроконтроллер, какие устройства в нем есть, их возможности, как они работают – только тогда мы сможем использовать возможности микроконтроллера на полную катушку.
3. Знание языка программирования и команд управления микроконтроллером.
Как будет работать микроконтроллер, какие задачи вы на него возлагаете и как он будет их выполнять, определяется заложенной в него программой – программой которую для микроконтроллера составляете вы сами. И на этом пункте мы остановимся несколько подробней, чтобы рассмотреть вопросы, которые могут появиться в будущем.
Программа (в переводе это слово означает – “предписание”) – предварительное описание предстоящих событий или действий.
К примеру, мы хотим, чтобы микроконтроллер мигал светодиодом. Простенькая задача, но тем не менее, для того, чтобы микроконтроллер выполнил эту задачу, мы предварительно должны, шаг за шагом, описать все действия микроконтроллера, написать программу, которую он должен выполнить для получения нужного нам результата – мигающий светодиод. Нечто, вроде такого:
♦ Зажечь светодиод:
— настроить вывод к которому подключен светодиод для работы на вывод информации
— подать на этот вывод логический уровень, который позволит зажечь светодиод
♦ Подождать некоторое время:
— перейти к подпрограмме формирующей паузу (которую тоже нужно “разжевать”)
— по выполнению подпрограммы паузы вернуться в основную программу
♦ Погасить светодиод:
— подать на вывод логический уровень, гасящий светодиод
и так далее.
С термином Программа неразрывно связан другой термин – Алгоритм (как Волк и Заяц, Том и Джерри).
Алгоритм – набор инструкций, описывающих порядок действия для достижения нужного результата.
Если в программе мы подробнейшим образом прописываем действия микроконтроллера, то в алгоритме мы определяем порядок действий микроконтроллера, на основе которых мы потом создадим программу. По аналогии с вышеприведенном примером:
♦ Зажечь светодиод
♦ Подождать некоторое время
♦ Погасить светодиод
и так далее.
Таким образом, алгоритм – это предшественник программы. И чем тщательно и продумано будет создан алгоритм, тем проще будет создавать программу.
Итого, программа для микроконтроллера – это последовательность действий микроконтроллера в виде набора команд и инструкций, которые он должен выполнить для достижения поставленных нами целей.
Команды для микроконтроллера имеют вид набора единичек и нулей:
00110101 011000100
так называемые – коды команд, а коды команд – это язык который понимает микроконтроллер. А для того, чтобы перевести наш алгоритм с русского языка на язык микроконтроллера – в эти самые наборы нулей и единичек, существуют специальные программы.
Эти программы позволяют описать порядок работы для микроконтроллера на более-менее понятном для нас языке, а затем перевести этот порядок на язык понятный микроконтроллеру, в результате чего получается так называемый машинный код – последовательность команд и инструкций (те самые нули и единички) которые только и понимает микроконтроллер. Текст программы, написанный программистом, называется исходным кодом. Перевод программы с языка программирования (исходного кода) на язык микроконтроллера (машинный код) производится трансляторами. Транслятор превращает текст программы в машинные коды, которые потом записываются в память микроконтроллера.
В таких программах порядок работы микроконтроллера описывается специальным языком – языком программирования. Язык программирования отличается от нашего, человеческого языка. Если наш язык общения служит в основном для того, чтобы обмениваться информацией, то:
Язык программирования – это способ передачи команд, инструкций, чёткого руководства к действию для микроконтроллера.
Существует множество языков программирования и их можно разделить на два типа:
– языки программирования низкого уровня
– языки программирования высокого уровня
Чем они отличаются. А отличаются они своей близостью к микроконтроллеру.
На заре зарождения микропроцессорной техники, программы писали в машинных кодах, то есть весь алгоритм работы последовательно прописывали в виде нулей и единичек. Вот так, примерно, выглядела программа:
01000110
10010011
01010010
Вряд-ли кто сможет разобраться в таком наборе комбинаций из двух цифр, а труд первых программистов был очень трудоемкий. Для облегчения своей жизни, программисты и стали создавать первые языки программирования. Так вот, чем ближе язык программирования к такому набору нулей и единиц тем больше он “низкого уровня”, а чем дальше от них – тем больше “высокого уровня”.
Самые распространенные языки программирования для микроконтроллеров:
— язык низкого уровня – Ассемблер
– язык высокого уровня – С (Си)
Давайте посмотрим на примере их различия (эти примеры абстрактные).
Допустим нам надо сложить два числа: 25 и 35.
В машинных кодах эта команда может выглядеть так:
00000101 1101001
На языке низкого уровня:
ADD Rd, Rr
На языке высокого уровня:
25+35
Различие языков низкого и высокого уровня видны невооруженным глазом, комментарии, как говорится, излишни.
Но давайте копнемся в этих примерах поглубже. Пример машинного кода разбирать не будем, так как он идентичен примеру на Ассемблере. По своей сути, Ассемблерные команды это те же машинные коды (команды) которым просто, чтобы не заблудиться в нулях и единицах, присвоены буквенные аббревиатуры. Ассемблерной командой ADD Rd, Rr мы ставим микроконтроллеру задачу сложить два числа, которые находятся (а для этого мы должны их туда предварительно записать) – первое в Rd, второе в Rr, а результат сложения поместить в Rd. Как видите мы ставим очень конкретную задачу микроконтроллеру: где взять, что с этим сделать и куда поместить результат. В этом случае мы работаем напрямую с микроконтроллером.
Команда на языке высокого уровня: 25+35, привычная для нас математическая запись, радующая наш глаз. Но в этом случае мы не работаем напрямую с микроконтроллером, мы просто ставим ему задачу сложить два числа. Результат и последовательность действий в данном случае будет тот-же, что и при выполнении ассемблерной команды: сначала эти два числа будут куда-то записаны, затем сложены а результат куда-то помещен.
И вот тут кроется главное отличие языков высокого уровня и низкого уровня. Если в Ассемблере мы контролируем весь процесс (хотим мы того, или нет): мы знаем где записаны эти два числа, и мы знаем где будет находиться результат, то в языке высокого уровня мы процесс не контролируем. Программа сама решает куда предварительно записать числа и куда поместить результат. В большинстве случаев нам это и не надо знать, ведь для нас главное итог – число 60 на выходе. Как результат, программы на языках высокого уровня более читаемы, приятны для глаза и меньше по размеру – ведь нам не приходится “лезть во все дыры” и расписывать каждый шаг микроконтроллера, программа это делает потом за нас, когда компилирует ее – переводит в машинные коды. Но тут есть и минус. Два одинаковых алгоритма написанных на Ассемблере и на Си, после преобразования их в машинные коды будут иметь разный размер: программа написанная на Ассемблере будет на 20-40% короче программы написанной на Си – черт его знает, каким путем идет Си для достижения нужного нам результата. И бывают случаи, когда нет доверия к языку высокого уровня и в программе на Си делают вставки кода, написанные на Ассемблере.
Профессиональные программисты, как правило, знают несколько языков программирования (или работают в команде, в которой есть специалисты по разным языкам), творчески соединяя их возможности и преимущества в одной программе. Ну а нам, любителям, надо знать хотя бы один язык (для начала), и начинать надо (а я в этом твердо уверен, и никто меня не переубедит) с языка низкого уровня – Ассемблера.
Ну что, я думаю и тут нам все понятно, – язык программирования изучать надо, по-другому – никак.
Команды и инструкции для управления микроконтроллером.
У микроконтроллеров AVR более 130 различных команд, которые позволяют ему реализовать все заложенные в нем возможности. Но сразу скажу – мало кто из любителей знает их все и тем более пользуется всеми. Обычно, в любительской практике хватает знания и половины команд, а то и меньше. Но изучать команды надо. Чем больше команд вы будете знать, тем изощреннее (в хорошем смысле слова) и элегантнее программы будут получаться.
Итого, будем считать, что желание у нас есть, настойчивость проявим, язык изучим, команды освоим, и, как итог, – одержим победу!
В следующей статье мы побеседуем, о том, что часто вгоняет начинающих в ступор – о системах счисления и их связи с микроконтроллером.
Следующие статьи:
♦ Микроконтроллер и системы счисления
♦ Микроконтроллер и логические операции
♦ Общее устройство микроконтроллера
♦ Арифметико-логическое устройство и организация памяти – память программ, память данных, энергонезависимая память
♦ Регистры общего назначения, регистры ввода/вывода, стек, счетчик команд
♦ Регистр состояния SREG
♦ Порты ввода/вывода микроконтроллера
Дистанционный курс «Микроконтроллеры семейства AVR»
Актуальность | Приостановлено |
---|---|
Стоимость | По запросу |
Начало занятий | По мере формирования группы |
Целью программы является курс по изучению и практическому освоению архитектуры одно-го из самых распространенных семейств 8-разрядных микроконтроллеров – семейства AVR фирмы Atmel.
В 16-ти лекциях курса на примере одного из наиболее применимых микроконтроллеров семейства –ATmega16, подробно разбирается работа центрального процессорного устройства и всех его компонентов, изучается структура и режимы работы всех периферийных устройств.
Внимание акцентировано на особенностях микроконтроллеров этого семейства и специфике работы отдельных блоков.
Как отдельные занятия в курсе рассмотрены четыре практических примера по использованию периферийных устройств микроконтроллера и системы прерываний. Программирование и моделирование работы микроконтроллера в этих примерах проводится с применением интегрированных средств разработки. Программирование в примерах осуществляется на языке Си и от слушателя требуется минимальное знание этого языка.
Компетенции
- способность к профессиональной эксплуатации современного оборудования и приборов;
- способность применять современные методы разработки технического, информационного и алгоритмического обеспечения систем автоматизации и управления.
Целевая аудитория
Студенты технических специальностей, инженеры и специалисты в области систем контроля и управления.
Автор программы
К.т.н., доцент кафедры Систем автоматического управления Голик Станислав Евсеевич.
Описание технологии обучения
Технология обучения основана на самостоятельном изучении материала по видео лекциям, выполнении тестов. В состав видео материалов включено несколько практических заданий, выполняемых с использованием интегрированных сред разработки и моделирования.
В процессе обучения преподавателем осуществляется обратная связь со слушателями по прохождению курса, а также по выполнению практических заданий.
Продолжительность программы
Программа рассчитана на 24 академических часа (количество видеоматериалов, доступных для изучения, составляет 16 видеолекций и 4 практических занятия).
Длительность курса составляет 6 недель. Средняя недельная нагрузка на обучающегося – 4 академических часа в неделю.
Краткое содержание программы
Курс включает в себя 16 лекций и 4 практических занятия:
- Лекция 1. Введение. Архитектура микроконтроллеров семейства AVR. Центральное процессорное устройство. Операционное устройство.
- Лекция 2. Центральное процессорное устройство. Устройство управления. Тактовый генератор и устройство синхронизации.
- Лекция 3. Центральное процессорное устройство. Подсистема сброса. Блок режимов энергопотребления.
- Лекция 4. Организация памяти.
- Лекция 5. Система прерываний. Внешние прерывания.
- Практическое занятие. Программирование внешних прерываний.
- Лекция 6. Модуль параллельных портов ввода-вывода.
- Практическое занятие. Программирование портов ввода-вывода.
- Лекции 7 — 8. Таймеры/счетчики. Таймер/счетчик ТС0 (начало).
- Практическое занятие. Формирование сигналов широтно-импульсной модуляции.
- Лекции 9 — 11. Таймер/счетчик ТС2. Таймер/счетчик ТС1.
- Лекция 12. Сторожевой таймер. Аналоговый компаратор.
- Лекция 13. Аналого-цифровой преобразователь.
- Практическое занятие. Программирование аналого-цифрового преобразователя.
- Лекция 14 — 15. Универсальный синхронно-асинхронный приемопередатчик.
- Лекция 16. Последовательный интерфейс SPI.
Итоговая аттестация
В рамках итоговой аттестации слушатель проходит тестирование и выполняет практические занятия. Результат работы высылается преподавателю для проверки.
После проверки выполненного задания со слушателем проводится собеседование (очно или в режиме вебинара), на котором обучающемуся предоставляется возможность внести правки в работу в случае их необходимости или аргументировать свой выбор технологии создания заданного объекта.
Контактная информация
Запись на курс
Программирование микроконтроллеров в AtmelStudio 6. Часть 1. Первые шаги
Современное радиолюбительство невозможно представить без микроконтроллеров, и это очевидно. В последние десятилетия микроконтроллеры различных производителей стали широко распространены в разных сферах деятельности человека. Нередко их можно встретить в самых неожиданных устройствах и конструкциях. Мы с вами являемся свидетелями компьютеризации и автоматизации окружающих нас процессов. Истина такова, что без знания основ программирования создавать современные конкурентоспособные устройства стало практически невозможно…
Содержание / Contents
Если вы читаете эту статью, вероятно у вас возникло желание понять, как работают микроконтроллеры, и скорее всего появились вопросы:1. Какой микроконтроллер выбрать для работы?
2. Какую среду разработки использовать для программирования выбранного микроконтроллера?
3. Как прошивать контроллер, и какие дополнительные приборы и акссесуары нужны для удобной работы с ними?
4. Какую литературу изучать?
5. Где в интернете можно задавать вопросы и получать конкретные ответы?
Попробуем ответить на эти вопросы.
Большой популярностью у радиолюбителей пользуются 8-битные микроконтроллеры PIC фирмы Microchip Technology и AVR фирмы Atmel, 16-битные MSP430 фирмы TI, а также 32-битные микроконтроллеры, архитектуры ARM.В промышленности, несколько иначе, первое место с большим отрывом занимает Renesas Electronics на втором Freescale, на третьем Samsung, затем идут Microchip и TI, далее все остальные.
Популярность определяется ценой и доступностью, немалую роль играют наличие технической информации и стоимость программного сопровождения.
Мы будем изучать 8-битные микроконтроллеры AVR, семейства ATMEGA 8 и 16 серии. Выбор определился, опять же доступностью, наличием множества любительских разработок, огромным количеством учебного материала. Наличием разнообразных встроенных компонентов и функциональностью этого семейства.
Для AVR созданы разные интегрированные среды разработки (IDE, Integrated development environment).IDE – это система программных средств, используемая программистами для разработки программного обеспечения (ПО), в состав которой входят:
• текстовый редактор,
• компилятор и/или интерпретатор,
• средства автоматизации сборки,
• отладчик.
Наиболее распространенные из них AVRStudio, ATmelStudio, WINAVR, CodeVision, IAR Embedded Workbench.
Для того, чтобы писать программы, мы воспользуемся бесплатной IDE ATmelStudio версии 6 и выше.
Скачать Atmel Studio можно с официального сайта после регистрации (регистрация абсолютно бесплатная и ни к чему не обязывает!)
ATmelStudio позволяет создавать проекты, и писать программы как в ассемблере, так и на СИ.
Изначально всегда стоит вопрос: какой язык программирования выбрать, чтобы писать эффективные программы?
Отвечу просто: нужно уметь писать как минимум на двух языках ассемблере и СИ. Ассемблер просто необходим, когда нужно написать быстрые и компактные подпрограммы и макросы, различные драйверы устройств. Но, когда требуется создать объемный проект, построенный на сложных алгоритмах, без знания СИ может быть потрачено очень много времени, особенно в процессе отладки, а если возникнет желание перенести на другую платформу, например PIC18, или STM, может стать неразрешимой проблемой.
Кроме этого, сейчас появились аппаратные вычислительные платформы Arduino, работа с которыми требует знаний языка СИ++.
Поэтому будем писать программы как в ассемблере, так и на СИ.
Чтобы наглядно видеть результат своей работы, не используя паяльник или макетную плату достаточно установить программу Proteus.
Используем датагорский кит — программатор Project-005 «D-AVR910». Кроме этого, нужно будет приобрести макетные платы, блок питания с выходным напряжением 5 Вольт. Можно в качестве БП с малыми пульсациями использовать наш кит Project-006 «POWER FILTER», применив стабилитрон на 5 Вольт.Возможно, со временем мы с Игорем предложим проект для сборки отладочной платы.А вот, например:
• Практическое программирование AVR на ассемблере. Ревич, 2011
• 1000 и одна микроконтроллерная схема Вып. 1-2. Рюмик, 2010-2011
• 10 практических устройств на МК AVR Книга 1-2. Кравченко, 2008-2009
• Самоучитель разработчика устройств на МК AVR. Белов, 2008
• МК AVR семейств Tiny и Atmega. Ефстифеев, 2008
• CodeVisionAVR. Пособие для начинающих. Лебедев, 2008
• Микропроцессорное управление устройствами, тиристоры, реле. Белов, 2008
• Аналоговые интерфейсы МК. Стюард, Болл, 2007
• Создаем устройства на МК AVR. Белов, 2007
• МК AVR в радиолюбительской практике. Полный разбор ATTINY2313. Белов, 2007
• Сетевой и межсетевой обмен данными с МК. Иди, 2007
• МК AVR. практикум для начинающих. Хартов, 2007
• Применение AVR Схемы, алгоритмы, программы. Баранов, 2006
• Микроконтроллеры AVR. Вводный курс. Мортон, 2006
• Измерение, управление и регулирование с помощью AVR. Трамперт, 2006
• Программирование на языке С для AVR и PIC МК. Шпак, 2006
• Конструирование устройств на МК. Белов, 2005
• МK — это же просто, тома 1-3. Фрунзе, 2002-2003
• Язык программирования Си, 2-е издание. Керниган, Ритчи, 2009
• Программирование микроконтроллеров ATMEL на языке С. Прокопенко, 2012Задавать вопросы вы можете на нашем или любом другом форуме, где так или иначе затронуты темы по микроконтроллерам. Главное на форумах правильно формулировать вопросы, чтобы четко получать ответы. Абстрактные вопросы не приветствуются, и скорее всего вместо ответа вы получите жесткую критику, или ваш вопрос останется без внимания! • 8-разрядный высокопроизводительный AVR микроконтроллер с малым потреблением
• Прогрессивная RISC архитектура
130 высокопроизводительных команд, большинство команд выполняется за один тактовый цикл
32 8-разрядных рабочих регистра общего назначения
Полностью статическая работа
Приближающаяся к 16 MIPS (при тактовой частоте 16 МГц) производительность
Встроенный 2-цикловый перемножитель
• Энергонезависимая память программ и данных
8 Кбайт внутрисистемно программируемой Flash памяти (In-System Self-Programmable Flash)
Обеспечивает 1000 циклов стирания/записи
Дополнительный сектор загрузочных кодов с независимыми битами блокировки
Обеспечен режим одновременного чтения/записи (Read-While-Write)
512 байт EEPROM
Обеспечивает 100000 циклов стирания/записи
1 Кбайт встроенной SRAM
Программируемая блокировка, обеспечивающая защиту программных средств пользователя
• Встроенная периферия
Два 8-разрядных таймера/счетчика с отдельным предварительным делителем, один с режимом сравнения
Один 16-разрядный таймер/счетчик с отдельным предварительным делителем и режимами захвата и сравнения
Счетчик реального времени с отдельным генератором
Три канала PWM
8-канальный аналого-цифровой преобразователь (в корпусах TQFP и MLF)
6 каналов с 10-разрядной точностью
2 канала с 8-разрядной точностью
6-канальный аналого-цифровой преобразователь (в корпусе PDIP)
4 канала с 10-разрядной точностью
2 канала с 8-разрядной точностью
Байт-ориентированный 2-проводный последовательный интерфейс
Программируемый последовательный USART
Последовательный интерфейс SPI (ведущий/ведомый)
Программируемый сторожевой таймер с отдельным встроенным генератором
Встроенный аналоговый компаратор
• Специальные микроконтроллерные функции
Сброс по подаче питания и программируемый детектор кратковременного снижения напряжения питания
Встроенный калиброванный RC-генератор
Внутренние и внешние источники прерываний
Пять режимов пониженного потребления: Idle, Power-save, Power-down, Standby и снижения шумов ADC
• Выводы I/O и корпуса
23 программируемые линии ввода/вывода
28-выводной корпус PDIP, 32-выводной корпус TQFP и 32-выводной корпус MLF
• Рабочие напряжения
2,7 — 5,5 В (ATmega8L)
4,5 — 5,5 В (ATmega8)
• Рабочая частота
0 — 8 МГц (ATmega8L)
0 — 16 МГц (ATmega8)
отличия ATMEGA16 от 8
• 16 Кбайт внутрисистемно программируемой Flash памяти (In-System Self-Programmable Flash)
• Интерфейс JTAG (совместимый с IEEE 1149.1)
Возможность сканирования периферии, соответствующая стандарту JTAG
Расширенная поддержка встроенной отладки
Программирование через JTAG интерфейс: Flash, EEPROM памяти, перемычек и битов блокировки
• Четыре канала PWM / ШИМ
• 8-канальный 10-разрядный аналого-цифровой преобразователь
8 несимметричных каналов
7 дифференциальных каналов (только в корпусе TQFP)
2 дифференциальных канала с программируемым усилением в 1, 10 или 200 крат (только в корпусе TQFP)
• Шесть режимов пониженного потребления: Idle, Power-save, Power-down, Standby, Extended Standby и снижения шумов ADC
• 32 программируемые линии ввода/вывода
• 40-выводной корпус PDIP и 44-выводной корпус TQFP
Если Вы только начинаете, то нужно скачать и установить программу AtmelStudio с официальной страницы atmel.comПосле установки программы AtmelStudio можно приступить к созданию проекта.
Проект – это ваша программа, которую вы будете писать, отлаживать и прошивать, после компиляции, в память микроконтроллера.
Чтобы создать проект, надо открыть программу, появиться такая заставка,
и откроется страница создания проекта
Чтобы создать новый проект, нужно кликнуть по «New Project…»
В этом случае откроется новое окно, где можно выбрать язык программирования, название проекта, его месторасположение, название пакета с файлами проекта и возможность создания каталога для дальнейшего использования в других перекрестных проектах. Чтобы создать проект, где мы будем программировать в ассемблере, нужно выбрать — Assembler, после этого поменяем название проекта, его расположение, и выбираем ОК.
Появится следующее окно
Выбираем “megaAVR, 8-bit” и находим нужный нам микроконтроллер, мы выбрали ATmega8. В правой части заставки появляется список устройств, работающих с этим микроконтроллером, один из которых мы можем подключить. Выбираем ОК.
Появляется страница редактора текста, которая позволяет редактировать и отлаживать программу. Пока страница чистая, указано время и дата создания и название файла проекта, имя пользователя. Есть дополнительные окно устройств ввода-вывода, окно отчетов компиляции программы. Теперь мы
можем программировать в ассемблере.
Аналогично создается проект для программирования на языке СИ.
Выбираем семейство микроконтроллеров “megaAVR, 8-bit”
Далее, наименование микроконтроллера и выбираем ОК.
Появляется страница редактора текста. Здесь мы можем программировать в СИ.
У нас есть возможность загрузить демонстрационные проекты для работы с платами разработки, выпускаемыми корпорацией ATMEL.
Для этого нужно при создании проекта выбрать пункт “New Examle Project from ASF…”
Откроется окно следующего вида:
Здесь вы можете выбрать нужный проект, и экспериментировать как вам хочется…
Третий пункт на страничке создания проектов позволяет быстро открывать последний загруженный проект.
Так же есть возможность управлять проектом, для этого нужно выбрать название проекта под пунктом “Recent Projects” и кликнуть по правой клавише мыши. Появится меню из 3-х пунктов:
Open Project – запускает проект.
Open Containing Folder – просмотор содержимого папки проекта
Remove From List – удаление из списка проектов. Сам проект не удаляется, и попытка создать новый проект с таким же именем выдаст ошибку. Полностью удалить проект можно в папке, где он был создан.
Как создается новый проект и про перенос старых проектов, созданных в AVR Studio 4, можно посмотреть на видеоролике от Александра Писанца
Камрад, рассмотри датагорские рекомендации
🌼 Полезные и проверенные железяки, можно брать
Опробовано в лаборатории редакции или читателями.
Программирование AVR. AVR Studio — Необходимое ПО — Каталог статей — Микроконтроллеры
Для разработки устройств на микроконтроллерах необходимо программное обеспечение, позволяющее писать и отлаживать программы. Конечно, можно писать программы и в обычном блокноте, а потом просто компилировать и получать готовую программу. Однако, такой вариант жутко неудобен, при компиляции выползут незаметные ошибки и опечатки, к тому же нет возможности пошагово отладить программу, наблюдая за состоянием буквально каждого интересующего нас бита, а также других полезных возможностей, которые содержит в себе программное обеспечение САПР для микроконтроллеров.
Для разработчиков приложений на микроконтроллерах AVR компания Atmel предлагает полноценный пакет САПР AVR Studio. На момент написания данной статьи актуальной является версия 4.18.
Установку AVR Studio лучше выполнять по пути, не содержащему имен каталогов, написанных кириллицей, чтобы в дальнейшем не было проблем различного рода. У меня, например, это выглядит вот так
Далее установщик предложит нам установить Jungo USB драйвер для различных программаторов-эмуляторов.
В принципе, на стадии изучения микроконтроллеров его можно не устанавливать, но для полноты картины, да и вообще, может пригодиться, поэтому пусть ставится. При запуске программы появляется менеджер проектов,
предлагающий открыть один из существующих проектов, либо создать новый. С открыванием проекта никаких проблем быть не должно, а вот создание нового можно рассмотреть подробнее.
Здесь можно выбрать тип проекта: Atmel AVR Assembler – для написания программ на ассемблере, а AVR GCC – для программирования на си (для написания программ на си необходимо установить программу winAVR, т.к. плагин AVR GCC является ее частью). Здесь же задается имя проекта, можно выбрать место его сохранения, а также доступны опции создания отдельной папки для проекта и создание начального файла с текстом программы. Лично я выбираю создание начального файла и отдельной папки, так как при компиляции создается несколько файлов и их гораздо удобнее хранить в одном месте.
Переходим к следующему диалогу менеджера проектов нажатием кнопки Next.
В данном диалоге предлагается выбрать отладочную платформу и модель микроконтроллера, для которой будет разрабатываться программа. Отладочной платформой может быть как реально существующий в железе программатор-эмулятор (AVR Dragon, AVR One, ICE 200 и т.д.) так и виртуальный отладчик – AVR Simulator, позволяющий отлаживать разрабатываемую программу средствами AVR Studio.
Если на компьютере установлена САПР Proteus компании Labcenter Electronics, то в качестве отладочной платформы может быть выбран Proteus VSM Viewer. Это означает, что можно в Proteus создать схему устройства, для которого разрабатывается программа, а потом это виртуальное устройство подключить к AVR Studio и проверять на нем работу программы. Благодаря связке Proteus и AVR Studio изучение программирования микроконтроллеров можно начинать без какой-либо материальной базы, имея только желание и необходимое программное обеспечение.
После всех предварительных установок появляется рабочая среда AVR Studio.
Она состоит из нескольких окон, содержание, количество и положение которых могут быть настроены так, как удобно пользователю во вкладке главного меню View>Toolbars. На рисунке ниже представлены следующие окна: — основное окно кода; — окно проекта — показана структура проекта, подключаемые файлы, метки и прочее; — окно периферии — отображает состояние всех внутренних модулей микроконтроллера; — окно системных сообщений – содержит различные сообщения об ошибках, успешных операциях, результатах компиляции.
AVR Studio поддерживается операционными системами Windows9x / ME / NT / 2000 / XP / VISTA. Содержит в себе менеджер проектов, редактор исходного кода, инструменты виртуальной симуляции и внутрисхемной отладки, позволяет писать программы на ассемблере или на C/C++. В силу перечисленных достоинств AVR Studio может считаться лучшей средой разработки приложений для микроконтроллеров AVR.
Программатор AVR ISP « схемопедия
Рис.1 AVR ISP
Программаторы, работающие под управлением PonyProg2000 и других любительских программ, очень просты. Однако большинство из них не может обеспечить такой функциональности, какой обладают фирменные средства разработки. Одним из самых популярных программаторов Atmel является AVR ISP (внешний вид на рис.1). С помощью AVR ISP можно запрограммировать любой микроконтроллер с ядром AVR через последовательный интерфейс SPI. Программатор подключается через COM-порт и работает под управлением AVR Studio.
Конструкция и программное обеспечение AVR ISP открыто для разработчиков. Каждый может самостоятельно собрать его аналог и тем самым сэкономить деньги на покупке программатора у фирмы-производителя. Более того, существует множество любительских разработок на основе AVR ISP, которые обладают дополнительными возможностями и удобнее в обращении.
Рис.2 Аналог фирменного программатора AVR ISP
На рис.2 приведена принципиальная схема авторского варианта AVR ISP. В отличие от своего прообраза он содержит только один микроконтроллер, обладая теми же функциями. В место ATmega8535 (AT90S8535) в базовом варианте применён микроконтроллер ATmega16. Он имеет вдвое большим объёмом памяти программ и данных, и сопоставим с ATmega8535 по назначению выводов и внутреннему устройству. Запись и обновление содержимого DD2 осуществляются через встроенную программу-загрузчик (boot-loader), которая использует для этих целей способность самопрограммирования микроконтроллеров AVR. Дополнительными программными средствами осуществляется так же согласование работы программы предназначенной для ATmega8535 с адресным пространством ATmega16 и использование прерывания TOV0 для отслеживания положения кнопки SB1 и управления линиями PD7, PC0…PC6.
Программатор подключается к любому свободному COM порту в системе через разъём X1. Напряжение 9…15 В подаётся на разъём X2 от отдельного источника питания способного отдавать в нагрузку ток не меньший чем 100 мА. Разъем X3 служит для внутрисхемного программирования или при программировании на отдельной панели.
На выводе 7 X3 присутствуют прямоугольные импульсы частотой 1.8432 МГц. Их можно использовать, если программируемый микроконтроллер настроен на работу с кварцевым резонатором либо с внешним тактовый генератором. В этом случае импульсы подаются на вход XTAL1. Устройства, не имеющие собственного источника энергии, можно запитать непосредственно от программатора через вывод 2 X3 (внутрисхемное программирование устройств с напряжением питания меньшим, чем 5 может привести к поломке!). Активизация и запрещение тактовых импульсов на выводе 2 X3, а также присутствие напряжения 5 В на выводе 7 X3, регулируются кнопкой SB1.
В ходе работы светодиод HL3 свидетельствует о нормальном функционировании программатора. HL1 будет светиться во время программирования микроконтроллера, а HL2 будет сигнализировать о наличии напряжения и тактовых импульсов (выводы 2 и 7 X3 соответственно).
Перед началом работы в DD2 нужно занести программу, находящуюся в Файле BootISP.hex (исходный текст в файле BootISP.asm) с помощью любого удобного программатора. FUSE-биты при этом должны выглядеть следующим образом:
CKSEL0 = 0 SUT0 = 1 BOOTRST = 0 EESAVE = 1
CKSEL1 = 0 SUT1 = 0 BOOTSZ0 = 0 CKOPT = 1
CKSEL2 = 1 BODEN = 0 BOOTSZ1 = 0 JTAGEN = 1
CKSEL3 = 1 BODLEVEL = 0 SPIEN = 0 OCDEN = 1
Рис.3 Процесс программирования
После того как программатор собран и подключён к компьютеру – приступают к загрузке текущей версии управляющей программы. Нажав на кнопку SB1(!), подают питание на разъём X2. Должен загореться светодиод HL1, что свидетельствует о переводе в режим обновления программного обеспечения. После этого запускают AVR Studio и через меню Tools -> AVR Prog открывают окно обновления “прошивки” AVR ISP. Далее нужно указать путь к загрузочному файлу, который по умолчанию имеет размещение C:Program filesAtmelAVR ToolsSTK500STK500.ebn, и начать программирование, нажав на экранную кнопку Flash -> Program(окно на рис.3). В конце завершения операции необходимо кратковременно снять напряжение, после чего программатор будет готов к применению. Связь осуществляется через меню Tools -> Program AVR -> Auto Connect. Вид окна программы поддержки AVR ISP приведен на рис.4.
Рис.4 Вид окна программы поддержки AVR ISP
Интерфейс программы очень простой и не требует подробных пояснений. Здесь только необходимо обратить внимание на несколько важных деталей. В списке устройств на вкладке Program в окне Device, кроме микроконтроллеров с ядром AVR (ATmega, ATtiny, AT90x и др.), доступны также некоторые модели семейства MCS-51 (названия начинаются с AT89S). Программирование AT89S через SPI принципиально ни чем не отличается от подобной операции у AVR-микроконтроллеров, за исключением одного существенного различая. Сигнала RESET у MCS-51 (в отличие от AVR) имеет активный высокий уровень. Поэтому при программировании моделей AT89S резистор R2, предотвращающий запуск микроконтроллеров AVR, необходимо подключить к шине питания программатора.
Иногда случается так, что с первого раза не удается установить связь программатора с устройством. Если не считать ошибок монтажа и неправильной установки FUSE-битов, запрещающих работу SPI (SPIEN, DWEN и RSTDISBL), вероятнее всего проблема заключается в слишком высокой частоте тактовых импульсов на линии SCK. В этом случае необходимо уменьшить скорость последовательного интерфейса. Это можно сделать вручную через вкладку Board (окно ISP Freq). Модуль SPI ведомого микроконтроллера не может работать на частотах превышающих Fclk/4.
Программатор был проверен в работе с AVR Studio версий 4.12…4.16 со многими типами микроконтроллеров. Никаких ошибок при этом не было выявлено.
Урок 5. Программирование AVR микроконтроллеров — Меандр — занимательная электроника
Как я уже говорил ранее, микроконтроллер работает по программе, заложенной в него. В этом уроке я расскажу, как программировать AVR микроконтроллеры.
Работа с программатором
Для программирования AVR микроконтроллеров мы будем использовать ранее собранный нами LPT программатор и программу PonyProg2000. Скачаем и установим программу PonyProg2000. Подключим программатор к компьютеру и запустим PonyProg2000, появится окно программы:
Теперь необходимо настроить программу для работы с нашим LPT программатором. Для этого идём во вкладку «Setup» и нажимаем «Interface Setup…».
Появится окно установки настроек:
В нём нам надо установить тип и порт программатора, к которому он подключён, вот так:
После установки настроек нажимаем кнопку «OK». Теперь необходимо откалибровать программу, для этого идем во вкладку «Setup» и нажимаем «Calibration».
Должно появится следующие окно:
Внимание! Перед калибровкой программы PonyProg2000 закройте все лишние программы на компьютере!
Нажимаем кнопку «Yes» и ждем пока программа откалибруется. После калибровки появится следующие сообщение:
Нажимаем кнопку «ОК». Теперь выберем AVR микроконтроллер, с которым будем работать, идем во вкладку «Device» в «AVR micro» и выбираем микроконтроллер, например Attiny13:
Всё, теперь программа PonyProg2000 готова к работе с микроконтроллером.
Чтение прошивки микроконтроллера
Для чтения прошивки микроконтроллера идем во вкладку «Command», нажимаем «Read All»
И ждём, пока завершится процесс чтения прошивки микроконтроллера.
По завершении процесса чтения прошивки микроконтроллера появится следующие сообщение:
И в окне программы PonyProg2000 выведется содержимое прошивки микроконтроллера. Чтобы сохранить прошивку, которую прочитали с микроконтроллера заходим во вкладку «File» и выбираем «Save Device File As…».
Далее выбираем, куда сохранять прошивку, вводим имя будущего файла, выбираем тип файла «*.HEX» и нажимаем кнопку «Сохранить».
Запись прошивки в микроконтроллер (Прошивка микроконтроллера)
Для записи прошивки в микроконтроллер открываем файл прошивки в программе PonyProg2000 для этого во вкладке «File» выбираем пункт «Open Device File…».
В появившемся окне устанавливаем тип файла «*.HEX» и открываем файл с прошивкой.
Файл должен открыться, и отобразится в главном окне программы PonyProg2000. Для прошивки открытого файла в микроконтроллер, во вкладке «Command» выбираем «Write All».
В появившемся окне нажимаем кнопку «Yes».
Начнётся процесс прошивки микроконтроллера.
По завершении прошивки микроконтроллера программа PonyProg2000 выдаст сообщение.
Очистка микроконтроллера (удаление прошивки)
Для очистки микроконтроллера идем во вкладку «Command» и выбираем пункт «Erase».
По завершении очистки микроконтроллера программа PonyProg2000 выдаст сообщение.
Установка фьюз битов микроконтроллера
Для установки фьюз битов микроконтроллера во вкладке «Command» выбираем пункт «Security and Configuration Bits…».
Должно появится окно установки фьюз битов.
Для чтения фьюз битов установленных в микроконтроллере нажмите кнопку «Read», программа PonyProg2000 должна прочитать и вывести фьюз биты микроконтроллера. Для записи фьюз битов, установите, необходимы галочки в чек-боксах и нажмите кнопку «Write».
Внивание! Не устанавливаете без надобности фьюз биты, назначения которых вы не знаете, в противном случае вы можете нарушить работу микроконтроллера!
Автор: Яковлев Александр Вячеславович (г.Витебск, Беларусь)
Программирование АРН01: Введение | Hackaday
Нам нравится смотреть на хардкорные проекты электроники с мощным микроконтроллером и сотнями, если не тысячами, строк кода в центре. Но всем нужно как-то туда добраться.
Эта серия руководств призвана помочь вам при программировании микроконтроллеров Atmel AVR. Если вы никогда раньше не прикасались к микроконтроллеру или работали над десятками проектов Arduino, это поможет вам сразу перейти к аппаратному обеспечению и придаст вам уверенности в создании чего угодно.
План развития серии:
Необходимые знания
Хорошие новости: я установил довольно низкую планку. Вам необходимы базовые знания по установке программ на ваш компьютер и их использованию. Вы должны иметь некоторое представление о том, как работает беспаечная макетная плата, и желательно, чтобы у вас был мультиметр, и вы знали, как с его помощью измерять напряжение. И не бойтесь использовать Google для исследования вопросов, на которые здесь нет прямого ответа.
Что на самом деле делает микроконтроллер?
Это загруженный вопрос.Для понимания я свожу это к самому простому объяснению:
- Микроконтроллер принимает какой-то ввод
- Он принимает решение на основе написанного вами программного обеспечения
- Выходы изменяются на основе решения на шаге 2.
Микроконтроллер делает то, что вы его запрограммировали. Делает это быстро и надежно.
Как это работает?
В этой серии руководств я буду обсуждать цифровую логику.То есть все входные и выходные контакты будут оцениваться по нулевому напряжению или 5 В. Это дает наши цифровые единицы и нули, при этом 5 вольт равны единице, а ноль вольт — нулю.
Итак, если вы хотите зажечь светодиод, просто подключите схему к контакту, сделайте этот контакт выходом и установите высокий логический уровень (5 вольт). Если вы хотите добавить кнопку, подключите ее к контакту, который установлен как вход, и запрограммируйте микросхему на измерение уровня напряжения этого контакта. Это действительно так просто, если вы научитесь писать правильные команды, чтобы чип понимал ваши пожелания.
Посмотрите на сам чип
Я решил использовать микроконтроллер ATmega168. Это мощный чип, но его не сложнее использовать, чем его младшие собратья. Это даст вам много возможностей для развития ваших проектов, оставаясь при этом доступным (менее 4,50 долларов США). Вот схема:
Это часто называют распиновкой, поскольку она показывает, что на самом деле делает каждый из 28 контактов на микросхеме. Все эти контакты выполняют несколько функций, поэтому рядом с каждой из них есть длинные строки текста, за исключением пяти, у которых есть только одно имя.Это контакты, связанные с напряжением и землей (VCC, GND, AVCC, AREF, AGND), что является важной проблемой для микроконтроллеров.
Интегральным схемам нужен стабильный источник напряжения. Это означает, что в рамках нашего проекта нам потребуется создать регулятор напряжения. Это легко сделать на макетной плате, и вы сможете достать детали на месте. Также стоит отметить, что на вершине чипа есть полукруглая ямочка. Это то, что вы найдете в пластиковом корпусе этих чипов с двойным расположением рядов, и оно используется, чтобы убедиться, что вы не вставляете его задом наперед.
Еще раз взгляните на распиновку и найдите контакты, имена которых начинаются с PD. Всего их должно быть восемь, с обозначениями от PD0 до PD 7. Это фантастический пример 8-битной природы этих микросхем. PD обозначает порт D, один из входных и выходных регистров. Все в этих микросхемах ориентировано на 8 бит. Это последовательность из восьми нулей или единиц в различных комбинациях. Если вы хотите включить или выключить определенные функции, вы меняете один или несколько битов в 8-битном регистре.Каждый раз, когда вы хотите изменить один пин, вы должны адресовать все восемь в регистре. Мы узнаем об этом гораздо больше, но не раньше третьей части серии.
Программирование
ATmega168 — это программируемый микроконтроллер. Но еще лучше, это перепрограммируемо. Фактически, когда вы работаете над проектом, вы, скорее всего, перепрограммируете его несколько раз в час.
Этот чип имеет ограничение на размер программного пространства в 16 килобайт. В наше время 64-гигабайтных плееров iPod 16 килобайт может показаться ничтожным.Но на самом деле это 16 килобайт машинного кода. Вы можете многое с этим сделать… поверьте мне.
Вам нужно какое-то оборудование, чтобы поместить код на эти микросхемы. Обычно это приходит в виде программиста AVR. Во второй части этого руководства мы рассмотрим несколько различных вариантов программирования, а затем построим и запрограммируем тестовую схему.
Делай домашнее задание
Чтобы подготовиться к оставшейся части этой серии руководств, мне нужно, чтобы вы собрали несколько инструментов. У вас должен быть компьютер какого-то типа, будь то Linux, Mac или ПК с Windows.Это запустит программное обеспечение, которое берет наш код, компилирует его во что-то, что может использовать микроконтроллер, а затем сообщает программисту, как записать его в наш чип.
Составитель
В конечном итоге мы собираемся написать наш собственный код для AVR, который использует архитектуру RISC. Но мы делаем это на компьютере с архитектурой x86. Инструмент, необходимый для этого, называется кросс-компилятором. Это, пожалуй, лучшая причина выбрать AVR для разработки, ведь существует отличная цепочка инструментов, которую можно легко установить на нескольких платформах.
- Пользователи Mac: установите CrossPack
- Пользователи Windows: установите WinAVR
- Пользователи Linux: Пользователи Debian и Ubuntu должны установить пакет GCC-AVR, который включает всю цепочку инструментов. Другие могут захотеть взглянуть на страницу инструментальной цепочки AVR-libc для помощи в компиляции пакетов.
Это не единственный вариант. Многие пользователи Windows доверяют бесплатному программному обеспечению AVR Studio от Atmel. Это единственный раз, когда я буду ссылаться на него, поскольку у меня нет компьютера с Windows, и я никогда не пробовал этот пакет.
Программное обеспечение для программирования
Наше программное обеспечение для запуска аппаратного программатора называется AVRdude. Если вы установили одну из вышеперечисленных цепочек инструментов, у вас уже должна быть эта программа. Перейдите в окно терминала или командную строку и введите следующее, чтобы убедиться:
avrdude -h
Появится экран справки. Если вы получили сообщение об ошибке, вам следует убедиться, что вы правильно установили набор инструментов на предыдущем шаге, или загрузите AVRdude самостоятельно.
Что ждет в будущем
На этом завершается вводная часть этой серии.
Часть 2: В следующей части этой серии мы рассмотрим несколько аппаратных средств, которые можно использовать для программирования микроконтроллера AVR. Я написал программу hello world и расскажу, как построить схему на макетной плате, подключить микросхему к программатору и использовать AVRdude для записи этой простой прошивки на устройство. Я не хочу вас слишком волновать, но это действительно связано с миганием светодиода.
Часть 3: Предварительно скомпилированный HEX-файл использовался для программирования микроконтроллера AVR во второй части данной серии статей. В этой части мы рассмотрим исходный код языка C, из которого состояла эта прошивка. Я также подробно расскажу о периферийных устройствах, доступных на чипе, и подробно расскажу, как их использовать. В заключение мы добавим функциональность к исходной программе, перекомпилируем ее и перепрограммируем чип с обновленной версией.
Часть 4: Теперь, когда вы приобрели навыки программирования AVR, я покажу вам, как начать создавать с их помощью классные вещи.
Следуй за мной:
@szczys
Учебные руководства по программированию микроконтроллеров Atmel AVR
Микроконтроллер AVR от Atmel (теперь Microchip) — один из наиболее широко используемых 8-битных микроконтроллеров. Arduino Uno основан на микроконтроллере AVR; это недорого и общедоступно во всем мире.
В этой книге авторы используют пошаговый и систематический подход для демонстрации программирования микросхемы AVR.Примеры на языке ассемблера и C объясняют, как программировать многие функции AVR, такие как таймеры, последовательная связь, ADC, SPI, I2C и PWM.
Текст состоит из двух частей:
- В первых шести главах используется программирование на языке ассемблера для изучения внутренней архитектуры AVR.
- В главах 7-18 используется как сборка, так и C, чтобы показать периферийные устройства AVR и интерфейс ввода-вывода с реальными устройствами, такими как ЖК-дисплей, двигатель и датчик.
В первом издании этой книги, опубликованном Pearson, использовался ATmega32.Он по-прежнему доступен для покупки на Amazon. Это новое издание основано на Atmega328 и плате Arduino Uno.
Дополнительная информация …
Микроконтроллеры AVR Atmel — это микросхемы, на которых работает Arduino, и они используются многими любителями и хакерскими проектами. В этой книге вы отложите в сторону уровни абстракции, предоставляемые средой Arduino, и узнаете, как напрямую программировать микроконтроллеры AVR.
При этом вы приблизитесь к чипу и сможете выжать из него больше мощности и функций.
Каждая глава этой книги посвящена проектам, которые включают эту конкретную тему микроконтроллеров. Каждый проект включает схемы, код и иллюстрации рабочего проекта.
Дополнительная информация …
Используя популярный и экономичный встроенный контроллер Atmel AVR в качестве платформы и приложения для обучения, Embedded C Programming и Atmel AVR являются идеальным выбором для новичков. Эта новаторская книга, содержащая множество полнофункциональных примеров приложений, позволяет пользователям применять подход «учиться на практике» по мере развития знаний и навыков, необходимых для достижения профессиональных навыков.
После знакомства с процессорами Atmel AVR RISC читатели сразу же переходят к учебному пособию по встроенному языку C.
Здесь они будут экспериментировать с переменными и константами, операторами и выражениями, операторами управления, указателями и массивами, типами памяти, директивами препроцессора, методами реального времени и т. Д.
В дополнение к исчерпывающему справочнику по функциям библиотеки, целая глава, посвященная компилятору CodeVision AVR C, содержит подробные пошаговые инструкции по установке и работе IDE, смешиванию ассемблера с C и использованию генератора кода мастера кода.Использование периферийных устройств, таких как клавиатуры, ЖК-дисплеи и другие стандартные устройства, связанные со встроенными микроконтроллерами, также полностью исследуется в этом всеобъемлющем современном практическом руководстве и справочном руководстве для программистов.
Дополнительная информация …
STK128 + — это полноценная экономичная плата разработки для ATmega128. Он предназначен для того, чтобы дать разработчикам возможность быстро разрабатывать код для микроконтроллера ATmega128, ускоряя разработку прототипа устройств ATMega 128.
Микросхема ATmega128 установлена на плате устройства, которую можно отделить от материнской платы, что обеспечивает безопасную замену микроконтроллера. Чип ATmega128 поставляется в корпусе TQFP64 и может быть ATmega128-16AU, ATmega128L-8AU или ATmega128A-AU.
В комплект STK128 + входит плата устройства ATmega128, дополнительная запасная плата устройства ATmega128 и набор экспериментальных фитингов.
Дополнительная информация …
Обучение программированию микроконтроллера AVR
Пока мы видели, что означает микроконтроллер ? А на что способны ? Но теперь вопрос в том, как заставить микроконтроллер что-то делать, и ответ — программированием.Итак, давайте изучим программирование микроконтроллера AVR и разберемся с основными принципами этого процесса. Есть несколько вещей, которые пользователь должен сделать для программирования микроконтроллера,
.- Настройте свой компьютер для программирования в Windows или Linux (установите необходимый компилятор и флэш-инструмент)
- Написать программу, которая сообщает микросхеме, что делать?
- Скомпилировать программу в машинный код
- Запрограммировать чип с помощью аппаратного программатора, который передает машинный код в микроконтроллер
- Тестирование и отладка
Микроконтроллер AVR имеет большое количество поклонников благодаря доступным бесплатным и недорогим инструментам разработки, включая недорогую плату для разработки и бесплатные инструменты разработки.В следующей части мы узнаем о программном обеспечении (компилятор) и аппаратном обеспечении (программатор) и о том, как их можно использовать для разработки приложений на основе микроконтроллеров. Я рекомендую вам придерживаться статьи и следовать по порядку, чтобы лучше понять процесс.
Программирование микроконтроллера AVRИнструменты программирования
Микроконтроллеры AVRдостаточно мощны, чтобы эффективно поддерживать язык программирования высокого уровня, такой как C. Чтобы написать программу на C для AVR или любого другого микроконтроллера, нам понадобится компилятор C для этого конкретного MCU.Есть несколько компиляторов c, которые поддерживают микроконтроллеры AVR, и на самом деле большинство из них бесплатны для студентов и новичков. Они перечислены ниже,
- Атмель Студия 6
- Затмение
- AVR-GCC (GNU) Linux
- WinAVR
- AVR, чувак
Вы можете выбрать любую IDE из списка для написания ваших программ. Здесь, в нашем руководстве, мы рассмотрим Atmel Studio 6. Пожалуйста, просмотрите видео, которое продемонстрирует вам, как установить и настроить среду, чтобы начать писать свою первую программу.
AVR USB ProgrammerЧасть оборудования, подключенная к компьютеру, который программирует микроконтроллер AVR, называется программатором AVR. После того, как вы закончите писать и скомпилировать свое программное приложение в AVR C. Вам необходимо загрузить этот выходной файл, который представляет собой шестнадцатеричный файл, в микроконтроллер, и это роль программиста. На рынке доступны, например, несколько типов программаторов: USB-программатор AVR (USBasp), карманный программатор AVR (USB Tiny ISP), AVR ISP mkII, AVR ISP mkIII… ..и т. Д. И так далее…
Если вы такой же, как я, то вас может заинтересовать AVR USB Programmer на основе прошивки USBasp с открытым исходным кодом, и даже вы можете сделать свой собственный, если хотите.
Пожалуйста, просмотрите видео, представленное ниже, которое проведет вас через все детали процедуры, чтобы заставить все работать.
Надеюсь, этот пост окажется для вас познавательным и интересным. В следующих уроках мы рассмотрим готовый пример для каждого периферийного устройства микроконтроллера ATmega32A.
Микроконтроллер— Введение — Руководство для начинающих по Atmel AVR Atmega32
Микроконтроллер — Руководство для начинающих — Введение
Это первое из длинной серии руководств, предназначенных для начинающих. и учебник, основанный на микроконтроллере Atmel AVR Atmega32.Я покажу тебе, на примерах и проектах, как программировать и предоставлять функции для этого микроконтроллера и каковы способы использования и приложения.
Что касается микроконтроллеров в целом, хорошо знать, что эти маленькие микросхемы нашел везде. Вы можете найти их в микроволновых печах, новых устройствах, автомобилях, телевизоры и т. д. Эти микроконтроллеры управляют и воспринимают окружающую электронику. и окружающая среда.Например, микроконтроллеры могут выводить данные на дисплей, двигатель, светодиоды и т. д., считывающие окружающую среду, например, наклон с помощью акселерометра, свет, угловая скорость с помощью гироскопа MEMS (Microelectromechanical System), звук, энкодеры движения, температуры и ввод с клавиатуры или кнопки.
Чтобы дать вам общее представление о микроконтроллере, микроконтроллер AVR Atmega32 считается компьютером на микросхеме.Микроконтроллер умеет выполнять набор инструкций в виде программы. Язык программы, который я буду в этих проектах используется C ++. Чтобы предоставить пользователям этого сайта лучшую возможность Чтобы узнать, программы C ++ будут объяснены очень подробно.
В микроконтроллерах действительно здорово то, что вы можете контролировать все булавки. Новичку может быть сложно понять эту концепцию, особенно не имея опыта работы с электроникой.Не волнуйтесь, я проведу вас через каждый крошечная деталь. Каждый вывод имеет особое назначение или может использоваться как вход или выход. особенность, за некоторыми исключениями, контакты питания.
На левой стороне микросхемы, если смотреть на нее, образуют вершину и маленький треугольник. находится вверху слева, 20 контактов (это 40-контактный микроконтроллер). Первое начиная с верхнего левого угла — контакты PB0-7. Всего 8 контактов, так как индекс этих контактов и почти все в программе начинается с индекса 0.Этот набор контактов называется «Порт B», а еще 3 порта помечены от A до D. Эти порты могут быть настроены для приема информации и называются INPUT и они могут быть настроены на отправку напряжения в некоторой форме, называемой ВЫХОДНЫМ. Общие выводы питания чтобы получить питание для чипа, называемого VCC и GND. Все, кроме одного контакта порта D (PD0-6) также находится на левой стороне (нижняя часть). PD7 (контакт 7 порта D) в одиночку запускает правую часть микроконтроллера.
Продолжая движение по правой стороне и в конце порта D, порт C продолжался от нижний угол вверх. С этого момента, пусть любимые контакты продолжатся, от аналогового к цифровому булавки. Эти штыри могут определять окружающую среду с помощью компонентов. которые подают на эти контакты аналоговое напряжение. Не беспокойтесь о непонимании аналоговый или даже цифровой на этом этапе, это будет объяснено более подробно позже. Эти выводы аналогово-цифрового преобразователя составляют порт A.
Одним из примеров использования аналогового преобразования в цифровую форму может быть, скажем, зондирование температура. Вы можете подключить компонент, который преобразует температуру в уровень напряжения, называемого термистором, на один из контактов порта A и микроконтроллер преобразует это напряжение в число от 0 до 255 (8-битное число — более высокое разрешение возможно при 10 битах). Программа, которая написана и хранится в микроконтроллере. можно использовать эту температуру и реагировать определенным образом.Например, если у вас есть термистор против кипящего котла, микроконтроллер может реагировать и обеспечивать выход на другой контакт, который издает звуковой сигнал или мигает светом.
Другие особенности этого и других микроконтроллеров, кроме самого программирования это пространство программирования (где программа хранится в микросхеме и сколько места у вас есть), память или пространство для данных и переменных, которые программа будет использовать, и наконец, в микросхему встроены часы, которые считают.Подсчет может быть в много разных скоростей в зависимости от скорости чипа и делителя, который выбран по скорости. Это начинает усложняться, поэтому я вернусь. Подсчет может производиться в секундах, миллисекундах, микросекундах или в любом другом формате. для выбранной программы и приложения.
Поскольку эта серия руководств основана на примерах, я предоставлю много деталей. Конечно, детали для введения были бы невозможны, и если вы очень авантюрный, вы можете взглянуть на техническое описание и руководство для этого микропроцессора, но не позволяйте этому огромному документу отбить у вас желание изучить этот невероятнейший технология.Как только вы научитесь, приложение будет без ограничений, от крошечных роботов, к чрезвычайно крупномасштабным архитектурным чудесам, которые движутся и испускают впечатляющие световые эффекты, иногда взаимодействующие с окружающей средой.
Программирование микроконтроллеров AVR и Arduino с использованием Arduino ISP
Всем микроконтроллерам (MCU) требуется какой-то механизм для их программирования, даже если они программируются только один раз. Обычно программный код пишется на главном компьютере, затем он компилируется или транслируется, а объектный (машиночитаемый) код загружается в MCU («цель») с ПК («хост») с помощью кабеля ( обычно USB или RS232), который (с некоторым программным обеспечением) часто называют «программистом».«После программирования микроконтроллер функционирует так, как закодировано.
Одним из очень популярных производителей плат для разработки микроконтроллеров является компания Arduino из Италии. Многие платы Arduino оснащены микроконтроллерами AVR, для которых также требуются программисты для сохранения программ, созданных на главном компьютере, в память целевого MCU, например, микроконтроллер AVR. Внешние программаторы часто используются для микроконтроллеров AVR и могут быть дорогостоящими.
Большинство целевых микроконтроллеров приходится программировать несколько раз во время разработки проекта, поэтому невозможно удалить микроконтроллер из схемы для его программирования.Многие микроконтроллеры, включая процессоры AVR, можно программировать с помощью встроенного программатора (ISP), поэтому их не нужно снимать с печатной платы. [i]
По умолчанию платы Arduino имеют резидентный код MCU, называемый загрузчиком. Загрузчики — это первые программы, которые населяют MCU, когда вы их включаете. Загрузчики инструктируют MCU, что загружать или делать дальше. Arduino упрощает использование связи между хостом ПК и микроконтроллером (целевым), установленным на плате, с помощью интегрированной среды разработки (IDE).IDE является резидентной и включает инструменты, которые разработчики могут использовать для программирования, компиляции и отладки целевого MCU.
Загрузчик также поддерживает связь между Arduino IDE и платой Arduino через USB. Загрузчик отвечает за запись кода на чипе, поступающего из Arduino IDE.
Платы разработкиArduino имеют общий дизайн, который делает их простыми в использовании, включая бесплатные программные инструменты. Платы контроллеров Arduino очень популярны для начинающих во встраиваемом программировании и часто используются в образовательных учреждениях.Простое USB-соединение между платой разработки Arduino (целью) и хост-компьютером делает Arduinos подходящим для разработки встраиваемых проектов без необходимости понимать , как получить программный код в MCU и запустить код оттуда. (Arduino называет программу или код «эскизом».) Платы Arduino больше всего подходят для небольших проектов.
Однако, если целью является разработка экономичного продукта, то создание больших объемов плат производственного качества с использованием микроконтроллера AVR на специально разработанной печатной плате дешевле, чем покупка сотен или тысяч плат Arduino, заполненных одним и тем же микроконтроллером AVR. .Тем не менее, многие использовали недорогие платы разработки Arduino (и аналогичные) в качестве установленного конечного продукта, если это дешевле, чтобы избежать создания и наполнения небольшими партиями печатных плат.
ПлатыArduino имеют небольшое количество универсальных вводов-выводов и могут использоваться для множества различных целей. Например, платы Arduino могут выступать в качестве инструмента программирования для других микроконтроллеров AVR, использующих Arduino ISP, и являются одним из самых простых и дешевых методов программирования микроконтроллеров AVR. Встроенный программатор Arduino — это встроенная функция, предлагаемая в бесплатной Arduino IDE.Интернет-провайдер позволяет программировать платы Arduino и другие микроконтроллеры AVR, используя другую плату Arduino, предназначенную для этой цели. [Ii]
Однако программирование недавно разработанной платы Arduino с использованием полнофункциональной платы Arduino (в качестве программиста — Arduino) имеет несколько условий. Во-первых, «программист-Arduino» (Arduino, который вы настроили как программист) должен быть настроен как как ISP. Эскиз (код) по умолчанию доступен в примере кода в меню «Файл» среды Arduino IDE.[iii] Скетч Arduino ISP передает необходимые инструкции программисту-Arduino для настройки в режиме программирования.
Рисунок 1: Вариант эскиза Arduino ISP. (Источник: скриншот автора) Рисунок 2: Скетч Arduino ISP. (Источник: снимок экрана автора)За состоянием программатора-Arduino можно следить, подключив светодиоды, как показано на рисунке. Скетч Arduino ISP предварительно запрограммирован для этой функции.
Рисунок 3: Подключение светодиодов Arduino. (Источник: скриншот автора)Контакт 7 = Программирование (включается во время программирования)
Контакт 8 = Ошибка (включается в случае ошибки программирования)
Контакт 9 = Heartbeat (остается включенным после включения программатора)
После настройки программатора-Arduino устанавливается соединение между программатором-Arduino и целью Arduino.Конфигурация контактов должна быть выполнена точно так, как указано в эскизе Arduino ISP.
Интернет-провайдер Arduino обменивается данными с помощью протокола последовательного периферийного интерфейса (SPI) для программирования микроконтроллеров AVR. Связь SPI использует 4 логических сигнала: MOSI, MISO, SCLK и SS. Помимо I 2 C, SPI является одним из наиболее часто используемых способов связи для микроконтроллеров. SPI следует архитектуре ведущий-ведомый, что означает, что ведущее устройство может обмениваться данными с несколькими ведомыми устройствами, используя одни и те же выводы данных, а целевое ведомое устройство выбирается с помощью линии выбора ведомого.Если есть карты памяти, выбор ведомого используется для выбора конкретной микросхемы среди множества микросхем. Однако, когда вы используете Arduino в качестве инструмента программирования, сигнал выбора ведомого используется только для сброса микроконтроллера. Сброс микроконтроллера переводит его в состояние приема команд от программатора Arduino. [iv]
На программаторе-Arduino контакты 10, 11, 12 и 13 используются в качестве контактов данных. Конфигурации следующие:
Контакт 10 = СБРОС
Контакт 11 = MOSI
Контакт 12 = MISO
Контакт 13 = SCK
Контакты 5 В и заземления могут быть подключены от программатора Arduino.Важно подключить опорную землю обоих Arduinos, чтобы избежать сбоев, а также для обеспечения безопасности.
Внутрисхемное последовательное программирование (ICSP) — это возможность программирования микроконтроллера без отключения от схемы. Заголовок ICSP физически доступен на плате Arduino в виде 6 контактов. Соедините контакты 11, 12 и 13 целевой Arduino с контактами 11, 12 и 13 вашего программатора Arduino. Обратите внимание, что контакт 10 вашего программатора Arduino должен подключаться к контакту сброса вашей целевой Arduino.В качестве альтернативы, выводы заголовка ICSP могут использоваться для связи SPI. (См. Рисунок 4).
Рисунок 4: Заголовок Arduino ICSP. (Источник: снимок экрана автора)После подключения всего вышеперечисленного вам необходимо определить, что вы используете режим программатора с вашего хост-компьютера. Перейдите в меню «Инструменты» и выберите «Arduino as ISP» в параметрах «Программист». (См. Рисунок 5).
Рисунок 5: Настройка программиста Arduino в качестве интернет-провайдера (Источник: снимок экрана автора)Затем загрузите загрузчик в память вашей целевой Arduino, а затем определите свои «предохранители.«В Arduino-land плавкие предохранители представляют собой набор инструкций для определения нескольких функций микроконтроллера. Например, частота микросхемы и источник тактирования определены в предохранителях. Микроконтроллеры чувствительны к рабочему напряжению, и если уровень напряжения упадет ниже определенного уровня, микроконтроллер может выйти из строя. Минимальное рабочее напряжение также определяется внутри предохранителей. [v]
Вышеуказанные шаги необходимы, если программатор-Arduino должен быть настроен так, чтобы он был совместим с Arduino IDE для прямой загрузки эскиза.Параметр «записать загрузчик» также находится в меню инструментов и записывает загрузчик на целевой Arduino (см. Рисунок 6).
Рисунок 6. Вариант записи загрузчика (Источник: снимок экрана автора)Если микроконтроллер или плата Arduino могут взаимодействовать с программой Arduino IDE, это дает различные преимущества, например, возможность проверять результаты во время выполнения с помощью последовательного монитора Arduino IDE. (Serial Monitor открывается в отдельном окне, действуя как независимый терминал, который принимает и отправляет последовательные данные.)
Если загрузчик не загружен в микроконтроллер, он не сможет использовать функции Arduino и не сможет взаимодействовать с Arduino IDE. vi Загрузчик использует часть памяти. В некоторых случаях использование Arduino IDE не требуется, поэтому не нужно программировать загрузчик. Если загрузчик не запрограммирован, можно освободить больше памяти для основного скетча программы. Например, в Arduino UNO общий размер памяти составляет 32 КБ, а 0.Под загрузчик отведено 5 КБ памяти. vii Если загрузчик не установлен, общая память, доступная для основного эскиза программы, больше.
Arduinos хороши для изучения и экспериментирования с новыми идеями. Поскольку Arduino имеет открытый исходный код, включая схемы проектирования оборудования и файлы Gerber, любой может скопировать Arduino, изменить его и использовать в коммерческом контексте, если захочет. Arduinos — это не совсем дойная корова, а скорее труд любви, переопределяющий, как передается встроенное оборудование.
i https://ieeexplore.ieee.org/document/8005274
ii https://www.arduino.cc/en/Guide/ArduinoISP
iii https://www.arduino.cc/en/Tutorial/ArduinoISP
iv https://www.arduino.cc/en/Reference/SPI
в https://www.arduino.cc/en/Hacking/MiniBootloader
vi https://www.arduino.cc/en/Tutorial/ArduinoISP
vii https://en.wikipedia.org/wiki/Arduino_Uno#Technical_specifications
Использование микроконтроллеров AVR: минималистичные целевые платы
Это краткое руководство по созданию сверхпростых плат разработки для программирования микроконтроллеров AVR.Самые последние AVR могут быть запрограммированы через соединение ISP (внутрисистемный программатор); все, что действительно нужно, — это место для чипа и способ подключения к программатору.
Вот тут и пригодятся эти минималистичные «целевые платы» AVR. Эти маленькие платы стоят всего около 2 долларов, и их изготовление занимает всего несколько минут.
Оказывается, я создаю много таких, потому что спрашиваю: «Как сделать схему для программирования AVR?» на самом деле то же самое, что спросить, как вы можете запрограммировать AVR, который находится в цепи.И мы могли бы также начать с простой схемы.
Вы можете себе представить два основных типа программаторов микроконтроллеров: один с разъемом для вашего чипа, а другой подключается к вашей схеме, на которой установлен ваш чип. Нас интересуют последние, группа так называемых системных программистов, иногда называемых внутрисхемными программистами. Конечно, вы также можете получить программистов с выделенными сокетами, но они обычно дороже и не принципиально «лучше».«С помощью внутрисистемного программатора вы можете не только программировать микроконтроллеры, которые находятся в более крупных схемах, но вы также можете легко создать целевые платы программатора с сокетами, что даст вам преимущества программиста с сокетом.
Стандартным де-факто USB-внутрисистемным программатором AVR является Atmel AVRISP mkII, номер детали ATAVRISP2-ND от Digi-Key, за 36 долларов. На самом деле я немного писал об использовании этого программатора в прошлом году. Это хороший программист с очень немногими излишествами, и он неплохо работает.Он имеет твердый пластиковый корпус с разъемом USB «B» на одном конце и кабелем, заканчивающимся 6-контактным разъемом ISP на другом конце. (Если вы снимете корпус AVRISP mkII, на печатной плате есть место для подключения 10-контактного кабеля ISP, но это не разглашаемая функция.)
Одним из недостатков этого программатора является то, что для его работы требуется внешнее питание, подаваемое на целевую плату. Это немного глупо, потому что программист получает энергию, необходимую для работы, от USB, но не передает ее для питания микроконтроллера во время программирования.В идеале у программатора должен быть переключатель, чтобы вы могли использовать его для питания целевой платы или нет.
Новый программатор USBtinyISP AVR от Adafruit Industries (рассмотренный здесь), вероятно, является лучшим выбором для большинства приложений. Он поставляется в виде простого комплекта за 18,00 $ 22,00 $ и включает в себя как 6-контактные, так и 10-контактные интерфейсы. Отличительной особенностью AVRISP mkII является то, что он позволяет использовать питание USB для прямого питания целевой платы.Ну, это и то, что он поставляется с и 6-контактными и 10-контактными кабелями ISP.
Еще один интересный вариант (для некоторых из вас): вы можете использовать Arduino в качестве программиста AVR-ISP.
Для людей, которым не нужен USB, нет недостатка в последовательных и параллельных программаторах ISP. Большинство из них используют 10-контактный интерфейс. У Adafruit есть по одной последовательной и параллельной. Вы также можете получить их из других источников (например, SparkFun), но обычно по более высокой цене. И, если у вас есть параллельный порт, давайте не будем забывать, что вы можете создать почти из чистого
воздуха.
В любом случае, вернемся к целевым доскам. Раньше мы в основном использовали «настоящие» макетные платы, которые включают источники питания, средства связи и кварцевый генератор.
Типичные разновидности — это те, которые доступны от SparkFun Electronics, которые в основном производятся Olimex. Также есть отличная доска от Futurlec, а также десятки других из других источников. (В частности, эти превосходные эталонные проекты с открытым исходным кодом от Паскаля Стэнга.)
Это часто перебор.На показанной здесь плате для разработки я использую только разъем питания, разъем и разъем ISP исходной платы — ни одна из других функций не оказалась полезной для того, что я в итоге построил на этой плате.
Итак, когда имеет смысл паять собственные целевые платы? Во-первых, проще использовать AVR в корпусе со сквозным отверстием (DIP).
Одна из действительно хороших особенностей микроконтроллеров серии AVR заключается в том, что многие из них доступны в удобных для любителей сквозных отверстиях (DIP) корпусах.(Однако, если все же необходимо использовать одну из разновидностей, доступных только в корпусе для поверхностного монтажа, действительно имеет смысл приобрести чужую плату для разработки или выложить свою собственную.)
Приступим.
Для начала мы сделаем минимальную целевую плату для программирования ATtiny2313, популярного 20-контактного микроконтроллера AVR.
Вот компоненты: макетная перфокарта (номер детали BG Micro ACS1053, $ 0,99), DIP-заголовок 2 × 3 (часть номера детали BG Micro ACS1019, $ 0.33) и 20-контактное DIP-гнездо (номер детали BG Micro soc1029, 0,55 доллара США). У нас также есть пара дополнительных компонентов: гнездо с нулевым усилием вставки (ZIF) и батарейный блок размером 3 x AAA. Розетки ZIF, как правило, довольно дороги — мы нашли их на eBay всего за несколько долларов каждая, так что мы действительно построим эту плату с одной.
Первый шаг — разместить разъем и заголовок разъема ISP на макетной плате, а затем (важно!) Пометить один конец разъема ISP как конец, содержащий контакт 1.Когда вы в конечном итоге подключите соединительный кабель ISP к заголовку, вам нужно будет убедиться, что у вас правильная ориентация.
Следующий шаг — определить, как подключить контакты заголовка ISP к контактам сокета. В примечании к применению Atmel 42 описывается распиновка 6-контактных и 10-контактных интерфейсных разъемов ISP. Сверху они выглядят так:
Контакты на 6-контактном интерфейсе — это питание (+ Vcc) и земля, а также четыре «сигнала» разъема ISP, которые называются RESET, SCK, MISO и MOSI.Вы заметите, что 10-контактный интерфейс просто набит жиром — он не обеспечивает дополнительных функций.
(Примечание: характер линии питания (Vcc) зависит от контекста, и вам нужно будет подумать о том, каким образом ваше питание проходит через этот разъем. Если вы используете AVRISP mkII или большинство других программаторов, ожидается, что Vcc Предоставить программисту от целевой платы . Это используется, чтобы указать программисту, что цель «активна» и готова к программированию.В этом случае необходимо, чтобы предоставил отдельный источник питания для целевой платы. Если вы используете USBtinyISP, у вас есть опция для использования вывода Vcc на интерфейсе ISP для подачи питания с на целевой платы. Эту опцию следует отключить, если ваша целевая плата подает питание на вывод Vcc интерфейса ISP.)
Затем нам нужно определить контакты AVR, которые присоединяются к контактам разъема ISP.
Вы можете начать с просмотра таблицы данных для вашей конкретной разновидности AVR (список здесь) и поиска шести контактов, которые совпадают с названиями контактов на разъеме ISP.Здесь я выделил соответствующие контакты трех устройств AVR, которые мне нравятся и поставляются в 8-контактных (ATtiny45), 20-контактных (ATtiny2313) и 28-контактных (ATmega168) корпусах DIP:
Многие , но не все устройств AVR в данном корпусе (например, DIP-8) имеют одинаковые выводы разъема ISP, поэтому эти целевые платы иногда (с осторожностью) можно даже использовать для разных микроконтроллеров AVR. Например,
ATmega8, ATmega48, ATmega88 и ATmega168 имеют одинаковые 28-контактные распиновки.Обратите внимание, что на рисунке выше показано более шести подключений к ATmega168. Это потому, что есть дополнительные линии питания и заземления, идущие к аналоговой схеме микросхемы, которые должны быть подключены, даже когда аналоговая секция не используется.
Теперь, когда мы знаем, где находятся различные контакты ISP заголовка и микросхемы, мы можем подключить их. Нам нужно шесть проводов (очевидно) — подключите MISO к MISO, MOSI к MOSI и так далее, и припаяйте линии. Не забудьте проиндексировать заголовок с конца, который вы отметили ранее, с конца с контактом 1.
Вот и все — остальное просто глазурь.
Вот как выглядит обратная сторона; не на что смотреть!
Вы можете дополнительно добавить источник питания для питания платы, что может быть не так уж и необязательно, если вы используете программатор, которому требуется питание от платы. Поскольку чип сам по себе потребляет очень мало энергии, батарейный отсек является хорошей идеей и может прослужить очень долго.
Для использования целевой платы вставьте AVR в разъем и подключите программатор к разъему ISP. Обратите внимание на ориентацию. Конец с контактом 1 часто отмечен полосой на кабеле и / или маленьким треугольником на разъеме.
Вы можете создать более простую, меньшую и гораздо более дешевую версию этой целевой платы, исключив сокет ZIF. Сложнее использовать, если вы * много * вынимаете чип, но в остальном это хорошее решение.И, конечно же, если вы используете программатор, который подает питание на целевой микроконтроллер, вы даже можете отказаться от батарейного отсека. Стоимость до 2 долларов и время сборки до 5 минут. Отлично.
Так что же дальше? Во-первых, возьмите этого программатора, если у вас его еще нет. Затем установите набор инструментов GNU, подходящий для вашей системы (например, winavr для Windows или OSX-AVR на Mac), а затем загрузите образец кода и отправляйтесь в город — там нет недостатка в крутых проектах AVR, и мы надеемся, что что эти подсказки дадут толчок в правильном направлении.
Обновление статьи:
С момента публикации мы выпустили версии печатных плат «xx8» и «2313», показанные выше. Вы можете прочитать об этих проектах здесь и здесь, а комплекты доступны в нашем интернет-магазине здесь.
В нашем интернет-магазине также доступны недорогие розетки DIP ZIF, вы можете найти их здесь.
Загрузка программы в микроконтроллер AVR вручную
Этот проект предназначен для программирования микроконтроллера AVR «вручную».Когда мы обычно программируем микроконтроллер, мы пишем программу, например, на C, затем нажмите программу передачи и «вуаля» программа загружена в микроконтроллер и работает — по крайней мере, иногда
С помощью руководства — здесь мы попытаемся понять, что мы на самом деле отправляем (как по крупицам) в микроконтроллер, чтобы его запрограммировать. Теперь все мы должны состоять из единиц и нулей, но как и в какой последовательности.
При покупке микроконтроллера он что-нибудь умеет?Если вы не купили микроконтроллер с загруженной программой, он будет пустым — и при включении он ничего не будет выполнять.Он будет искать программную инструкцию по адресу памяти 0000 — и, если здесь ничего нет, просто остановится.
Из вышесказанного уже ясно, что он действительно что-то делает — например, пытается выполнить программу — так что это не полный «тупой» кирпич.
Другая вещь, которую он имеет, — это способность понимать инструкции, предоставляемые при загрузке программы. Например, в нем уже есть возможность складывать числа — при условии, что мы дадим ему правильные инструкции. Доступные инструкции будут перечислены в таблице данных микроконтроллера или могут быть доступны как общие инструкции для группы (семейства) микроконтроллеров.
Независимо от того, как мы создаем программу, в конце ее необходимо загрузить в микроконтроллер в виде двоичного кода — все нули и единицы. Никто в здравом уме не захочет программировать двоичный файл напрямую, мы всегда будем использовать какой-то инструмент более высокого уровня, например C, C ++ и т. Д., А затем компилятор изменит это до необходимого уровня кода.
При просмотре набора инструкций AVR (http://www.atmel.com/images/Atmel-0856-AVR-Instruction-Set-Manual.pdf) мы можем увидеть несколько примеров инструкций и их двоичный код.Это набор инструкций для микроконтроллера AVR, и вы всегда должны проверять, доступна ли инструкция для вашего конкретного микроконтроллера. В техническом описании микроконтроллера будет список тех инструкций, которые он поддерживает.
Для этого проекта мы сошли с ума и попытаемся загрузить небольшую программу, запрограммировав двоичный код самостоятельно. Попробовав это однажды, мы поймем, почему мы, вероятно, никогда не сделаем этого снова.
Выход из строя микроконтроллера AVRДля этого путешествия я собираюсь использовать ATTiny13 от Atmel.Возможно, это окажется плохим выбором, но я подумал, что простой чип может облегчить понимание этого — могут быть известные последние слова.
Hre — это ссылка на техническое описание ATTiny13: http://www.atmel.com/Images/doc2535.pdf. Следует отметить, что оглавление находится в конце 176 страниц — не знаю почему.
Каждый производитель микроконтроллера имеет свой собственный дизайн, поэтому то, что я показываю здесь для микроконтроллера ATTiny13, в целом одинаково для всех микросхем AVR от Atmel, но другие поставщики будут иметь другие конструкции.Пожалуйста, примите это во внимание при чтении.
Микроконтроллер содержит много всего, но пока мы рассмотрим 3 части, которые представляют особый интерес при программировании микроконтроллера:
Давайте начнем искать PIN-код.Attiny13 имеет 8 контактов, и когда вы посмотрите на микроконтроллер, вы увидите небольшую отметку или кружок на одном конце — на картинке выше вы видите это в верхней части микроконтроллера.
Одна вещь, которая может показаться запутанной, — это то, что Pbx, а затем номер пина — это что-то другое.PB предназначен для порта, и, например, PB0 — это порт 0, где 1–8 — это фактические физические контакты микроконтроллера.
Если вы посмотрите на таблицу, вы увидите, что контакты часто имеют более одного предназначения, то есть их можно использовать более чем для одной цели. Для чего он нужен, зависит от вашей программы. Чуть позже мы увидим, что мы используем некоторые выводы для программирования микроконтроллера, а здесь мы даем им другое обозначение.
Память в Attiny13Работая с компьютерами, мы часто думаем о памяти, как о жестком диске, как о чем-то отличном от компьютера.Для микроконтроллера у нас есть ЦП и память на одном физическом устройстве. Если требуется больше памяти, мы можем взаимодействовать с внешними модулями памяти, но, по крайней мере, программа будет загружена и сохранена в микроконтроллере.
Флэш-память — 1 кБЭто память, в которую мы будем загружать программу. Для Attiny13 у нас есть 1 КБ для нашей программы. По сравнению с вашим компьютером, на котором мы говорим о гигабайтах или терабайтах, это, конечно, очень мало.
Это энергонезависимое хранилище, которое будет хранить программу даже при отключении питания микроконтроллера. Именно это энергонезависимое поведение мы используем, чтобы разрешить перезагрузку микроконтроллера, пока мы не будем удовлетворены программой или когда нам нужно попробовать что-то новое с микроконтроллером.
SRAM (статическое ОЗУ) — 160 байтов (64 байта)Если мы посмотрим на таблицу, в ней указано, что Attiny13 имеет 64 байта SRAM, но я обнаружил, что другие описания, в которых они заявляют, что все 160 байтов на самом деле более понятны, тот факт, что 32 байта зарезервированы для регистров общего назначения и 64 байты зарезервированы для стандартных регистров ввода-вывода.Остается 64 байта для SRAM, которые могут использоваться нашими программами.
Ниже приведена разбивка этой памяти с соответствующими адресами памяти, я отметил как шестнадцатеричные, так и десятичные значения адресов:
Это хранилище является энергозависимым, то есть мы теряем эти данные при отключении питания. Одна интересная особенность заключается в том, что эти данные останутся после перезагрузки микроконтроллера.
EEPROM (электрически стираемая и программируемая постоянная память) — 64 байтаУ этого хранилища есть пара недостатков; по сравнению с SRAM он медленный, и у него есть ограничение на то, сколько раз вы можете писать по этим адресам, прежде чем он может выйти из строя.В таблице данных вы обнаружите, что они заявляют, что после примерно 100 000 операций записи эта память может выйти из строя.
100 000 может звучать как много, но если бы мы записывали измерение с датчика на определенный адрес раз в секунду, это заняло бы менее 30 часов выборки, прежде чем этот адрес может начать выходить из строя. Чтобы продлить срок его службы, Attiny имеет встроенную логику, в которой новое значение записывается в адрес только в том случае, если оно отличается от того, что хранится в настоящее время — для многих приложений это, конечно, продлит срок службы адресной ячейки. .
Это хранилище энергонезависимо, поэтому данные хранятся при выключенном питании.
Внутренние часыAttiny13 имеет внутренние часы, которые работают на частоте до 10 МГц, хотя в таблице данных указано, что возможна частота до 20 МГц, если вы гарантируете, что напряжение в любое время находится в диапазоне от 4,5 до 5,5 В.
1 такт — это время одного импульса высокого уровня «1» и одного низкого уровня «0», и на самом деле это не часы, как мы бы сказали в обычном мире, поскольку мы не можем точно предположить фактическое время на основе этого.Фактическая скорость зависит от температуры.
Большинство инструкций AVR могут быть выполнены за 1 тактовый цикл, и поэтому у нас есть прямая связь между тактовым циклом и количеством инструкций, которые наша программа может выполнить за заданное время. Однако для большинства проектов скорость, вероятно, не является большой проблемой.
Следует отметить, что Attiny13 также можно снабдить внешними часами. Это будет иметь место, если нам нужен либо очень точный тактовый цикл, либо тактовый цикл, который мы не можем настроить Attiny13 для работы с внутренними часами.
В этом проекте мы фактически будем использовать эту опцию для внешнего управления часами при загрузке программы в микроконтроллер — но мы рассмотрим это немного позже.
Как мы программируем микроконтроллерЧасто мы говорим о том, как создать программу, которая будет работать в микроконтроллере, но здесь мы говорим о том, как в первую очередь загрузить программу в микроконтроллер .
В этом проекте мы будем использовать SPI (последовательный периферийный интерфейс) для загрузки программы в микроконтроллер.Эта опция доступна для большинства микроконтроллеров, а также используется микроконтроллером для связи с другими устройствами.
Для программирования микроконтроллера нам нужно использовать только 3 контакта:
4-й контакт -го , используемый в стандартном SPI:
Для того, чтобы мы могли программировать микроконтроллер, MISO не является строго необходимым, если только не требуется считывать данные с микроконтроллера как часть нашего процесса загрузки. Это было бы неплохо, если бы мы создавали более надежную программу загрузки, но для этого тестового проекта мы не будем использовать эту функцию.
В дополнение к использованию контактов для SPI нам также необходимо обеспечить контроллер питанием и заземлением.
Выше диаграмма из таблицы данных ATTiny13 контактов, используемых для SPI.
Понимание часов (SCK) и эффектаПри использовании SPI мы контролируем тактовую частоту вручную с помощью вывода SCK. Самое замечательное в этом дизайне состоит в том, что мы можем выбирать скорость часов, И это даже не обязательно должно быть постоянной скоростью. Это то, что мы упоминали под внутренними часами, что у нас также есть возможность питания часов от внешнего источника.
Один тактовый цикл — это время, необходимое для высокого уровня + низкого уровня часов — см. Рисунок.
С точки зрения коммуникации есть две интересные части: передний фронт и спад — две красные стрелки. ATTiny13 будет читать (загружать) данные по нарастающему фронту — поэтому, если мы хотим загрузить значение, присутствующее на любом выводе микроконтроллера, нам нужно, чтобы на этом выводе было значение — ДО , часы переместятся с 0 на 1.
В нашем случае, когда мы хотим написать программу для ATTiny13, мы рассматриваем его как подчиненное устройство.Таким образом, данные, которые нам нужно загрузить, должны быть подключены к выводу MOSI (Master Out Slave In) микроконтроллера.
Давайте посмотрим на пример:
Мы хотим загрузить «1» в память микроконтроллера, и мы будем использовать вывод MOSI для этого входа. Тогда нам нужно предпринять следующие шаги:
Установите вывод MOSI на «1»
Увеличьте сигнал на выводе SCK до «1»
Вот и все — теперь мы загрузили «1». Чтобы загрузить следующий бит, нам нужно понизить сигнал SCK до «0», а затем при повторном повышении его до «1» теперь будет считываться значение вывода MOSI.Если бы мы сохранили знак MOSI на «1», мы бы загрузили «11» в микроконтроллер.
Итак, нам нужно сделать это всего несколько тысяч раз, и у нас загружена программа
Прежде чем мы сделаем это, нам нужно подготовить ATTiny13 к программированию. Опять же из таблицы мы можем увидеть, как они ожидают этого.
Подготовка ATTiny13 к приему программы.Обладая вышеуказанными знаниями, давайте рассмотрим этапы программирования микроконтроллера.Если мы посмотрим на таблицу микроконтроллера ATTiny13, то найдем предлагаемые настройки (раздел 17.6.1):
Включите микроконтроллер
Установить низкий уровень на выводе SCK (0)
Установите на выводе RESET высокий уровень (1) минимум на 2,5 миллисекунды
Установите высокий вывод RESET (0)
Подождите не менее 20 миллисекунд
Отправьте «код разрешения программирования» — этот код можно найти в таблице 17-9 технического описания.
После вышесказанного микроконтроллер готов к приему программы.
Прежде чем мы перейдем к программированию, давайте удостоверимся, что мы знаем, как это сделать. Я думаю, что шаги 1–5 довольно ясны, это просто вопрос установки конкретных выводов на высокий или низкий, а шаг 5 — это просто ожидание. Когда мы напишем код в Arduino IDE, мы снова увидим это.
Давайте рассмотрим шаг 6 более подробно.
Отправьте код разрешения программирования.
Из таблицы данных ATtiny13 (таблица 17-9) мы видим, что код для разрешения микроконтроллеру принимать программу:
1010 1100 0101 0011 хххх хххх хххх хххх
Где x указывает значение бита не имеет значения — НО нам все равно нужно что-то отправить в микроконтроллер. В этом примере я просто буду использовать 0, где я могу ввести любое значение.
Два контакта, которыми мы должны управлять для загрузки данных в микроконтроллер, — это SCK и MOSI.Как мы видели по тактовому сигналу (сигнал SCK), данные будут загружены в микроконтроллер, когда мы поднимем это значение до высокого («1»).
Итак, процесс, которому мы будем следовать, будет следующим:
Как видите, изменяется только первый шаг — это бит, который мы хотим загрузить.
Вот насколько прост процесс на самом деле, после того как мы загрузили все 32 бита — мы включили микроконтроллер для программирования. После последнего бита он автоматически выполняет инструкцию — так что здесь нет шага типа «Выполнить» или аналогичного, который нам нужно сделать после загрузки последнего бита.
Теперь мы готовы загрузить актуальную программу.
Загрузка программы аналогична описанному выше процессу — все инструкции в основном представляют собой набор из 32 битов, нам просто нужно найти все инструкции и сделать их доступными в двоичной форме.
Следующим шагом будет создание программы, которую мы затем загрузим, используя описанный выше процесс — это мы сделаем в части 2.
.