USBasp | AVRDUDE | Программирование микроконтроллеров AVR
Чтобы перенести нашу программу с компьютера в микроконтроллер нам понадобится программатор USBasp и программа AVRDUDE. Сегодня существует широкий выбор программаторов, предназначенных для программирования микроконтроллеров AVR.
Среди них можно найти много самодельных, который даже трудно назвать программаторами, поскольку они с помощью всего лишь нескольких резисторов напрямую подключаются к COM порту. Однако современные компьютеры и ноутбуки уже практически не оборудываются COM портами, поэтому одним из основных критериев при выборе программатора является возможность подключения его к USB порту. Наиболее дешевый, простой и очень распространенный – это программатор USBasp. Его можно приобрести практически в любом радиомагазине по доступной цене. Стоимость его в китайских интернет магазина находится в пределах от 1,5 $ до 3 $.
Программатор USBasp
Связь компьютера с микроконтроллером осуществляется посредством программатора USBasp через USB порт, а данные передаются по интерфейсу SPI – Serial Peripheral Interface (последовательный периферийный интерфейс). Для связи МК с программатором задействуются специальные выводы: MOSI, MISO, SCK, RESET, VCC, GND. Хотя SPI предполагает использование всего трех выводов MOSI, MISO и SCK, но мы будем задействовать все шесть выводов.
Работа с программой AVR Studio

При обмене данными по интерфейсу SPI микроконтроллер может одновременно либо принимать (вывод MISO) либо передавать данные (вывод MOSI). Установка режима приема или передачи данных осуществляется путем подачи определенного импульса на вывод SCK.
Разъем программатора, как правило, имеет 10 пинов и подключается к микроконтроллеру с помощью 10 проводного шлейфа. Однако удобней пользоваться шлейфами, которые имеют переходник на 6 пин, так как в таком случае все пины заняты. У десяти пинового разъема одни пин остается не занятым, а четыре пина подключены к общему проводу (GND).


Для того, чтобы компьютер определил программатор необходимо установить драйвер USBasp.
Фото подсоединенного программатора к микроконтроллеру ATmega8 приведено ниже.

Единственный недостаток или, правильнее сказать, мелкое неудобство данного программатора заключается в том, что он не поддерживается (без различных ухищрений) Atmel Studio, поэтому приходится пользоваться сторонней программой. Наиболее зарекомендовавшей себя является AVRDUDE.
Как работает АВР?
Настройка AVRDUDE
Теперь нам осталось выполнить финальный шаг. Запускаем программу AVRDUDE. По умолчанию открывается вкладка Program. В нижней части окна в меню Настройки выбираем тип программатора usbasp. Далее в категории Микроконтроллер выбираем наш микроконтроллер ATmega8.
Ниже, в категории Flash кликаем по значку троеточия и в открывшемся меню указываем путь к скомпилированному файлу с расширением hex. Путь к файлу и сам файл будут теми же, что мы ранее задавали в Proteus.

Чтобы убедится в том, что программатор определен операционной системой (драйвер программатора корректно установлен) и правильно подключен к микроконтроллеру, кликаем по кнопке Чтение. Если ошибок нет, то появится окно с записью “Калибровочные ячейки генератора считаны!” И в верхнем окошке отобразится шестнадцатеричное число. У каждого МК это число индивидуальное.

Прежде, чем записать новую программу рекомендуется очистить память микроконтроллера. Это можно сделать, кликнув по кнопке Стереть все. В результате появится окно с сообщением о том, что кристалл чист.

Теперь кликаем по кнопке Программировать в категории Flash. При успешной записи программы в МК появляется окно с записью, приведенной ниже.

Результат записанной, или, как еще говорят, прошитой программы – это засветившийся светодиод, подключенный к выводу PC0 нашего микроконтроллера.

Первая наша программа очень проста, а частота работы микроконтроллера оставлена по умолчанию и для ATmega8 равна 1 МГц. В случае изменения частоты или подключения внешнего кварцевого резонатора, необходимо внести некоторые изменения во вкладке Fuses, путем установки галочек в соответственные чекбоксы CKSEL0… CKSEL3.

Подробно настройки данной вкладки мы рассмотрим в статье Fuses (биты настройки или биты защиты) микроконтроллера.
Источник: diodov.net
Программируем МК AVR. Бесплатная программа AVRDUDE_PROG

Программа AVRDUDE_PROG — GUI avrdude, является обновлённой версией USBASP_AVRDUDE_PROG.
Предназначена для программирования МК AVR. Совместима с Windows2000, Windows ХР, Windows Vista, Windows7(Seven). Добавлены распространённые программаторы и дополнительный функционал. Интуитивно понятный интерфейс. Возможность выбора инверсных (PonyProg) и прямых (UniProf) Fuses битов, самостоятельное добавление контроллеров и программаторов поддерживаемых AVRDUDE.
Возможности программы
Настройки оболочки «AVRDUDE_PROG» реализованы в «ini» файлах.
Теперь возможно самостоятельно добавлять и редактировать список микроконтроллеров, программаторов, портов, Fuses бит, добавить различные языки и пр.
Список контроллеров и состояний Fuses бит, редактируется в файле «atmel.ini», список программаторов и портов в файле «programm.ini», список поддерживаемых языков в файле «language.ini».
В файле «atmel.ini», все значения введены по умолчанию в соответствии с datasheet на МК, можете изменить по Вашему усмотрению. Никаких инверсий не требуется, значение по умолчанию вводиться в соответствии с datasheet на МК. В том случае, если МК нет в списке, или при выборе МК во вкладке Fuses везде «error», то Вам необходимо самостоятельно ввести значения в файл «atmel.ini» в соответствии с datasheet и приведённым ниже примером. Файл «atmel.ini» находится в корневой папке программы.
В файле «programm.ini», введены значения программаторов для командной строки avrdude. В том случае, если используемый Вами программатор отсутствует в списке, либо необходимо изменить какие-либо параметры установленные по умолчанию, то необходимо ввести/редактировать его значения самостоятельно в соответствии с приведённым примером. Файл «programm.ini» находится в корневой папке программы.
В файле «language.ini», возможно отредактировать на «свой вкус» текстовую информацию оболочки, либо добавить язык программы AVRDUDE_PROG. Тут расписывать ничего не буду, думаю в файле «language.ini» всё понятно.

Поддерживаемые МК
По умолчанию поддерживаемые МК (список МК постоянно расширяется):
AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1280, ATmega1281, ATmega1284p, ATmega128RFA1, ATmega16, ATmega162, ATmega164p, ATmega168, ATmega169, ATmega2560, ATmega2561, ATmega32, ATmega324p, ATmega325, ATmega3250, ATmega328p, ATmega329, ATmega3290, ATmega329p, ATmega3290p, ATmega32U4, ATmega48, ATmega8, ATmega8515, ATmega8535, ATmega88, ATtiny13, ATtiny2313, ATtiny261.
Поддерживаемые программаторы
По умолчанию поддерживаемые программаторы (список программаторов можно самостоятельно расширить):
USBasp, USBtiny, AVR ISP mkII,SI-Prog, AVR910, AVR910, STK200, STK500, STK500 2.X, JTAG ICE mkII, JTAG ICE mkII ISP, JTAG ICE mkII PDI.
Основные отличия
Основные отличия от аналогичных программ :
1. Возможность самостоятельного добавления программаторов, настройки скорости программирования и т.п;
2. Возможность самостоятельного добавления МК;
3. Редактирования и настройка отображения Fuses битов;
4. Выбор инверсных или прямых Fuses битов;
5. Окна вывода значений Fuses битов в HEX формате;
6. Сохранение настроек программирования при закрытии программы, т.е. при последующем открытии все настройки восстановятся;
7. «дублирование кнопки» — данная функция выводит на экран кнопку «Программировать», которая является полным функциональным аналогом кнопки «Программировать всё» и всегда будет находиться по верх всех окон. Кнопку можно переместить в удобную для вас зону монитора, свернув AVRDUDE_PROG. Удобна при многочисленном перепрограммировании МК.

Установка
Разархивируйте файл usbprog.rar в любую удобную папку. Поместите ярлык программы «AVRDUDE_PROG» на рабочий стол. Установка завершена. Можно работать.
Тип разработки: собственная инициатива.
Техническое задание: самостоятельно + интернет.
Реализовано: Borlad Delphi 7.
Состояние: реализовано.

Статус программы: бесплатная
ОС: Windows NT/2000/XP/VISTA/WINDOWS 7
Интерфейс: русский, english
Разработчик: yourdevice
Версия: 3.3 (24.02.2014)
Размер файла: 690КБ
Сайт разработчика:yourdevice.net
Источник: www.mastervintik.ru
Программирование микроконтроллеров AVR для начинающих
Микроконтроллер – микросхема, предназначенная для управления электронными устройствами, или по другому – простенький компьютер (микро-ЭВМ), способный выполнять несложные задачи.

Рано или поздно, любой радиолюбитель (я так думаю), приходит к мысли о применении в своих разработках микроконтроллеров. Микроконтроллер позволяет существенно «облегчить» радиолюбительскую конструкцию, сделать ее проще и намного функциональнее.
Что нужно для того, чтобы начать пользоваться всеми возможностями микроконтроллеров? Я считаю, что не так уж и много. Главное в этом деле — желание. Будет желание, будет и результат.
В этом разделе (и в разделе «Устройство AVR») сайта я постараюсь помочь начинающим «микроконтроллерщикам» сделать первый, он же самый трудный шаг навстречу микроконтроллерам — попробуем разобраться в устройстве и программировании микроконтроллеров AVR семейства ATtiny и ATmega.
В сети существует множество сайтов затрагивающих так или иначе «микроконтроллерную» тематику, много также и различной литературы для начинающих. Поэтому я не собираюсь «переплюнуть» всех и вся и создать очередной шедевр мыслительных мук в виде пособия по микроконтроллерам для начинающих. Я постараюсь систематизировать, собрать в кучу все нужное на мой взгляд, для первого шага в мир микроконтроллеров, и изложить более-менее доступным языком.
В своих статьях я буду опираться на материалы из публикаций популярных авторов микроконтроллерной тематики: Рюмика С.М., Белова А.В., Ревича Ю.В., Евстифеева А.В., Гребнева В.В., Мортона Д., Трамперта В., Фрунзе А.В. и Фрунзе А.А. (и многих других), а также материалы радиолюбительских сайтов. Ну и, может быть, немного своих «умных мыслей».
Программирование микроконтроллеров AVR фирмы Atmel

1. Микроконтроллеры — первый шаг
Эта статья, как и все последующие, — маленький шажок в мир микроконтроллеров. И таких «шажков» у нас будет много, пока не дойдем до того момента, когда сможем сказать: «Микроконтроллер — последний шаг». Но и это, скорее всего, из области фантастики — нельзя объять необъятное, — мир микроконтроллеров постоянно развивается и совершенствуется. Наша задача — сделать первый шаг, логическим итогом которого должна стать первая, самостоятельно разработанная и собранная конструкция на микроконтроллере.

2. Системы счисления: десятичная, двоичная и шестнадцатиричная
Как вы наверняка знаете, существует много разных систем счисления, одними пользуются и сейчас (наша, родная, десятичная система; римская система, известная нам как «римские цифры»), другие остались в глубоком прошлом (системы счисления инков и майя, древнеегипитская система, вавилонская).
Тут, я думаю, вопросов у нас нет, что такое системы счисления нам понятно — отображение чисел символами. А вот какая связь систем счисления с микроконтроллерами.

3. Логические операции, логические выражения, логические элементы
Все современные цифровые технологии основываются на логических операциях, без них никуда не деться. Все цифровые микросхемы в своей работе используют логические схемы (выполняют логические операции, в том числе и микроконтроллер).
Создавая программу, мы прописываем все действия микроконтроллера основываясь на своей логике с применением логических операций, иногда даже и не подозревая об этом, которые применяем к логическим выражениям.

4. Битовые операции
В прошлой статье была рассмотрена тема логических операций и выражений. В этой статье мы рассмотрим логические битовые операции. Битовые операции очень близки к логическим операциям, можно даже сказать, что это одно и тоже. Разница только в том,что логические операции применяются к высказываниям, а битовые операции, с такими же правилами и результатами применяются к битам.

5. Прямой, обратный и дополнительный коды двоичного числа
Прямой, обратный и дополнительный коды двоичного числа — способы представления двоичных чисел с фиксированной запятой в компьютерной (микроконтроллерной) арифметике, предназначенные для записи отрицательных и неотрицательных чисел

6. USBASP программатор для микроконтроллеров AVR — идеальное решение для начинающих, и не только
Сегодня мы рассмотрим как, без особых затрат и быстро, запрограммировать любой микроконтроллер AVR поддерживающий режим последовательного программирования (интерфейс ISP) через USB-порт компьютера. В качестве программатора мы будем использовать очень простой и популярный программатор USBASP, а в качестве программы — AVRdude_Prog V3.3, которая предназначена для программирования МК AVR.

7. Программа AVRDUDE_PROG: программирование микроконтроллеров AVR ATmega и ATtiny
Популярнейшая программа AVRDUDE_PROG 3.3 предназначена для программирования микроконтроллеров AVR ATmega и ATtiny

8. Основы программирования микроконтроллеров AVR
С этой статьи мы начнем конкретно заниматься одним вопросом — программирование микроконтроллеров. Процесс будет проходить следующим образом — сначала статья по устройству микроконтроллера (к примеру, первая статья будет по портам ввода-вывода), а затем статья по программированию. Сегодняшний наш разговор вводный, и будет посвящен вопросам материального и программного обеспечения процесса изучения основ программирования микроконтроллеров.

9. Русификация программы Atmel Studio
В этой статье мы поговорим о проблемах русификации программы Atmel Studio, как перевести программу на русский (или другой) язык, и как сделать более удобной работу программы с программатором USBASP. После установки программы Atmel Studio весь интерфейс будет на английском языке. Кому-то, кто знаком с английским, или уже привык работать с программами с английским интерфейсом, это вполне устроит. Меня лично, такой подход создателей программы к великому и могучему не устраивает, мне более комфортно работать с русскими меню.

10. Введение в язык программирования С (Си) для микроконтроллеров
В этой статье будут рассмотрены основные сведение о языке С, структура программы на языке С, дано понятие о функциях, операторах и комментариях данного языка программирования.

11. Переменные и константы в языке С (Си) для микроконтроллеров AVR
В этой статье будут рассмотрены типы переменных в языке С (Си) для микроконтроллеров AVR, объявление переменных, способы задания констант, будет дан обзор арифметических операций языка С, присваивания, инкремента и декремента.
В этой статье будет рассмотрено управление портами микроконтроллеров AVR на языке программирования С (Си): установка выводов порта на вход или выход, считывание значений на входах портов, программа для управления миганием светодиода.

13. Циклы в языке С (Си) для микроконтроллеров AVR
В данной статье будут рассмотрены циклы в языке программирования Си для микроконтроллеров AVR. Будут рассмотрены циклы типа «для» (for) и циклы типа «пока» (while), будет показано как осуществить принудительное прерывание цикла и организовать бесконечный цикл.

14. Массивы в программировании микроконтроллеров AVR
В данной статье мы рассмотрим основы использования массивов в языке С для микроконтроллеров AVR и рассмотрим их практическое применение в программе для изменения цифр на семисегментном индикаторе.

15. Конечные автоматы в микроконтроллерах AVR
В данной статье мы рассмотрим применительно к микроконтроллерам AVR такой интересный стиль программирования микроконтроллеров как автоматное программирование. Точнее это даже не стиль программирования а целая концепция, благодаря которой программист микроконтроллеров может существенно облегчить свою жизнь. Благодаря ей многие задачи, поставленные перед программистом, решаются гораздо легче и проще, избавляя программиста от многих сложностей. Автоматное программирование часто также называют Switch-технологией
(29 голосов, оценка: 4,76 из 5)
Источник: microkontroller.ru
Програмирование в AVR Studio 5 с самого начала. Часть 2
![]()
Большинство начинают с мигания светодиодов, и мы не исключение. Если микроконтроллер, даже самый быстрый, не “общается” с внешним миром, ценность его сводится к нулю. Нам нужно чтобы микроконтроллер принял информацию, обработал по заданному алгоритму и выдал результат в понятной для нас форме.
Алгоритм, (от имени персидского математика аль-Хорезми) — точный набор инструкций, описывающих порядок действий исполнителя для достижения результата решения задачи за определенное время.
Чтобы правильно писать программы нужно понять, как работает микроконтроллер, чем мы и будем заниматься, а пока составим первую программу на ассемблере.
Камрад, рассмотри датагорские рекомендации
Полезные и проверенные железяки, можно брать
Опробовано в лаборатории редакции или читателями.
Вообще, написать программу можно в любом текстовом редакторе, так же как вы бы написали письмо другу, например. После этого, текст надо скомпилировать (иногда говорят — ассемблировать) т.е. перевести в форму, понятную процессору. Раньше, расширение текстового файла .txt переименовывали в .asm и обрабатывали специальной программой, называемой компилятором. Суть работы компилятора в переводе письменных символов понятных для человека в машинный код (в код нулей и единиц) и создание нового файла с расширением .hex
Что делать с этим .hex файлом? А он нужен для программатора, чтобы записать код программы в ПЗУ (постоянное запоминающее устройство) микроконтроллера. Мы вместо программатора будем использовать программу Proteus, которая модулирует реальную работающую схему.
В AVR Studio 5 редактор, компилятор, отладчик и программатор все в одном флаконе!
Директива – это предписание редактору, с которым мы будем работать. В большинстве своем название директивы и ее функция в разных редакторах совпадают. Например, если сравнить редактор MPLAB IDE для микроконтроллеров PIC, то разницы практически нет!
А вот команды отличаются. Список команд формируется производителем и в какой-то степени зависит от технологии производства. Даже у одного производителя в разных семействах может быть разный список команд по мере изменения их структуры.
Команда – это единичная функция, с помощью которой мы можем управлять микроконтроллером.
Программа — это последовательность команд, соответствующая определенному алгоритму (составленная нами).
Любая программа начинается с “шапки”, где прописывается основные функции программы, ее автор, название контроллера, который будет использоваться, тактовая частота и другие данные. “Шапка” — это “правило хорошего тона” в программировании.
Обычно в “шапке” прописывается файл инициализации .includeххххdef.inc. директивы .device, .list, .nolist, и другие.
В AVR Studio 5 эти директивы прописаны по умолчанию. В предыдущей версии AVR Studio 4 эти директивы нужно было прописывать, поэтому я их оставил в виде комментариев.
Комментарии пишутся произвольно, как вам нравиться и главное, чтобы они для вас оставались понятными. Нередко, из-за неполных комментариев, через некоторый промежуток времени сам автор не может разобраться в собственной программе. Перед комментариями ставиться знак (;) .
Я ввел “шапку” предложенную Джоном Мортоном…
![]()
Редактор AVR Studio 5 – понимает написанные, директивы и команды выделяя их в синий цвет, числовые данные остаются черными, непонятные выражения выделяет в красный, комментарии в зеленый.
Прежде чем начать, что-то писать рассмотрим директивы ассемблера микроконтроллеров AVR.
Перед каждой директивой ставиться точка:
Директива Описание .BYTE Резервировать байты в ОЗУ .CSEG Сегмент программы .DB Определить байт – константу во Flash-памяти или EEPROM .DEF Назначить регистру символическое имя .DEVICE Определяет устройство, для которого компилируется программа .DSEG Сегмент данных .DW Определяет слово во Flash-памяти или EEPROM .ENDM Конец макроса .ENDMACRO Конец макроса .EQU Установить постоянное выражение .ESEG Сегмент EEPROM .EXIT Выход из файла .INCLUDE Вложить другой файл .LIST Включить генерацию листинга .LISTMAC Включить разворачивание макросов в листинге .MACRO Начало макроса .NOLIST Выключить генерацию листинга .ORG Установить положение в сегменте .SET Установить для переменной эквивалентное выражение
Полное описание команд и директив ассемблера в русском переводе Руслана Шимкевича можно посмотреть тут:
atmel-avr-assembler.7z 397.28 Kb ⇣ 258
Наш файловый сервис предназначен для полноправных участников сообщества «Datagor Electronics».
Для получения файла зарегистрируйтесь и войдите на сайт с паролем.
Мы еще не раз вернемся к директивам ассемблера, а сейчас попробуем написать небольшой текст программы, где будем включать светодиоды.
Для удобства выберем микроконтроллер ATtiny2313A. Если кто-то пойдет дальше и будет экспериментировать в “железе”, этот контроллер один из самых доступных, очень часто применяется в различных конструкциях, которые можно найти в бескрайних просторах сети.
↑ Начинаем работать с программой Proteus
Чтобы поначалу вам не сидеть, составляя схему, я выложил готовый проект.
attiny2313_led.rar 27.18 Kb ⇣ 198
Наш файловый сервис предназначен для полноправных участников сообщества «Datagor Electronics».
Для получения файла зарегистрируйтесь и войдите на сайт с паролем.
Нужно лишь распаковать и стартовать его (при условии, что Proteus уже установлен).
Должна появиться вот такая картинка:
![]()
Запустим AVR Studio 5, и в редакторе напишем небольшую программу с подробными комментариями:
.def temp=r16 ; директива .def назначает регистру r16 имя temp ;==================================================== ; Начало программы .cseg ; директива .cseg определяет начало сегмента, где будет расположен ; основной код программы. В AVR Studio 5 это директива не ; обязательна .org 0 ; начало первой строки программы rjmp Start ; относительный переход к метке Start (в PIC соответствует ; команде goto) ; ==================================================== Start: ser temp; устанавливает все биты регистра temp в 1 out DDRB,temp; переводит все биты out DDRD,temp; порта B и D на вывод clr temp; обнуляет регистр temp (устанавливает все биты регистра temp в 0) out PortB,temp; отключает подтягивающие резисторы out PortD,temp; портов B и D Cicle: ldi temp,0b11001100; включает светодиоды out PortB, temp; порта B rjmp Cicle; Возвращаемся к метке Cicle, зацикливаемся
Скомпилируем ее, кликнув по F7
В окошке Output появятся информация о проведенной компиляции, в конце должна быть надпись Build succeeded, которая подтверждает удачную сборку .hex файла.
![]()
Этот файл по умолчанию размещен в Моих документах, в проекте AVR Studio 5.
Переходим в Proteus, кликаем на рисунок контроллера и вводим путь, где находиться .hex файл:
![]()
![]()
![]()
![]()
Запускаем эмуляцию программы.
После нажатия кнопки Старт видим результат!
![]()
![]()
Чтобы остановить эмуляцию – кликаем Стоп.
Если прошить микроконтроллер программатором и собрать схему, то результат будет таким-же.
↑ Попробуем разобраться, с программой:
Строка:
.def temp=r16 ; директива .def назначает регистру r16 имя temp
Для удобства мы назначили регистру r16 имя temp, это значит что в любом месте программы, при написании слова temp программа будет обращаться к регистру r16.
Что это за регистр – r16?
Он относится к регистрам общего назначения, которые обозначаются как r0….r31, т.е их всего 32 по 8 бит. Вторая половина регистров общего назначения r16…r31 выполняют функцию временного хранения информации (как аккумуляторы, могут принимать и могут отдавать информацию, для сравнения — у PIC контроллеров всего один аккумулятор W). Последние 6 регистров общего назначения условно объединены в три 16-битных:
Обратите внимание, что старший байт пишется раньше, младший позже.
r27:r26 называется регистром X,
r29:r28 называется регистром Y,
r31:r30 называется регистром Z
Программа будет так же работать если слово temp будет присвоено любому другому регистру общего назначения от r16 до r31 например .def temp=r20. После компиляции (клавиша F7 в AVR Studio 5), разницы в работе программы никакой нет.
(Можете попробовать, теперь вы знаете, как это сделать!)
.cseg ; директива .cseg определяет начало сегмента, где будет расположен основной код программы
В AVR Studio 5 это директива прописана по умолчанию.
В микроконтроллерах AVR выделяют разные области памяти, для хранения программного кода, данных в постоянной памяти или EEPROM, для обозначения этой области существуют директории:
.cseg — Программный сегмент
.dseg – Сегмент данных
.eseg – сегмент EEPROM
.org 0 ; начало первой строки программы
Программа начинается со строки указанной директивой .org, и при завершении будет возвращаться к ней.
rjmp Start ; относительный переход к метке Start (в PIC соответствует команде goto)
Это команда относительного перехода к метке Start.
Программа выполняется последовательно от верхней стоки к нижней. Если требуется перейти в другую область программы то используется команда rjmp
ser temp ; устанавливает все биты регистра temp в 1 clr temp ; обнуляет регистр temp (устанавливает все биты регистра temp в 0)
Команда ser выполняется с регистрами r16…r31, а команда clr может выполнятся ко всем регистрам, в том числе и регистрам ввода-вывода (регистрам специального назначения). Назначение этих регистров мы рассмотрим позже.
ldi temp,0b11001100
Команда ldi записывет в регистр temp двоичное число 11001100 (не будет ошибкой если вместо 0b11001100 написать 204 или CCh, в одном случае в десятичной форме в другом в шестнадцатеричной)
out DDRB,temp
Команда out выводит значение регистра temp в регистр порта DDRB.
↑ Что такое порт и как он работает?
Если упростить до минимума, то порт можно представить как ножку-вывод микроконтроллера, на который в режиме вывода можно произвольно подать напряжение или отключить, а в режиме ввода определить, есть ли напряжение, поданное извне или нет.
Есть три режима работы порта: это вывод, ввод и отключенное состояние.
Управляют портами регистры PinX, PortX, DDRX.
Х – означает порт, которым управляют эти регистры.
Регистр DDRX управляет режимами ввода-вывода, как реле – включили (записали 1) – подключился на линию вывода, отключили (записали 0) – переключился на линию ввода (по умолчанию).
![]()
Чтобы вывести данные в порт Х, нужно регистр DDRX переключить в режим вывода (прописать 1) а данные переслать в регистр PortX.
Считать значение порта Х можно, если регистр DDRX переключить в режим ввода (прописать 0), из регистра PinX. Чтобы подключить подтягивающие резисторы в режиме ввода, надо отправить данные в PortX.
Подтягивающие резисторы избавляют нас от необходимости подключать внешние резисторы на положительный провод и с помощью одной команды сами подают логическую единицу на вход.
Еще раз просмотрим программу, все просто!
Попробуйте самостоятельно поменять картину свечения светодиодов.
↑ Читайте в следующей части!
В следующий раз разберемся, как рассчитывать время задержки, из чего состоит контроллер, попробуем заставить поморгать наши светодиоды.
Источник: datagor.ru
Что такое автоматический ввод резерва и как работает АВР?
Нельзя гарантировать бесперебойную работу энергосистемы, поскольку всегда существует вероятность воздействия на нее техногенных или природных внешних факторов. Именно поэтому токоприемники, относящиеся к первой и второй категории надежности, положено подключать к двум или более независимым источникам энергоснабжения. Для переключения нагрузок между основными и резервными питаниями используются системы АВР. Подробная информация о них приведена ниже.
Что такое АВР и его назначение?
В подавляющем большинстве случаев такие системы относятся к электрощитовым вводно-коммутационным распредустройствам. Их основная цель – оперативное подключение нагрузки на резервный ввод, в случае возникновения проблем с энергоснабжением потребителя от основного источника питания. Чтобы обеспечить автоматическое переключение на работу в аварийном режиме, система должна отслеживать напряжение питающих вводов и ток нагрузки.

Расшифровка аббревиатуры АВР
Данное сокращение это первые буквы полного названия системы – Автоматический Ввод Резерва, как нельзя лучше объясняющее ее назначение. Иногда можно услышать расшифровку «Автоматическое Включение Резерва», такое определение не совсем корректное, поскольку под ним подразумевается запуск генератора в качестве резервного источника, что является частным случаем.
Классификация
Вне зависимости от исполнения, блоки, шкафы или АВР принято классифицировать по следующим характеристикам:
- Количество резервных секций. На практике чаще всего встречаются АВР на два питающих ввода, но чтобы обеспечить высокую надежность электроснабжения, может быть задействовано и больше независимых линий.

- Тип сети. Большинство устройств предназначено для коммутации трехфазного питания, но встречаются и однофазные блоки АВР. Они применяются в бытовых сетях электроснабжения для запуска двигателя генератора.

- Класс напряжения. Устройства могут быть предназначены для работы в цепях до 1000 или использоваться при коммутации высоковольтных линий.
- Мощностью коммутируемой нагрузки.
- Время срабатывания.
Требования к АВР
В число основных требований к системам аварийного восстановления электроснабжения входит:
- Обеспечение подачи питания потребителю электроэнергии от резервного ввода, если произошло непредвиденное прекращение работы основной линии.
- Максимально быстрое восстановление электропитания.
- Обязательная однократность действия. То есть, недопустимо несколько включений-отключений нагрузки из-за КЗ или по иным причинам.
- Включение выключателя основного питания должно производиться автоматикой АВР до подачи резервного электропитания.
- Система АВР должна контролировать цепь управления резервным оборудованием на предмет исправности.
Устройство АВР
Существует два основных типа исполнения, различающиеся приоритетом ввода:
- Одностороннее. В таких АВР один ввод играет роль рабочего, то есть используется, пока в линии не возникнут проблемы. Второй – является резервным, и подключается, когда в этом возникает необходимость.
- Двухстороннее. В этом случае нет разделения на рабочую и резервную секцию, поскольку оба ввода имеют одинаковый приоритет.
В первом случае большинство систем имеют функцию, позволяющую переключиться на рабочий режим питания, как только в главном вводе произойдет восстановление напряжения. Двухсторонние АВР в подобной функции не нуждаются, поскольку не имеет значения от какой линии запитывается нагрузка.
Примеры схем двухсторонней и односторонней реализации будут приведены ниже, в отдельном разделе.
Принцип работы автоматического ввода резерва
Вне зависимости от варианта исполнения АВР в основу работы системы заложено отслеживание параметров сети. Для этой цели могут использоваться как реле контроля напряжения, так и микропроцессорные блоки управления, но принцип работы при этом остается неизменным. Рассмотрим его на примере самой простой схеме АВР для бесперебойного электроснабжения однофазного потребителя.

Обозначения:
- N – Ноль.
- A – Рабочая линия.
- B – Резервное питание.
- L – Лампа, играющая роль индикатора напряжения.
- К1 – Катушка реле.
- К1.1 – Контактная группа.
В штатном режиме работы напряжение подается на индикаторную лампу и катушку реле К1. В результате нормально-замкнутый и нормально-разомкнутый контакты меняют свое положение и на нагрузку подается питание с линии А (основной). Как только напряжение в на входе А пропадает, лампочка гаснет, катушка реле перестает насыщаться, и положение контактов возвращается в исходное (так, как показано на рисунке). Эти действия приводят к включению нагрузки в линию В.
Как только на основном вводе восстанавливается напряжение, реле К1 производит перекоммутацию на источник А. Исходя из принципа работы, данную схему можно отнести к одностороннему исполнению с наличием возвратной функции.
Представленная на рисунке 4 схема сильно упрощена, для лучшего понимания происходящих в ней процессов, не рекомендуем брать ее за основу для контроллера АВР.
Варианты схем для реализации АВР с описанием
Приведем несколько рабочих примеров, которые можно успешно применить при создании щита автоматического запуска. Начнем с простых схем для бесперебойной системы электроснабжения жилого дома.
Простые
Ниже представлен вариант схемы АВР, переключающей подачу электричества в дом с основной линии на генератор. В отличие от приведенного выше примера, здесь предусмотрена защита от короткого замыкания, а также электрическая и механическая блокировка, исключающая одновременную работу от двух вводов.

Обозначения:
- AB1 и AB2 – двухполюсные автоматические выключатели на основном и резервном вводе.
- К1 и К2 – катушки контакторов.
- К3 – контактор в роли реле напряжения.
- K1.1, K2.1 и K3.1 – нормально-замкнутые контакты контакторов.
- К1.2, К2.2, К3.2 и К2.3 – нормально-разомкнутые контакты.
После переводов автоматов АВ1 и АВ2 алгоритм работы блока АВР будет следующим:
- Штатный режим (питание от основной линии). Катушка К3 насыщается и реле напряжения срабатывает, замыкая контакт К3.2 и размыкая К3.1. В результате напряжение поступает на катушку пускателя К2, что приводит к замыканию К2.2 и К2.3 и размыканию К2.1. Последний играет роль электрической блокировки, не допускающей подачи напряжения на катушку К1.
- Аварийный режим. Как только напряжение в главной линии исчезает или «падает» ниже допустимого предела, катушка К3 перестает насыщаться и контакты реле принимают исходную позицию (так, как показано на схеме). В результате на катушку К1 начинает поступать напряжение, что приводит к изменению положения контактов К1.1 и К1.2. Первый играет роль электрической защиты, не допуская подачи напряжения на катушку К2, второй снимает блокировку подачи питания на нагрузку.
- Чтобы работала механическая блокировка (на схеме отображена в виде перевернутого треугольника) необходимо использовать реверсивный пускатель, где ее наличие предполагается конструкцией электромеханического прибора.
Теперь рассмотрим два варианта простых АВР для трехфазного напряжения. В одном из них энергоснабжение будет организовано по односторонней схеме, во втором применено двухстороннее исполнение.

Обозначения:
- AB1 и AB2 – трехполюсные автоматы защиты;
- МП1 и МП2 – магнитные пускатели;
- РН – реле напряжения;
- мп1.1 и мп2.1 – групповые нормально-разомкнутые контакты;
- мп1.2 и мп2.2 – нормально-замкнутые контакты;
- рн1 и рн2 – контакты РН.
Рассмотрим схему «А», у которой два равноправных ввода. Чтобы не допустить одновременное подключение линий применяется принцип взаимной блокировки, реализованный на контакторах МП1 и МП2. От какой линии будет питаться нагрузка, определяется очередностью включения автоматов АВ1 и АВ2. Если первым включается АВ1, то срабатывает пускатель МП1, при этом разрывается контакт мп1.2, блокируя поступление напряжение на катушку МП2, а также замыкается контактная группа мп1.1, обеспечивающая подключение источника 1 к нагрузке.
При отключении источника 1 контакты пускателя ПМ1 возвращаются в исходное положение, что приводит в действие контактор ПМ2, блокирующий катушку первого пускателя и включающий подачу питания от источника 2. При этом нагрузка будет оставаться подключенной к этому вводу, даже если работоспособность источника 1 пришла в норму. Переключение источников можно делать в ручном режиме манипулируя выключателями АВ1 и АВ2.
В тех случаях, когда требуется одностороння реализация, применяется схема «В». Ее отличие заключается в том, что в цепь управления добавлено реле напряжения (РН), возвращающее подключение на основной источник 1, при восстановлении его работы. В этом случае размыкается контакт рн2, отключающий пускатель МП2 и замыкается рн1, позволяя включиться МП1.
Промышленные системы
Принцип работы промышленных систем энергообеспечения остается неизменным. Приведем в качестве примера схему типового шкафа АВР.

Обозначения:
- AB1, АВ2 – трехполюсные устройства защиты;
- S1, S2 – выключатели для ручного режима;
- КМ1, КМ2 – контакторы;
- РКФ – реле контроля фаз;
- L1, L2 – сигнальные лампы для индикации режима;
- км1.1, км2.1 км1.2, км2.2 и ркф1 – нормально-разомкнутые контакты.
- км1.3, км2.3 и ркф2 – нормально-замкнутые контакты.
Приведенная схема АВР практически идентична, той, что была представлена на рисунке 6 (А). Единственное отличие заключается в том, что в последнем случае используется специальное реле контролирующее состояние каждой фазы. Если «пропадет» одна из них или произойдет перекос напряжений, то реле переключит нагрузку на другую линию, и восстановит исходный режим при стабилизации основного источника.
АВР в высоковольтных цепях
В электрических сетях с классом напряжения более 1кВ реализация АВР более сложная, но принцип работы системы практически не меняется. Ниже в качестве примера приведен упрощенный вариант схемы понижающей ТП 110,0/10,0 киловольт.

Из приведенной схемы видно, в ней нет резервных трансформаторов. Это говорит о том, что каждая из шин (Ш1 и Ш2) подключена к своему питающему трансформатору (T1, T2), каждый из которых может на определенное время стать резервным, приняв на себя дополнительную нагрузку. В штатном режиме секционный выключатель СВ10 разомкнут. АВР контролирует работу ТП через ТН1 Ш и ТН2 Ш.
Когда перестает поступать питание на Ш1, АВР выполняет отключение выключателя В10Т1 и производит включение секционного выключателя СВ10. В результате такого действия обе секции работают от одного трансформатора. При восстановлении источника система ввод резерва перекоммутирует систему в исходное состояние.
Микропроцессорные бесконтакторные системы
Завершая тему нельзя не упомянуть о АВР с микропроцессорными блоками управления. В таких устройствах, как правило, используются полупроводниковые коммутаторы, которые более надежны, чем аппараты, выполняющие переключение с помощью контакторов.

Основные преимущества бесконтакторных АВР несложно перечислить:
- Отсутствие механических контактов и всех связанных с ними проблем (залипание, пригорание и т.д.).
- Отпадает необходимость в механической блокировке.
- Более широкий диапазон управления параметрами срабатывания.
К числу недостатков следует отнести сложный ремонт электронных АВР. Самостоятельно реализовать схему устройства также не просто, для этого потребуются знания электротехники, электроники и программирования.
Источник: www.asutpp.ru