Язык программирования для avr
Введение
1. Подготовка к изучению
Для изучения нам понадобятся:
Стандартные библиотеки C для микроконтроллеров AVR ;
Программа для загрузки микропрограмм в микроконтроллер;
1.1. Среда разработки
При выборе среды разработки можно натолкнутся на «не пробиваемую стену» множества программных оболочек для программирования на разных языках программирования. Но учитывая направление на микроконтроллеры круг поиска сужается до сред разработки адаптированных под конкретный вид микроконтроллеров семейства AVR фирмы Atmel. Кроме того среда разработки язык программирования C.
Из множества вариантов рассмотрим среду разработки С odeBlocks. Будем использовать оригинальную версию С odeBlocks с сайта разработчиков www.codeblocks.org последней версии, на момент написания это версия 16.01. Данная среда разработки интересна наличием версий под популярные операционные системы Linux, Windows и Mac OS.
Вкратце рассмотрим установку под Windows. Скачав файл codeblocks-16.01-setup.exe запускаем его.
Ознакомимся с лицензией и принимаем ее.
Устанавливаем все компоненты без изменений
Путь установки оставляем без изменений.
Пробегают строки установки и появляется предложение запустить программу, соглашаемся. И конечно нажимаем Next в установщике и завершаем установку.
Получаем установленную среду разработки Code::Blocks.
1.2. Стандартные библиотеки C/ C++ для микроконтроллеров AVR
Среда разработки установлена, но для работы необходимо подключить библиотеки для компиляции программ для микроконтроллера. Один из способов это поставить WinAVR. Только зачем, если среда разработки уже выбрана. Возьмем все необходимое с сайта производителя микроконтроллеров семейства AVR.
Понадобится Atmel AVR 8-bit Toolchain так как использовать собираемся ATmega328 а он 8- bit. После скачивания запускаем полученный само распаковываемый архив и получаем папку (вида avr8-gnu-toolchain) со всем необходимым. Куда ее положить?
Запускаем ранее установленный Code::Blocks идем в меню Settings >> Compiler переходим во вкладку Toolchain executables выбираем интересующий нас компилятор из списка Selected compiler это будет GNU GCC Compiler for AVR. Далее смотрим путь по умолчанию для размещения ранее скачанной и распакованной папки.
Переименовываем нашу папку как в настройках Code::Blocks и перемещаем по указанному пути.
1.3. Программа для загрузки микропрограмм в микроконтроллер
Теперь все готово для программирования, но не хватает программы для облегчения прошивки микроконтроллера. Для изучения микроконтроллера ATmega328 будем использовать платформу Arduino UNO или Arduino Nano v3. Это дает возможность изучать микроконтроллер без паяльника и программатора. Для Arduino есть хорошая программа ArduinoBuilder и оболочка из проекта CodeBlocks Arduino IDE ( среда разработки Code::Blocks с добавлением библиотек ардуино ). Использовать микроконтроллер без ардуино гораздо интересней поэтому скачиваем только ArduinoBuilder. Его будем использовать для экспериментов с микроконтроллером на плате Arduino. Распаковываем архив, например в корень диска c:\ в папку ну скажем ArduinoBuilder, из нее делаем ссылку на рабочий стол и получаем два ярлыка:
Все программное обеспечение готово. Приступим к «железным» вопросам
1.4. Микроконтроллер
В своих изысканиях будем рассматривать микроконтроллер ATmega328 программы будем писать именно для него. «Знатоки» сразу нас пошлют к DataSheet но это не для нас. Мы пойдем своим путем и будем изучать его анатомию практически — методом «Тыка» : ).
Первое что необходимо, это приобрести минимальное оборудование. Ограничимся для начала покупкой ардуины или аналога. Главное, чтобы на ней был установлен микроконтроллер ATmega328.
Arduino Pro (на ATmega328 );
и конечно клоны от китайских товарищей.
Любой из перечисленных вариантов подойдет с теми или иными ограничениями или изменениями.
На схеме темно-серым выделены соответствия физическим выводам микроконтроллера, на них и будем опираться при программировании.
Основы программирования микроконтроллеров AVR
Минимальный материальный набор для изучения программирования
Выбор языка программирования и среды разработки для программирования
Стартовый набор начинающего микроконтроллерщика
Для первой группы все очень просто:
— приобрести программатор и научиться с ним работать
Ну а мы причисляем себя к третьей группе и пойдем хотя и тернистым, но очень интересным путем.
Получается вот такой набор:
С материальной базой разобрались, переходим ко второму вопросу.
Выбор языка программирования и среды разработки для программирования
Все, выбор мы сделали:
Теперь осталось выполнить два пункта:
1. Обзавестись каким-нибудь стартовым набором (для начала хватит и микроконтроллера ATmega8, нескольких светодиодов, пары кнопок и сопротивлений к ним).
2. Установить (именно установить, а не скачать, и с регистрацией) с официального сайта Atmel (http://www.atmel.com/ru/) программу Atmel Studio.
Программировать микроконтроллеры мы будем с использованием программатора USBASP.
Отдельной статьи по Atmel Studio я писать не буду, будем изучать ее постепенно, по мере надобности и в связке со статьями по устройству и программированию микроконтроллеров.
Следующие статьи
(23 голосов, оценка: 4,87 из 5)
Язык программирования для avr
Всё о прошивке AVR микроконтроллеров AVR
Как загрузить программу в микроконтроллер.
Я советую прошивать микроконтроллер AVR из удобного интерфейса программирования встроенного в компилятор CVAVR CodeVisionAVR
Книги по электронике и микроконтроллерам скачать в библиотеке
Например 6 штырьков для ISP прошивания AVR
Вид сверху платы на штырьки.
в ATmega 128 ATmega64 сигналы ISP программатора
MISO подключают к ножке PE1
MOSI подключают к ножке PE0
2) Вывод PEN нужно подключить к питанию VCC резистором 1-10 кОм
Подробней о фьюзах ниже и на стр. 2 курса
. и так до окончательной отладки устройства.
Вариант 2. Если вы не устанавливали чек бокс «Program the chip» или
1) запустите программатор CVAVR кнопочкой «МИКРОСХЕМА» правее «красного
жучка» в верхней панели инструментов. Появится окно программирования AVR
После прошивания, если вы сделали все правильно, AVR начнет выполнять уже новую программу.
Иначе вы можете отключить режим ISP или внутренний RC-генератор и для следующего программирования вам понадобится ставить кварц с конденсаторами или даже искать:
Parallel Programming does not work
Parallel Programming is not functioning correctly. Because of this, reprogramming
of the device is impossible if one of the following modes are selected:
– In-System Programming disabled (SPIEN unprogrammed)
– Reset Disabled (RSTDISBL programmed)
в ATmega XXX с завода включен внутренний RC генератор
на частоте 1 МГц ( уточните это по ДШ и его возможные частоты )
НЕ запрограммированный фьюз 1
ЗАпрограммированный фьюз 0
В таблице 2 указаны комбинации фьюзов для разных источников тактового сигнала.
Далее написано что с завода МК поставляется с такой комбинацией фьюзов
CKSEL 0001 SUT 10 CKOPT 1
По таблице 4 находим : в ATmega 16 для кварца с частотой от 3 до 8 МГц нужны конденсаторы от 12 до 22 пФ и вот такая комбинация фьюзов :
CKSEL 111 1 SUT 11 CKOPT 1
Вот скриншот с такой установкой фьюзов в программаторе компилятора CVAVR
Реклама недорогих радиодеталей почтой:
Для прошивания МК используйте меню «Program»
Для использования ATmega16 (и других мег) с внешним кварцевым или керамическим резонатором на частотах выше 8 МГц вам нужно установить фьюзы как в примере выше, но запрограммировать CKOPT
значит сделать его «0».
Т.е. вам нужна такая комбинация:
CKSEL 111 1 SUT 11 CKOPT 0
Фьюзы ATt iny2313 описаны в конце следующей страницы курса.
Частоту тактирования сигнала SCK программатором при прошивании можно установить в диалоге программирования в CVAVR.
Вот как сделать простой генератор тактовой частоты :
П ять поводков соединяющих линии параллельного (LPT) порта ПК и AVR так же как на схеме STK200 выше, но без микросхемы буфера.
Адаптер «5-проводков» прекрасно работает с компилятором CVAVR CodeVision AVR.
Всё о прошивке AVR Прошивка AVR PIC прошивки Программирование PIC и AVR
Питать устройство при программировании можно :
— сетевым адаптеры от бытовых устройств понизив напряжение до 5 вольт.
+5 вольт можно взять с вывода 1 гейм порта компьютера или из провода включенного в гнездо USB.
Желательно питать устройство от ПК! В этом случае «земля» вашего устройства будет соединена с корпусом ПК и можно будет безопасно подключать и отключать разъем программирующего адаптера.
Удобно подпаять к проводнику GND устройства проводок с «крокодильчиком» который прицепите к металлу ПК у LPT или COM портов перед подключением разъемов или сигнальных линий, проводов.
Теперь БЕЗОПАСНО соединять разъемы
и затем подавать питание на устройство.
Программатор встроенный в CodeVisionAVR позволяет настроить эту частоту правильно. Выше было написано как.
Так рекомендовано в апноуте AVR 042
Или соберите простой, дешевый и хороший
USB программатор для AVR
Прошитый микроконтроллер для сборки USB программатора AVR вы можете заказать по почте.
Есть много бесплатных загрузчиков
STC создал загрузчик bootloader размером 256 байт с поддержкой быстрого страничного режима записи.
Прошитые загрузчиком bootloader микроконтроллеры AVR PIC вы можете заказать по почте.
C писок Апноутов для AVR примеры применения микроконтроллеров.
AVR miniICE
Это профессиональное средство для программирования и
отладки программы МК ATmega фирмы Atmel в реальном
устройстве. Он полностью совместимый
с оригинальным AVR JTAG ICE.
Характеристики:
Поддерживаемые микроконтроллеры (AVR Studio ver. 4.xx):
Прошивка AVR miniICE обновляется из новых версий AVR Studio
Вы скачиваете новую версию и через меню перепрошиваете
AVR miniICE и получаете поддержку новых чипов.
Детали:
Кол. | Тип | Обозначение |
2 | 470R | R1, R2 |
1 | 10K | R3 |
2 | 22p | C7, C8 |
6 | 100n | C1,C2,C3,C4,C5,C6 |
1 | LED-G | D1 |
1 | LED-R | D2 |
1 | ATmega16L | DD1 |
1 | MAX3232 | DD2 |
1 | 7.3728 MHz | Q1 |
Программирование (обновление программного обеспечения):
Пример реализации: на макетке
Прилагаемые файлы:
Дополнение:
Можно сразу залить в ATmega16 готовую прошивку (не надо прошивать через бутлодер)
Программирование AVR с помощью PonyProg
описание программатора PonyProg на русском языке
Свободно распространяемая программа управления программированием микроконтроллеров AVR, PIC и т.д. Более подробную информацию и саму программу можно получить на сайте автора Claudio Lanconelli http://www.lancos.com/ (кстати есть поддержка русского интерфейса).
Большинство контроллеров AVR поддерживает режим внутрисхемного программирования.
Рис.1
Следует обратить внимание что эта схема не имеет промежуточного буфера и не имеет гальванической развязки по отношению к параллельному порту, поэтому во избежание вывода из строя параллельного порта, подключать и отключать кабель следует при выключенном компьютере и выключенном питании на плате, где установлен контроллер.
На Рис.3 приведена схема подключенния загрузочного кабеля к контроллеру ATmega8.
Источник питания стабилизированный от 4,5 до 5 V или батарейка.
При подключении других AVR контроллеров серий AT90, ATmega, проследить на соответствие сигналов и цоколевку.
Для контроллеров серии ATmega внешний кварцевый резотатор не обязателен. Они могут работать от внутреннего генератора и поставляются призводителем именно в таком режиме.
В любом случае, прежде чем совершать какие либо действия с контроллером, необходимо прочитать инструкцию (Datasheet) конкретно для данного девайса.
Вот настройка PonyProg на LPT порт :
Светодиод VD1 индицирует режим записи микроконтроллера,
Напряжение, необходимое для питания схема берёт с разъёма ISP, т.е. от программируемого устройства. Эта схема является переработанной схемой программатора STK200/300 (добавлены светодиоды для удобства работы), поэтому она совместима со всеми программами программаторов на PC, работающих со схемой STK200/300. Для работы с этим программатором используйте программу CVAVR
Программатор можно выполнить на печатной плате и поместить её в корпус разъёма LPT, как показано на рисунках:
Программирование микроконтроллеров AVR
Микроконтроллер – микросхема, предназначенная для управления электронными устройствами, или по другому – простенький компьютер (микро-ЭВМ), способный выполнять несложные задачи.
Рано или поздно, любой радиолюбитель (я так думаю), приходит к мысли о применении в своих разработках микроконтроллеров. Микроконтроллер позволяет существенно «облегчить» радиолюбительскую конструкцию, сделать ее проще и намного функциональнее.
В сети существует множество сайтов затрагивающих так или иначе «микроконтроллерную» тематику, много также и различной литературы для начинающих. Поэтому я не собираюсь «переплюнуть» всех и вся и создать очередной шедевр мыслительных мук в виде пособия по микроконтроллерам для начинающих. Я постараюсь систематизировать, собрать в кучу все нужное на мой взгляд, для первого шага в мир микроконтроллеров, и изложить более-менее доступным языком.
В своих статьях я буду опираться на материалы из публикаций популярных авторов микроконтроллерной тематики: Рюмика С.М., Белова А.В., Ревича Ю.В., Евстифеева А.В., Гребнева В.В., Мортона Д., Трамперта В., Фрунзе А.В. и Фрунзе А.А. (и многих других), а также материалы радиолюбительских сайтов. Ну и, может быть, немного своих «умных мыслей».
Программирование микроконтроллеров AVR фирмы Atmel
Эта статья, как и все последующие, — маленький шажок в мир микроконтроллеров. И таких «шажков» у нас будет много, пока не дойдем до того момента, когда сможем сказать: «Микроконтроллер — последний шаг». Но и это, скорее всего, из области фантастики — нельзя объять необъятное, — мир микроконтроллеров постоянно развивается и совершенствуется. Наша задача — сделать первый шаг, логическим итогом которого должна стать первая, самостоятельно разработанная и собранная конструкция на микроконтроллере.
Как вы наверняка знаете, существует много разных систем счисления, одними пользуются и сейчас (наша, родная, десятичная система; римская система, известная нам как «римские цифры»), другие остались в глубоком прошлом (системы счисления инков и майя, древнеегипитская система, вавилонская).
Тут, я думаю, вопросов у нас нет, что такое системы счисления нам понятно — отображение чисел символами. А вот какая связь систем счисления с микроконтроллерами.
Все современные цифровые технологии основываются на логических операциях, без них никуда не деться. Все цифровые микросхемы в своей работе используют логические схемы (выполняют логические операции, в том числе и микроконтроллер).
Создавая программу, мы прописываем все действия микроконтроллера основываясь на своей логике с применением логических операций, иногда даже и не подозревая об этом, которые применяем к логическим выражениям.
4. Битовые операции
В прошлой статье была рассмотрена тема логических операций и выражений. В этой статье мы рассмотрим логические битовые операции. Битовые операции очень близки к логическим операциям, можно даже сказать, что это одно и тоже. Разница только в том,что логические операции применяются к высказываниям, а битовые операции, с такими же правилами и результатами применяются к битам.
Прямой, обратный и дополнительный коды двоичного числа — способы представления двоичных чисел с фиксированной запятой в компьютерной (микроконтроллерной) арифметике, предназначенные для записи отрицательных и неотрицательных чисел
Сегодня мы рассмотрим как, без особых затрат и быстро, запрограммировать любой микроконтроллер AVR поддерживающий режим последовательного программирования (интерфейс ISP) через USB-порт компьютера. В качестве программатора мы будем использовать очень простой и популярный программатор USBASP, а в качестве программы — AVRdude_Prog V3.3, которая предназначена для программирования МК AVR.
Популярнейшая программа AVRDUDE_PROG 3.3 предназначена для программирования микроконтроллеров AVR ATmega и ATtiny
С этой статьи мы начнем конкретно заниматься одним вопросом — программирование микроконтроллеров. Процесс будет проходить следующим образом — сначала статья по устройству микроконтроллера (к примеру, первая статья будет по портам ввода-вывода), а затем статья по программированию. Сегодняшний наш разговор вводный, и будет посвящен вопросам материального и программного обеспечения процесса изучения основ программирования микроконтроллеров.
В этой статье мы поговорим о проблемах русификации программы Atmel Studio, как перевести программу на русский (или другой) язык, и как сделать более удобной работу программы с программатором USBASP. После установки программы Atmel Studio весь интерфейс будет на английском языке. Кому-то, кто знаком с английским, или уже привык работать с программами с английским интерфейсом, это вполне устроит. Меня лично, такой подход создателей программы к великому и могучему не устраивает, мне более комфортно работать с русскими меню.
В этой статье будут рассмотрены основные сведение о языке С, структура программы на языке С, дано понятие о функциях, операторах и комментариях данного языка программирования.
В этой статье будут рассмотрены типы переменных в языке С (Си) для микроконтроллеров AVR, объявление переменных, способы задания констант, будет дан обзор арифметических операций языка С, присваивания, инкремента и декремента.
В этой статье будет рассмотрено управление портами микроконтроллеров AVR на языке программирования С (Си): установка выводов порта на вход или выход, считывание значений на входах портов, программа для управления миганием светодиода.
В данной статье будут рассмотрены циклы в языке программирования Си для микроконтроллеров AVR. Будут рассмотрены циклы типа «для» (for) и циклы типа «пока» (while), будет показано как осуществить принудительное прерывание цикла и организовать бесконечный цикл.
В данной статье мы рассмотрим основы использования массивов в языке С для микроконтроллеров AVR и рассмотрим их практическое применение в программе для изменения цифр на семисегментном индикаторе.
(27 голосов, оценка: 4,74 из 5)
- Язык программирования для autocad
- Язык программирования для big data
Программатор AVR микроконтроллеров. LPT программатор. |