Микроконтроллеры авр. Что такое АВР, как работает и для чего нужен? Регистры специальных функций микроконтроллеров PIC

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

Основой любого микроконтроллера является вычислительное ядро. Во всех моделях AVR оно практически одинаковое и это большой плюс. Именно единство архитектуры обеспечивает легкую переносимость кода.

Итак, что же у нас в основе микроконтроллера, взгляни на диаграмму:

Ядро состоит, в первую очередь, из памяти программ (Flash Programm Memory) и Арифметико-логического устройства (ALU), блока управления (на диаграмме не показан) и программного счетчик (Program Counter). Также есть тактовый генератор, задающий импульсы относительно которых работают блоки микроконтроллера. Тактовый генератор можно сравнить с маятником и собачкой в будильнике: маятник туда сюда, собачка тикает по одному зубчику — шестеренки крутятся. Встала собачка — встал весь будильник.

При старте микроконтроллера значение программного счетчика равно 0000 — это адрес первой команды в нашей flash ROM. Микроконтроллер хватает оттуда два байта (код команды и ее аргументы) и отдает на выполнение в декодер команд (Instruction Decoder).

А дальнейшая судьба зависит от команды. Если это просто команда работы с какими-либо действиями, то они будут выполнены, а на следующем такте значение программного счетчика будет увеличено и из следующей пары ячеек памяти будут взяты еще два байта команды и также отправлены на выполнение.

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

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

Вся математика и обработка делается посредством ALU. Это, своего рода, калькулятор. Он может складывать, вычитать, сравнивать, сдвигать разными способами, иногда делить и умножать (это считается круто, встречается редко).

В качестве промежуточных операндов используются 32 ячейки — Оперативные регистры общего назначения РОН. Доступ к этим ячейкам самый быстрый, а число операций с их содержимым наиболее богатое. В ассемблере регистры эти называются просто R0,R1,R2 … R31. Причем делятся они на три группы:

Младшие R0..R15
Обычные регистры общего назначения, но какие то ущербные. С ними не работают многие команды, например, такие как загрузка непосредственного числа. Т.е. нельзя, например, взять и присвоить регистру число. Зато можно скопировать число из любого другого регистра.

Старшие R16..R31
Полноценные регистры, работающие со всеми командами без исключения.

Индексные R26…R31
Шесть последних регистров из старшей группы особенные. В принципе, их можно юзать и как обычные регистры общего назначения. Но, кроме этого, они могут образовывать регистровые пары X(R26:R27), Y(R28,R29), Z(R30:R31) которые используются как указатели при работе с памятью.

ОЗУ
Кроме 32 регистров в микроконтроллере есть оперативная память. Правда не везде — в младших семействах AVR Tiny12 и Tiny11 оперативной памяти нет, так что приходиться вертеться в 32 ячейках.

Оперативная память это несколько сотен ячеек памяти. От 64 байт до 4килобайт, в зависимости от модели. В этих ячейках могут храниться любые данные, а доступ к ним осуществляется через команды Load и Store.

То есть нельзя взять, например, и прибавить к ячейке в памяти, скажем, единицу. Нам сначала сделать операцию Load из ОЗУ в РОН, потом в регистре прибавить нашу единицу и операцией Store сохранить ее обратно в память. Только так.

EEPROM
Долговременная память. Память которая не пропадает после выключения питания. Если Flash может содержать только код и константы, а писать в нее при выполнении ничего нельзя (Это память Read Only), то в ЕЕПРОМ можно сколько угодно писать и читать. Но в качестве оперативки ее особо не поюзаешь. Дело в том, что цикл записи в EEPROM длится очень долго — миллисекунды. Чтение тоже не ахти какое быстрое. Да и число циклов перезаписи всего 100 000, что не очень много в масштабах работы оперативной памяти. ЕЕПРОМ используется для сохранения всяких настроек, предустановок, собранных данных и прочего барахла, что может потребоваться после включения питания и в основном на чтение. Эта память есть не во всех моделях AVR, но в подавляющем их большинстве.

Периферия
Периферия это внутренний фарш микроконтроллера. То что делает его таким универсальным. ALU, RAM, FLASH и Блок управления это как в компе Мать, Проц, Память, Винт — то без чего комп даже не запустится толком. То периферия это уже как сетевуха, видяха, звуковая карта и прочие прибамбасы. Они могут быть разными, разной степени крутости и навороченности, а также комбинироваться в разном порядке.

Именно по наличию на кристалле той или иной периферии происходит выбор микроконтроллера под задачу.

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

  • Порты ввода вывода — то без чего невозможно взаимодействие контроллера с внешним миром. Именно порты обеспечивают то самое «ножкодрыгательство» управляющее другими элементами схемы. Захотели получить на выводе единичку, дали приказ соответствующему порту — получите, распишитесь. Захотели узнать какой там сигнал на входе? Спросили у соответствующего порта — получили. Почти все выводы микроконтроллера могут работать в режиме портов ввода-вывода.
  • UART/USART приемопередатчик — последовательный порт. Работает по тому же асинхронному протоколу что и древние диалапные модемы. Старый как мир, надежный и простой как кувалда. Подходит для связи с компьютером и другими контроллерами.
  • Таймеры/счетчики — задача таймеров отсчитывать тики. Сказал ему отсчитать 100 тактов процессора — он приступит и как досчитает подаст сигнал. Им же можно подсчитывать длительность входных сигналов, подсчитывать число входных импульсов. Да много чего умеет таймер, особенно в AVR. Подробное описание функций таймера занимает добрых три десятка страниц в даташите. При том, что таймеров самих существует несколько видов и фарш у них разный.
  • АЦП — аналоговый вход. Есть не у всех микроконтроллеров, но вещь полезная. Позволяет взять и замерить аналоговый сигнал. АЦП это своеобразный вольтметр.
  • I2C(TWI) интерфейс — последовательная шина IIC. Через нее осуществляется связь с другими устройствами. На IIC можно организовать своеобразную локальную сеть из микроконтроллеров в пределах одного устройства.
  • SPI — еще один последовательный протокол, похожа на IIC, но не позволяет организовывать сети. Работает только в режиме Мастер-Ведомый. Зато ОЧЕНЬ быстрая.
  • Аналоговый Компаратор — еще один аналоговый интерфейс. Но, в отличии от АЦП, он не замеряет, а сравнивает два аналоговых сигнала, выдавая результат А>B или A
  • JTAG/DebugWire — средство отладки, позволяет заглянуть в мозги контроллера с помощью специального адаптера, например такого, какой встроен в мою демоплату . Иной раз без него как без рук.
  • PWM — ШИМ генератор. Вообще это не отдельный блок, а дополнительная функция таймера, но тоже полезная. С помощью ШИМ генератора легко задать аналоговый сигнал. Например, менять яркость свечения светодиода или скорость вращения двигателя. Да мало ли куда его применить можно. Число каналов ШИМ разное от контроллера к контроллеру.

Еще бывают встроенные USB, Ethernet интерфейсы, часы реального времени, контроллеры ЖКИ дисплеев. Да чего там только нет, моделей микроконтроллеров столько, что задолбаешься только перечислять.

Взаимодействие ядра с периферией
Ядро одно на всех, периферия разная. Общение между ними происходит через память. Т.е. у периферии есть свои ячейки памяти — регистры периферии. У каждого периферийного устройства их не по одной штуки. В этих регистрах находятся биты конфигурации. В зависимости от того как эти биты выставлены в таком режиме и работает периферийное устройство. В эти же регистры нужно записывать данные которые мы хотим выдать, например, по последовательному порту, или считывать данные которые обработал АЦП. Для работы с периферией есть специальные команды IN и OUT для чтения из периферии в регистр РОН и записи из регистра РОН в периферию соответственно.

Поскольку ядро одинаковое, а периферия разная, то при переносе кода на другую модель микроконтроллера надо только подправить эти обращения так как название периферийных регистров от модели к модели может чуток отличаться. Например, если в контроллере один приемопередатчик UART то регистр прием данных зовется UDR, а если два, то у нас есть уже UDR0 и UDR1. Но, в целом, все прозрачно и логично. И, как правило, портирование кода с одного МК на другой, даже если он написан на ассемблере, не составляет большого труда. Особенно если он правильно написан.

Как узнать что есть в конкретном микроконтроллере?
Для этого на каждый МК есть даташит — техническая документация. И вот там, прям на первой странице, написано что почем и как. Вот тебе пример, даташит на Мегу16 с моим закадровым переводом:) Жирным шрифтом помечены опции которые я гляжу в первую очередь, как наиболее интересные для меня, остальное, как правило, присутствует по дефолту.

Features (фичи!)
High-performance, Low-power AVR® 8-bit Microcontroller
(понтовая экономичная архитектура AVR)

Advanced RISC Architecture
(просто офигенная вещь для рисковых чуваков!)

– 131 Powerful Instructions – Most Single-clock Cycle Execution
(131 крутая и быстрая команда!)

– 32 x 8 General Purpose Working Registers
(32 восьми разрядных регистра — те самые R0…R31)

– Fully Static Operation
(Полностью статические операции, т.е. тактовая частота может быть хоть 1 импульс в год)

– Up to 16 MIPS Throughput at 16 MHz
(скорость выполнения до 16миллионов операций в секунду!)

– On-chip 2-cycle Multiplier
(а числа умеем множить за два такта! Это правда круто, народ!)

High Endurance Non-volatile Memory segments
– 16K Bytes of In-System Self-programmable Flash program memory
(памяти хватит набыдлокодить на 16кб кода)

– 512 Bytes EEPROM 8-bit
(и нажрать на века 512 байт мусора в ЕЕПРОМ)

– 1K Byte Internal SRAM
(оперативки 1кб, кому там 2Гигабайт не хватает? Программировать не умеете! =) Тут и 64 байтов за глаза хватает. Помните Билла Гейтса и его «640кб хватит всем!» он знал о чем говорил:)

– Write/Erase Cycles: 10,000 Flash/100,000 EEPROM Microcontroller
(перешивать флеш можно 10тыщь раз, еепром 100тыщь раз. Так что можешь не бояться экспериментировать)

– Data retention: 20 years at 85°C/100 years at 25°C(1)
(Если законсервируешь свой будильник на AVR, то твоих правнуков он еще и через 100 лет порадует)

– Optional Boot Code Section with Independent Lock Bits
In-System Programming by On-chip Boot Program
True Read-While-Write Operation
(поддержка бутлоадеров. Удобная вещь, позволяет прошиваться без программаторов)

– Programming Lock for Software Security In-System
(если жадный и умный, то можешь закрыть от посторонних прошивку и фиг кто выкрадет твои секреты)

JTAG (IEEE std. 1149.1 Compliant) Interface
– Boundary-scan Capabilities According to the JTAG Standard Programmable
– Extensive On-chip Debug Support
– Programming of Flash, EEPROM, Fuses, and Lock Bits through the JTAG Interface Flash
(Отладочный интерфейс JTAG и его фичи)

Peripheral Features
(А вот, собственно и периферия пошла)

– Two 8-bit Timer/Counters with Separate Prescalers and Compare Modes
(два таймера 8ми разрядных, с кучей всяких режимов разных.

– One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode ATmega16
(один 16ти разрядный таймер счетчик, с кучей всяких примочек и фишек)

– Real Time Counter with Separate Oscillator
(таймер может тикать от отдельного генератора, удобно если хочешь сделать часы)

– Four PWM Channels ATmega16L
(Четыре ШИМ канала — на тех же таймерах)

– 8-channel, 10-bit ADC
(восьмиканальный 10ти разрядный АЦП. Фичи его ниже)

8 Single-ended Channels
(можно замерять по очереди сразу 8 разных напряжений)

7 Differential Channels in TQFP Package Only
(7 дифференциальных каналов. Правда только в корпусе TQFP т.к. ног у него больше)

2 Differential Channels with Programmable Gain at 1x, 10x, or 200x
(два дифференциальных канала с программируемым усилением)

– Byte-oriented Two-wire Serial Interface
(Поддержка IIC с аппаратным кодированием байтов)

– Programmable Serial USART
(Последовательный интерфейс. Удобен для связи с компом)

– Master/Slave SPI Serial Interface
(SPI интерфейс, пригодится)

– Programmable Watchdog Timer with Separate On-chip Oscillator
(Спец таймер защиты от зависаний)

– On-chip Analog Comparator
(Тот самый компаратор)

Special Microcontroller Features
(полезные свистоперделки)

– Power-on Reset and Programmable Brown-out Detection
(защита от косяков в работе при пониженном напряжении ака севшие батарейки)

– Internal Calibrated RC Oscillator
(А еще можно сэкономить 20рублей на покупке внешнего кварца. Он нафиг не нужен! :) И это круто!)

– External and Internal Interrupt Sources
(Есть внешние прерывания. Очень удобная вещь)

– Six Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-down, Standby
and Extended Standby
(Дофига режимов энергосбережения)

I/O and Packages
– 32 Programmable I/O Lines
– 40-pin PDIP, 44-lead TQFP, and 44-pad QFN/MLF

(число полезных ножек, тем самых вводов выводов)

Operating Voltages designs.
– 2.7 — 5.5V for ATmega16L
– 4.5 — 5.5V for ATmega16

(Питающие напряжения. Помните я говорил про низковольтные серии — вот они, во всей красе)

Speed Grades
– 0 — 8 MHz for ATmega16L
– 0 — 16 MHz for ATmega16

(А это максимальные частоты для разных серий. Низковольтные лажают. Впрочем, они подвержены разгону)

Power Consumption @ 1 MHz, 3V, and 25°C for ATmega16L
– Active: 1.1 mA
– Idle Mode: 0.35 mA

МК AVR приобрели огромную популярность в радиолюбительской среде, привлекая электронщиков такими показателями, как цена, энергоэффективность и быстродействие. Кроме того огромным плюсом являются удобные режимы программирования, свободная доступностью программных средств поддержки и широкий выбор МК. Эта серия компании Atmel применяется в автомобильной и бытовой электронике, сетевых картах и материнских платах компьютеров и ноутбуков, в смартфонах и планшетах.


В соответствии с единой базовой архитектурой эти МК делятся на три больших семейства:


Tiny AVR – дешевые и довольно простые по конструкции микроконтроллеры в 8-выводном корпусе
Classic – основная базовая линейка микроконтроллера;
Mega AVR – МК для сложных задач, требующих значительного объема памяти программ и данных.

AVR Classic – самая массовая линейка среди остальных Flash-МК корпорации Atmel. Последняя представила первый 8-разрядный Flash-МК в таком далеком 1993 году и с тех пор только совершенствует технологию. Компания постоянно работает над совершенствованием своей производственной линии в следующих основных направлениях: снижении удельного энергопотребления; увеличение диапазона питающих напряжений и быстродействия; возможность легкой встройки в изделия реально-временных отладчиков; реализации функции самопрограммирования; расширения количества и модернизация периферийных модулей; встройки различных специализированных устройств (передатчиков, USB-контроллеров, драйверов ЖКИ и др.

Успех AVR-микроконтроллеров кроется в простоте выполнения поставленной задачи с достижением требуемого результата, чему способствует доступность огромного числа инструментальных средств, как разработанных корпорацией Atmel, так и сторонними производителями ПО. Многие сторонние фирмы выпускают полный спектр необходимых компиляторов, программаторов, отладчиков, ассемблеров, адаптеров и разъемов. Отличительной чертой програмных средств от AVR является их низкая стоимость.

Они необходимы для обмена данными с различными подключенными к нему устройствами, например, реле, световыми и звуковыми индикаторами, датчиками и т.п. С помощью АВР портов, осуществляется не только обмен данными, но и синхронизация схемы в целом. Количество AVR портов зависит от модели МК. В среднем имеется (1-7) портов. Обычно, порты AVR восьмиразрядные, если разрядность не ограничена количеством выводов на корпусе МК.

Давайте попробуем написать простую программу для "Мигания светодиодом". Писать программу для простоты понимания будем на языке С для этого нам понадобится специальная утилита CodeVisionAVR.

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

Вы узнаете как можно управлять ЖК дисплеем с помощью команд имеющихся в компиляторе CodeVisionAVR, на примере МК семейства ATmega8 и алфавитно-цифровым ЖК экраном со встроенным чипом HD44780

Любой микроконтроллер способен “воспринимать” только цифровые сигналы – логический ноль или единицу. Например, у МК ATmega8 при напряжении питания 5 В логический ноль – это напряжение лежащие в интервале от 0 до 1,3 В, а единица – от 1,8 до 5 В. Довольно часто в радиолюбительской практике возникает необходимость измерять напряжения, которое может принимать любое значение в диапазоне от нуля до уровня напряжения питания. Для этих задач в составе всех микроконтроллеров АВР имеется аналого-цифровой преобразователь.


ПО используется для интегрированной среды разработки программного обеспечения под микроконтроллеры данного типа. Основными особенностями CodeVisionAVR является то, что он очень понятный для самостоятельного изучения, а также поддерживает все существующие МК этого семейства.

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

Особенностью данной схемы частотомера на микроконтроллере является то, что она работает вместе с компьютером и подсоединена к материнской плате через разъем IRDA. От этого же разъема конструкция получает питание

Многие считают, что из 8-разрядных устройств уже все выжато по максимуму, и единственный способ для дальнейшего повышения производительности микроконтроллера состоит в переходе к более мощным устройствам, например, к 32-разрядным микроконтроллерам. Тем не менее, переход на 32-битовые может быть несколько болезненным в технической перспективе. Например, может заметно возрасти энергопотребление и сложность использования схемы. Независимо от более высокой эффективности 32-разрядного устройства, 8-битный микроконтроллер потребляет гораздо меньше мощности.

Повышение производительности 8-разрядного микроконтроллера можно достигнуть с помощью нескольких простых решений. Во-первых, в полной мере используйте свой компилятор и полного набора функциональных возможностей, предоставляемых им. В настоящее время компиляторы являются очень продвинутыми, и многие из них с очень неплохой оптимизацией. В зависимости от задачи и доступной памяти компиляторы способны оптимизировать как по размеру кода, так и по скорости. Убедитесь, что вы хорошо знаете, для чего применяете МК, и используйте компилятор в соответствии с поставленными исходными данными.

Во-вторых, не брезгуйте ручной оптимизацией программного кода. Хотя нынешние компиляторы функциональны, но они не способны сделать всю работу за вас. Поэтому программист микроконтроллеров должен тщательно подходить к написанию кода. Здесь важно структурировать код и отделить часть кода коммуникационного стека от остальных частей программы. Это позволит существенно быстро изменять необходимые части и наблюдать за временем их исполнения.

Помимо структурирования используйте наиболее эффективные типы данных. Так, разные архитектурные решения имеют разные размеры баз данных. То есть в 8-разрядном микроконтроллере не стоит по возможности использовать 32-разрядными int-переменные. Лучше заменить их на переменные типа byte, если конечно это возможно. Кроме того не применяйте переменные с плавающей точкой при программировании микроконтроллеров.

МИКРОКОНТРОЛЛЕРЫ AVR

Микроконтроллеры AVR являются разработкой и продуктом фирмы Atmel. Отличие данных микроконтроллеров от аналогичных, в довольно удачной архитектуре ядра процессора и широкому набору периферийных модулей, что облегчает процесс программирования устройства. Эти микросхемы производятся по технологии 0,35 мкм, и работают с тактовой частотой от - 16 МГц, обеспечивая производительность до 16 MIPS.

В основе микроконтроллеров семейства AVR лежит 8-ми битное центральное процессорное устройство, построенное по принципу RISK-архитектуры. Базой данного блока является арифметико-логическое устройство - АЛУ. По тактовому сигналу из памяти программ в соответствии с содержимым счетчика команд, выбирается нужная команда и выполняется вычисление. При выборе команды из памяти программ происходит выполнение предыдущей выбранной команды, это позволяет получить быстродействие на уровне 1 MIPS на 1 МГц. АЛУ подключено к 32-м регистрам общего назначения. РОН находятся в начале адресного пространства оперативной памяти, но не являются ее частью физически . Поэтому к ним идёт обращение и как к регистрам, и как к памяти.

Фирма ATMEL выпускает такие семейства 8-битных микроконтроллеров: tiny и mega. Микроконтроллеры tiny имеют Флэш -ПЗУ по 1 и 2 кбайт в корпусе на 8 -20 выводов, а микроконтроллеры mega соответственно: Флэш-ПЗУ 8 -128 кбайт в корпусе на 28 -64 вывода.

Технические характеристики микроконтроллеров AVR:
- частота до 16 МГц с временем выполнения команды 62,5 нс;
- встроенный програмируемый RC-генератор, частота 1, 2, 4, 8 МГц;
-
Флэш -ПЗУ программ,программируемое в системе, до 128 кбайт;
- двухпроводный интерфейс TWI, совместимый с интерфейсом I2C;
- многоканальный 8-, 9-, 10-, 16-битный ШИМ-модулятор;
- 10-битный АЦП со временем преобразования 70 мкс и дифференциальными входами;
- программируемый коэффициент усиления — 1; 10 или 200;
- встроенный источник опорного напряжения;
- аналоговый компаратор;
- настраиваемая схема задержки запуска после подачи питания;
- схема слежения за напряжением питания;
- JTAG-интерфейс для подключения эмулятора;

- электрически перепрограммируемое ПЗУ данных до 4 кбайт;
- внутреннее ОЗУ со временем доступа 1 такт, до 4 кбайт;
- мощный набор команд (более 120 инструкций);
- 6 аппаратных команд умножения (для семейства mega);
- развитая система адресации, оптимизированная для работы с С-компиляторами;
- 32 регистра общего назначения (аккумулятора);
- синхронный (USART) или асинхронный (UART) последовательные порты;
- синхронный последовательный порт (SPI);
- потребление тока 0.1 мА в активном режиме.

Типы микроконтроллеров AVR:

ТИП память программ,КБайт EEPROM данных,байт ОЗУ данных,байт Такт.частота,МГц
ATTiny11 1 - - 6 6
ATTiny11L 1 - - 2 6
ATTiny12 1 64 - 8 6
ATTiny12L 1 64 - 4 6
ATTiny12V 1 64 - 1,2 6
ATTiny13 1 64 64 20 6
ATTiny15L 1 64 - 1,2 6
ATTiny28L 2 - - 4 19
ATTiny28V 2 - - 1,2 19
AT90S2313 4 256 512 10 15
ATMega16 16 512 1024 16 32
ATMega48 4 256 512 20 40

Более подробно читайте об AVR микроконтроллерах в специальном

Так-же микроконтроллеры AVR семейства Mega имеют возможность самостоятельного изменения содержимого своей памяти программ. Это позволяет создавать на их основе гибкие системы, алгоритм работы которых будет изменяться самим микроконтроллером в зависимости от внутренних условий и внешних событий. Микроконтроллеры AVR имеют встроенный 8-канальный 10-битный аналого-цифровой преобразователь. Режим энергосбережения позволяет отключить неиспользуемые модули и в результате снизить энергопотребление.

Микроконтроллеры AVR могут работать при напряжениях питания 2 - 6 Вольт. Ток потребления в активном режиме составляет около 1 мА для работы на частоте 500 кГц, 6 мА для 5 МГц и до 10 мА на частоте 12 МГц. Есть возможность переводить их программным путем в такие режимы пониженного энергопотребления:

1.Экономичный режим. Продолжает работать только генератор таймера обеспечивая сохранность временной базы, остальные функции отключены.
2.Режим холостого хода. Прекращает работу только процессор и фиксируется содержимое памяти данных, внутренний генератор синхросигналов, таймеры, система прерываний и сторожевой таймер продолжают работать, при этом ток потребления в районе 2,5 мА на частоте 12 МГц.
3.Стоповый режим. Сохраняется содержимое регистрового файла, останавливается внутренний генератор синхросигналов, и останавливаются все функции, до поступления сигнала внешнего прерывания или аппаратного сброса, ток потребления составляет 80 мкА.

Для программирования микроконтроллеров AVR есть такие системы: AVR Studio - официальная система программирования от Atmel, позволяет писать и отлаживать программы, написанные на ассемблере, С и С++. IAR - коммерческая система программирования на C, С++ и ассемблере. WinAVR - компилятор с открытыми исходниками, поддерживающий множество самых разных языков, и AtmanAVR - система программирования для AVR с интерфейсом аналогичным, как у Visual C++ 6. Ещё одну простую и популярную программу можно скачать в разделе софт.

Источники электроснабжения не обладают абсолютной надежностью и иногда отключаются, что приводит к негативному влиянию на объекты потребления. Для ответственных устройств это недопустимо, поэтому они обеспечиваются питанием от двух и более дополнительных источников. При их подключении применяются устройства АВР. Что это такое, поясняет расшифровка аббревиатуры - "автоматический ввод резерва". Он является способом создания бесперебойного электроснабжения потребителя с двумя или более питающими вводами. Это обеспечивается автоматическим подключением резервного ввода при потере основного.

Оба источника питания могут быть подключены одновременно. Недостатками способа являются большие токи КЗ, высокие потери и сложность защиты сетей. Ввод резерва обычно производится с помощью коммутирующего устройства, отключающего основной источник питания. Мощность резерва должна соответствовать нагрузкам. Если ее недостаточно, производится подключение только самых важных потребителей.

Требования к АВР

  • Быстрый ввод резерва после срабатывания
  • Включение в любых случаях при исчезновении питания, за исключением коротких замыканий.
  • Отсутствие реагирования на посадку напряжения при запуске мощных нагрузок у потребителя.
  • Однократность срабатывания.

Классификация

Устройства разделяются по принципу действия.

  • Односторонние. Схема содержит две секции: сети питания и резервную. Последняя подключается при потере основного напряжения.
  • Двухсторонние. Любая из линий может быть как рабочей, так и резервной.
  • Восстанавливающиеся АВР. При возобновлении основного питания автоматически вводится в работу прежняя схема, а резервная отключается.
  • Без автоматического восстановления. Настройка режима работы с основным источником питания производится вручную.

Принцип действия АВР

В низковольтных сетях удобно применять контролирующие напряжение в схемах защиты специальные реле (схемах АВР и др.). АВР здесь предпочтительней, поскольку не вся техника способна выдерживать частые переключения электроснабжения. Как выглядит АВР? Что это такое и как работает? Данное устройство хорошо видно по любой простой схеме.

  • Реле ЕЛ-11 контролирует трехфазное напряжение, следит за перекосом фаз, их обрывом и чередованием.
  • Электромагнитные реле с мощными контактами применяются для подключения нагрузок. В нормальном режиме катушка главного ввода питается от него и своими контактами КМ 1 подключает подачу питания на нагрузку.
  • Когда исчезает напряжение в основной цепи, реле КМ 1 отключается, и питание поступает на катушку реле КМ 2, которое подключает резервный ввод.

Данная схема АВР может применяться в частных домах, производственных и административных зданиях, где коммутируемая нагрузка достигает десятков киловатт. Недостатком схемы является сложность выбора реле для больших токов. Для коммутации маломощных потребителей она еще подходит, но при больших нагрузках лучше взять пускатель АВР или симистор.

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

Работа АВР

Как функционирует АВР? Что это такое по степени надежности в снабжении электроэнергией потребителей? Устройства делятся на 3 категории. Электроснабжение жилья относится к самой низкой. При частых сбоях в сети питания резерв в доме лучше установить, поскольку от этого зависит долговечность бытовых приборов, а также комфортные условия проживания. В квартиры устанавливают бесперебойники на аккумуляторах, которые преимущественно применяются для электронной техники. Генераторы наиболее распространены как резервные источники питания частных домов.

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

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

Блок автоматического запуска генератора (БАЗГ)

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

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

Особенности работы АВР частного дома

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

Для небольшого коттеджа или дачи применяют ДГУ мощностью не более 10 кВт для щита, работающего на 25 кВт. Такого генератора вполне достаточно, чтобы обеспечить дом необходимым минимумом электричества на короткое время. При возникновении аварийной ситуации реле контроля напряжения переключает шину потребителя на резервное питание и подает сигнал на запуск ДГУ. При возобновлении основного питания реле переключается на него, после чего генератор останавливается.

Расширение функций АВР

Для управления по выбранным алгоритмам применяются программируемые логические контроллеры (ПЛК). В них уже заложена программа АВР, которую только требуется настроить для реализации того или иного режима работы. Использование ПЛК, например, контроллера АС500, дает возможность упростить электрические схемы, хотя на первый взгляд устройство кажется сложным. Управление АВР можно расположить на дверце щита в виде набора переключателей, кнопок и индикации.

В типовом решении уже предусмотрено программное обеспечение. Оно устанавливается в ПЛК.

Заключение

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

Предположим вам поставили задачу — заставить мигать светодиод.
Рассуждаем, как решить эту задачу:

Вариант 1 — самое простое, взять тумблер/кнопку, рядом посадить раба, который тумблером будет включать/выключать светодиод. Обычно в России большинство задач именно так и решается. А что ведь мигает)))
Вариант 2 — собрать мультивибратор. Уже интереснее. Для того чтобы помигать, одним светодиодом вполне даже хорошее решение. К тому же просто, дешево, надежно.
Вариант 3 — собрать на микроконтроллере. Дороже чем собрать мультивибратор, но на мой взгляд проще. Написал программу, прошил, получил результат. Без настройки. Конечно это идеальный случай.

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

Итак, микроконтроллер позволяет нам гибко управлять, системами, процессами и т.п, имеет небольшие габариты, по функциональности это миникомпьютер. Микроконтроллеры выпускаются разными фирмами. Одна из разновидностей микроконтроллеры AVR фирмы Atmel. Почему именно они? Их довольно просто найти в магазине, легко найти примеры готового кода, встроенный функционал позволяет решать даже сложные задачи.

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

Программируют микроконтроллеры обычно на языке Си или на ассемблере. На чем писать по большому счету разницы нет. Из-за большого количества готовых примеров, я свой выбор сделал в пользу Си. Кроме того, существует несколько программ позволяющих писать на Си. Например бесплатная, фирменная AVR Studio, CodeVision, WinAVR и т.п. Несмотря на то, что я пишу в CodeVision, очень активно использую AVR Studio как отладчик.

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