Микроконтроллер Atmega — презентация онлайн
1. Микроконтроллер Atmega
В частности, atmega482. Микроконтроллер ATmega48PA-PU — популярный чип из семейства микроконтроллеров AVR ATmega от Atmel.
ATmega48PA-PUвыполнен в виде
DIP-микросхемы со
стандартным
расстоянием между
ножками, что
означает
возможность его
лёгкой установки
на макетную плату.
3. Для прошивки микроконтроллера вам понадобится программатор, такой как AVRISP mkII. Также в качестве программатора можно
использовать плату Arduino, сустановленным на ней скетчем ArduinoISP, который
является стандартным и доступен вместе с средой Arduino
IDE.
AVRISP mkII
Скетч ISP
4. Для компиляции программ на C++ существует свободно распространяемый инструментарий: avr-gcc (Linux, MacOS) и WinAVR (Windows).
Avr gccWinAVR
5. Чтобы заставить чип работать вам понадобится стабильное питание, которое может быть получено через регулятор напряжения.
Линейный регулятор напряжения L7805Характеристики
Распиновка
Тактовая частота: 0 – 20 МГц
Объём Flash-памяти: 4 кб
Объём SRAM-памяти: 512 байт
Объём EEPROM-памяти: 256 байт
Напряжение питания: 1,8 – 5,5 В
Потребляемый ток в режиме работы: 0,2
мА (1 МГц, 1,8 В)
Потребляемый ток в режиме сна: 0,75
мкА (1 МГц, 1,8 В)
Количество таймеров/счётчиков: 2
восьмибитных, 1 шестнадцатибитный
Общее количество портов: 23
Количество ШИМ (PWM) выходов: 6
Количество каналов АЦП (аналоговые
Количество аппаратных USART (Serial):
1
Количество аппаратных SPI: 1
Master/Slave
Количество аппаратных I²C/SPI: 1
Разрешение АЦП: 10 бит
7. Дополнительные параметры МК AVR mega
Рабочая температура:-55…+125*С
Температура хранения:
Напряжение на выводе RESET
относительно GND: max 13В
Максимальное напряжение питания:
6.0В
Максимальный ток линии
ввода/вывода: 40мА
Максимальный ток по линии питания
VCC и GND: 200мА
-65…+150*С
8. ATmega48 IRL
9. Блок-схема ATMega48/88/168
10. Расположение выводов ATMega48/88/168
11. ATMega48/ATMega88/ATMega168 — низкопотребляющие 8 битные КМОП микроконтроллеры с AVR RISC архитектурой. Выполняя команды за
ATMega48/ATMega88/ATMega168 — низкопотребляющие 8
битные КМОП
микроконтроллеры с AVR
RISC архитектурой.
Выполняя команды за один
цикл, ATMega48/88/168
достигают
производительности 1 MIPS
при частоте задающего
генератора 1 МГц, что
позволяет разработчику
оптимизировать отношение
потребления к
производительности.
12. AVR ядро объединяет богатую систему команд и 32 рабочих регистра общего назначения. Все 32 регистра непосредственно связаны с
арифметико-логическимустройством (АЛУ), что
позволяет получить доступ к
двум независимым регистрам
при выполнении одной
команды. В результате эта
архитектура позволяет
обеспечить в десятки раз
большую производительность,
чем стандартная CISC
архитектура.
13. ATMega48/ATMega88/ATMega168 поддерживается различными программными средствами и интегрированными средствами разработки, такими
ATMega48/ATMega88/ATMega168
поддерживается
различными
программными
средствами и
интегрированными
средствами
разработки, такими как
компиляторы C,
макроассемблеры,
программные
отладчики/симуляторы
, внутрисхемные
эмуляторы и
ознакомительные
наборы.
14. Для программирования используется 6 выводов: RESET — Вход МК VCC — Плюс питания, 3-5В, зависит от МК GND — Общий провод, минус
Для программированияиспользуется 6 выводов:
RESET — Вход МК
VCC — Плюс питания, 3-5В,
зависит от МК
GND — Общий провод, минус
питания.
MOSI — Вход МК
(информационный сигнал в МК)
MISO — Выход МК
(информационный сигнал из МК)
SCK — Вход МК (тактовый сигнал
в МК)
15. Немного дополнительной информации
В маркировке микроконтроллера могут присутствовать непонятные буквыозначает, что МК работает от более низкого напряжения, чем МК без
буквы L, обычно это 2.7В. Цифры после дефиса или пробела 16PU или 8AU
говорят о внутренней частоте генератора, который есть в МК.
Первые цифры в названии микроконтроллера обозначают объем FLASH
ПЗУ в килобайтах, например ATtiny15 – 1 Кб, ATtiny26 – 2 Кб, AT90S4414 – 4
Кб, Atmega8535 – 8 Кб, ATmega162 – 16Кб, ATmega32 – 32 Кб, ATmega6450 –
64Кб, Atmega128 – 128Кб.
Микроконтроллеры Atmel — Вольтик.ру
Компания Atmel – лидер в области производства и разработки микроконтроллеров. Её микроконтроллеры используются во многих встраиваемых решениях, 8-битные контроллеры серии megaAVR с AVR архитектурой положили начало платформе Arduino, сделавшей программирование и использование микроконтроллеров простым как никогда ранее. Кроме AVR, компания производит микроконтроллеры на базе архитектур ARM и MCS-51.
Но микроконтроллеры AVR всё-таки являются самым популярным детищем Atmel благодаря хорошему сочетанию производительности, энергоэффективности и цены. Они хорошо оптимизированы для программирования на языке C либо собственном языке ассемблера. Первые 8-битные микроконтроллеры этой архитектуры были представлены в 1996 году, 32-битные AVR32 появились через 10 лет – в 2006 году.
AVR имеет гарвардскую архитектуру (данные программы и переменных хранятся в разных адресных пространствах) и систему команду RISC (сокращенный набор команд, увеличивающий быстродействие). Вычислительное ядро, память и остальная периферия находятся на одном кристалле, благодаря чему микроконтроллеры AVR представляют собой SoC (System on chip, система на кристалле).
Кроме флеш-памяти и ОЗУ в AVR микроконтроллерах имеется программируемая EEPROM память. Объём памяти программ – до 512 КБ, Рабочая частота 8-битных AVR контроллеров – до 32 МГц, 32-битных – до 66 МГц. Некоторые из них имеют нативную поддержку интерфейса USB. На сегодняшний день 8-битные AVR микроконтроллеры морально устарели, а семейство AVR32 не получило широкого распространения.
В последнее время компания Atmel перешла на разработку ARM микроконтроллеры вместо дорабатывания AVR. ARM микроконтроллеры Atmel являются представителями семейств Cortex-M0+, Cortex-M3, Cortex-M4, Cortex-M7. Такое многообразие МК на базе ARM удовлетворит почти любые запросы. Они имеют большие по сравнению с AVR объёмы памяти и тактовые частоты: до 2 МБ памяти программ и до 160 КБ SRAM. Эти микроконтроллеры имеют тактовую частоту до 120 МГц. Кроме того, они имеют нативную поддержку сенсорного ввода Atmel QTouch и интерфейса USB. У МК Atmel на базе ARM Cortex-M4 энергопотребление минимально возможное среди конкурентов, что позволяет создавать высокоавтономные устройства.
Микроконтроллеры обоих упомянутых выше семейств поддерживают последовательные интерфейсы передачи данных SPI, I2C и UART.
Также Atmel выпускает микроконтроллеры семейства MCS-51 на замену снятым с производства Intel 8051. Их производится более 50 видов. Объём флеш-памяти – до 64 КБ. Микроконтроллеры этого семейства (производства не только Atmel) более 30 лет работают в различных электронных устройствах – от светофоров и торговых автоматов до бортовых авиационных самописцев.ATMEGA328-PU — Microchip — 8 Bit Microcontroller, AVR ATmega Family ATmega328 Series Microcontrollers, 20 MHz
Atmel ATMEGA328-PU является КМОП 8-битным микроконтроллером малой мощности на базе архитектуры AVR RISC. Выполняя мощные инструкции за один такт, ATMEGA328-PU достигает производительности 1MIPS/МГц, позволяя разработчикам оптимизировать энергопотребление в зависимости от скорости обработки.
- 131 мощная инструкция — большинство циклов тактового генератора
- 32 × 8 универсальных рабочих регистров
- Полностью статический режим работы
- Производительность до 20MIPS при 20МГц
Встроенный 2-цикловый умножитель- Циклы записи/считывания: 100000 flash/100000 EEPROM
- Опциональная секция кода загрузки с независимыми элементами фиксации
- Внутрисистемное программирование при помощи встроенного загрузчика
- Истинный режим считывания во время записи
- Программируемый замок для безопасности ПО
- Поддержка библиотеки Atmel® QTouch®
- Сенсорные кнопки, слайдеры и колесики
- QTouch и QMatrix® сбор
- До 64 каналов измерения
- Два 8-битных таймера/счетчика с отдельным предварительным делителем и режимом сравнения
- Один 16-битный таймер/счетчик с отдельным предварительным делителем, режимом сравнения и режимом захвата
- Счетчик реального времени с отдельным кварцевым генератором
- Шесть ШИМ каналов
- Программируемый USART
- Главный/ведомый SPI
Примечания
New IC marking code is implemented, instead ATMEGA328 -PU used ATMEGA328 -U.
Предупреждения
Market demand for this product has caused an extension in leadtimes. Delivery dates may fluctuate. Product exempt from discounts.
Сделаем простой AVR микроконтроллер
Меня часто спрашивают: «Чем отличается микроконтроллер от ПЛИС?» Ну что тут можно ответить? Это как бы разные вещи… Микропроцессор последовательно выполняет команды, описанные в его программе. Работа ПЛИС в конечном счете определяется принципиальной электрической схемой, реализованной внутри чипа. Архитектура микроконтроллера, то есть тип процессора, количество портов ввода вывода, интерфейсы, определяется производителем. Микросхема микроконтроллера изготовлена на заводе и изменить ее нельзя. Можно только написать программу, которую он будет исполнять. ПЛИС — это свобода для творчества. Архитектура реализуемого устройства может быть почти любая, лишь бы поместилась вся логика в чип. В ПЛИС можно, например, попробовать реализовать даже и микроконтроллер! Попробуем?
Один из самых распространенных микроконтроллеров — это 8-ми разрядные RISС процессоры семейства AVR компании Atmel. В этой статье я расскажу как реализовать «почти» совместимый с AVR микроконтроллер внутри нашей ПЛИС на плате Марсоход.
Прежде, чем начинать делать свою реализацию микроконтроллера, конечно, следует изучить внутренности контроллера AVR. Нужно как минимум знать систему команд микропроцессора AVR. На нашем сайте можно скачать его описание:
Мы не будем ставить себе целью полностью повторить поведение чипа Atmel, мы хотим сделать наш микропроцессор лишь частично совместимым. Полностью повторить можно, но нужна ПЛИС гораздо большего объема. У нас на плате Марсоход стоит CPLD EPM240T100C5, значит у нас есть всего-навсего 240 триггеров и логических элементов.Кроме триггеров и логики в нашей ПЛИС имеется последовательная флеш память UFM объемом 512 слов по 16 бит. В этой флеш памяти мы будем хранить программу микроконтроллера. Удобно, что слова, хранимые во флеш, имеют разрядность 16. Все команды процессора AVR также шестнадцатиразрядные. Кое-что про UFM мы уже писали на нашем сайте. У нас был проект для ПЛИС платы Марсоход, который выполнял чтение из UFM памяти.
«Оперативной памяти» в нашей ПЛИС нет. Ну значит не будет памяти у нашего микроконтроллера, жаль но это нас не остановит.
У микроконтроллера AVR имеется 32 восьмиразрядных регистра общего назначения. Нижняя группа регистров r0-r15 может быть использована только в командах с операндами-регистрами. Верхняя группа регистров r16-r31 может использоваться в командах и с непосредственными операндами. Поскольку места внутри нашего чипа на плате
Мы реализуем только 7 регистров: r16-r22:
- Первые 4 регистра r16…r19 — это просто регистры.
- Регистр r20 — это тоже обычный регистр, только его биты мы подключим к 8-ми светодиодам платы Марсоход.
- Регистр r21 — это тоже обычный регистр, но его биты мы подключим к выводам управления шаговых двигателей на плате Марсоход.
- Регистр r22 — только для чтения. К нему подключены входы от 4-х кнопочек платы Марсоход.
Схема нашего микроконтроллера создана в среде Altera QuartusII и выглядит вот так (нажмите на картинку, чтобы увеличить):
Наш микроконтроллер работает по простому алгоритму:
- Считывает из флеш памяти UFM очередную команду.
- Декодирует команду и выбирает для нее нужные операнды из регистров или непосредственно из кода команды.
- Выполняет команду в арифметико-логическом устройстве.
- Запоминает результат исполнения команды в регистре приемнике, определяемом командой.
- Переходит к исполнению следующей команды.
У нас сейчас нет цели сделать высокопроизводительный микроконтроллер, мы не будем делать конвейерную обработку данных. Это объясняется тем, что команды из флеш памяти чипа мы можем считывать только в последовательном формате, то есть на чтение одной команды нужно как минимум 16 тактов. Быстрее здесь сделать нельзя (да нам и не нужно сейчас).
Ход выполнения программы может изменяться в зависимости от результата исполнения команд. Специальные команды переходов позволяют переходить к нужной операции в нужных условиях.
Перечислим команды микроконтроллера AVR, которые мы собираемся реализовать:
ADD 0000 11rd dddd rrrr
SUB 0001 10rd dddd rrrr
AND 0010 00rd dddd rrrr
EOR 0010 01rd dddd rrrr
OR 0010 10rd dddd rrrr
MOV 0010 11rd dddd rrrr
CP 0001 01rd dddd rrrr
LSR 1001 010d dddd 0110
SUBI 0101 KKKK dddd KKKK
ANDI 0111 KKKK dddd KKKK
ORI 0110 KKKK dddd KKKK
CPI 0011 KKKK dddd KKKK
LDI 1110 KKKK dddd KKKK
BREQ 1111 00kk kkkk k001
BRNE 1111 01kk kkkk k001
BRCS 1111 00kk kkkk k000
BRCC 1111 01kk kkkk k000
Слева написаны названия команд, а справа — их бинарное представление (кодирование). Так буква «r» обозначает регистр источник, буква «d» — регистр приемник, «K» — это непосредственно операнд.
Конечно — это только малая часть от «настоящей системы команд», но уже и эти команды позволять писать вполне работающие программы.
У нас будет упрощенное АЛУ (Арифметико-Логическое Устройство). Оно реализует только некоторые, наиболее употребительные команды, а так же всего 2 флага для условных переходов: «Z» и «C».
Флаг «Z» устанавливается, если результат АЛУ это ноль. Если результат из АЛУ не нулевой, то флаг «Z» сбрасывается. Флаг «C» устанавливается при возникновении переноса в арифметических операциях ADD и SUB/SUBI или сравнения CP/CPI. Флаги влияют на исполнение команд условных переходов: флаг «Z» влияет на BREQ, BRNE, а флаг «C» влияет на BRCS, BRCC.
Вообще всеь проект мы уже реализовали и его можно взять здесь:
.Исходный текст нашего ядра AVR написан на языке Verilog и его можно посмотреть здесь.
Теперь посмотрим, как мы сможем написать программу для нашего микроконтроллера? Для написания программы на языке ассемблер воспользуемся средой разработки компании Atmel AVRStudio4. Эту среду разработки можно скачать прямо с сайта компании Атмел (после регистрации), вот здесь. Или поищите в яндексе — наверняка найдете в свободном доступе.
Создаем проект в AVRStudio4 и пишем простую программу. Программа будет моргать светодиодом на плате Марсоход и опрашивать состояние нажатых кнопочек. Если нажать одну кнопочку, то моргающий светодиод «побежит» в одну сторону, а если нажать другую кнопочку, то светодиод «побежит» в другую сторону. Вот исходный текст на ассемблере для нашего примера:
.include «1200def.inc»
.device AT90S1200
.cseg
.org 0
start:
;initial one bit in register
ldi r16,$80
rd_port:
;read port (key status)
mov r17,r22
cpi r17,$0f
;go and blink one LED if no key pressed
breq do_xor
cpi r17,$0e
;go and right shift LEDs if key[0] pressed
breq do_rshift
cpi r17,$0d
;go and left shift LEDs if key[1] pressed
breq do_lshift
;jump to read keys
or r16,r16
brne rd_port
do_rshift:
cpi r16,1
breq set80
lsr r16
mov r20,r16
brne pause
set80:
ldi r16,$80
mov r20,r16
or r16,r16
brne pause
do_lshift:
cpi r16,$80
breq set1
lsl r16
mov r20,r16
brne pause
set1:
ldi r16,$01
mov r20,r16
or r16,r16
brne pause
do_xor:
eor r20,r16
pause:
ldi r18,$10
cycle2:
ldi r19,$FF
cycle1:
or r19,r19
or r19,r19
subi r19,1
brne cycle1
subi r18,1
brne cycle2
or r16,r16
brne rd_port
Видите? Чтение состояния кнопочек — это чтение из регистра r22. Изменение состояния светодиодов — это запись в регистр r20.
Настройте AVRStudio так, что бы выходной формат был «Generic». Это в свойствах проекта, «Assembler Options», настройка «Hex Output Format».
После компиляции программы получается вот такой текстовый файл с кодами программы:
000000:e800
000001:2f16
000002:301f
000003:f0c1
000004:301e
000005:f021
000006:301d
000007:f059
000008:2b00
000009:f7b9
00000a:3001
00000b:f019
00000c:9506
00000d:2f40
00000e:f471
00000f:e800
000010:2f40
000011:2b00
000012:f451
000013:3800
000014:f019
000015:0f00
000016:2f40
000017:f429
000018:e001
000019:2f40
00001a:2b00
00001b:f409
00001c:2740
00001d:e120
00001e:ef3f
00001f:2b33
000020:2b33
000021:5031
000022:f7e1
000023:5021
000024:f7c9
000025:2b00
000026:f6d1
Этот файл нам почти подходит для QuartusII. В нашем проекте для ПЛИС есть файл avr_prog.mif (Memory Initialization File), куда мы и вставляем полученный из AVRStudio код (только нужно добавить точку с запятой в конце каждой строки). Таким образом, после компиляции QuartusII эти коды попадут во флеш UFM нашей ПЛИС.
Теперь можно компилировать и пробовать наш проект в плате Марсоход. Вот видеоролик, демонстрирующий работоспособность нашего процессора:
Все работает так как и задумывалось!
Обратите внимание, что после компиляции, весь проект занимает только 205 логических элемента из 240 имеющихся в нашей ПЛИС. Это значит, что наш микроконтроллер можно и дальше усложнять или добавить какую-то новую логику. Так что проект может быть полезен для создания Ваших устройств.
8-битные микроконтроллеры AVR DA – бюджетный преемник ATmega от Microchip.
Компания ЭЛТЕХ предлагает микроконтроллеры из новой линейки AVR-DA от Microchip. Это семейство 8-битных микроконтроллеров, построенное на основе ядра с архитектурой AVR, работающего на тактовых частотах до 24 МГц, с напряжением питания от 1,8 до 5, 5 В.Микроконтроллеры семейства AVR DA призваны облегчить разработку устройств, реализующих функции контроля в реальном времени и взаимодействия с пользователем, с применением емкостных сенсорных интерфейсов. Сюда можно отнести системы управления на производстве, в бытовой технике, в автомобиле и устройствах Интернета вещей.
Контроллеры AVR DA имеют встроенный блок сенсорного ввода (PTC), для обработки нажатий с минимально возможной задержкой, 10-разрядеый ЦАП и 12-разрядный АЦП с детектором нуля (ZCD), для управления симисторами в цепях питания, а также модули независимой от ядра периферии (CIP) и программируемой логики (CCL).
Микроконтроллеры семейства могут иметь разный объем памяти встроенной Flash-памяти (128 КБ в AVR128DA, 64 КБ в AVR64DA и 32 КБ в AVR32DA), доступны в широком спектре корпусов (от классических SSOP, SOIC и SPDIP на 28 выводов, до современных TQFP и VQFN на 32, 48 или 64 вывода).
Благодаря этому, микроконтроллеры AVR DA могут использоваться не только при разработке новых, но и при модернизации уже существующих продуктов.
Основные особенности МК семейства AVR DA:
- Ядро AVR с тактовой частотой до 24 МГц ;
- 32/64/128 КБ Flash, 512 Б EEPROM/HEF и 4/8/16 КБ SRAM;
- 10/14/18/22-канальный 12-разрядный АЦП с детектором нуля (ZCD) ;
- 10-разрядный ЦАП ;
- 3 встроенных аналоговых компаратора;
- Встроенный контроллер сенсорного ввода (PTC) ;
- Модуль программируемой логики (CCL) ;
- 2xSPI, 1x/2x I2C, 3x/5x/6x UART ;
- 4/6/7 16-разрядных таймеров ;
- Рабочая температура -40 … +125 0С ;
- Малое энергопотребление, напряжение питания 1,8 – 5,5 В
- Корпуса SSOP, SOIC и SPDIP на 28 выводов, TQFP и VQFN на 32, 48 или 64 вывода
Приступить к ознакомлению с возможностями микроконтроллеров новой серии можно с отладочным набором AVR128DA48 Curiosity Nano Evaluation Kit (DM164151). Набор представляет собой миниатюрную плату, поддерживающую все необходимые функции и компоненты, необходимые для разработки устройств на основе микроконтроллеров нового семейства.
Урок 1. Знакомство с микроконтроллером
Здравствуйте. Сегодня я попробую объяснить о таком звере как микроконтроллер семейства AVR фирмы Atmel. Выглядит он как простая микросхема. Рисунок 1. Вот так выглядит простая Mega8. Такой корпус самый распространенный, но бывает еще корпус для поверхностного монтажа. Ну визуально вроде познакомились, теперь давайте попробуем посмотреть внутрь МК. Для испытаний давайте возьмем ATmega8. Я думаю это самый распространенный МК. Для того чтобы разобраться с МК внутри, нам понадобится для начала хотя бы узнать значение его ножек. Ну так давайте взглянем на рисунок. Рисунок 2. Что мы видим. Давайте все по порядку. Самые главные ножки под номерами 7 и 8 требуются для подачи питания на микросхему. Для всех наших, здесь разбираемых примерах, понадобится 5 вольт. Стабилизированное питание можно просто собрать на микросхеме LM7805 (стабилизатор 5 вольт) и пару конденсаторов микрофарад по 1000. Схема проста. Берем микросхему и смотрим на сторону с надписью LM7805. В таком положении ножки нумеруются слева на право 1, 2, 3. Ножка 2 это общий контакт. Между 1 ножкой и минусом вешаем конденсатор, также делаем и с 3 ножкой. Далее на 1 ножку подаем напряжение 5...12 вольт, а с 3 снимаем 5 вольт. Микросхема может работать и с напряжением аж до 30 вольт, но давайте не будем ее мучить. Так, ну питание подали и наш МК ожил. Поздравляю с первым шагом в освоении микроконтроллеров. Двигаем дальше. Расписывать подробно каждую ножку я не буду. Для этих целей есть документация на МК (если кому надо, то вот она). Далее давайте посмотрим на ножки с названиями PB0..PB7, PD0..PD7 и PC0..PC7. Эти ножки требуются МК для связи его с внешним миром и называются они 8-ми разрядные порты ввода/вывода. С помощью этих ножек МК может передавать или получать данные. Ах да! Совсем забыл про кварц. Нам же надо как-то тактовать процессор МК. Для этого берем кварц, ну к примеру на 4 МГц и вешаем на ножки 9 и 10. И от каждой ноги по конденсатору в 22 пф. Ну вроде как и все для начала. Мы рассмотрели корпус МК и научились подключать основную обвязку. Для более удобного освоения изложенного материала смотрим рисунок. Рисунок 3. На этот раз достаточно. В следующем уроке мы познакомимся с портами ввода/вывода. Вперед ->
Порты ввода-вывода микроконтроллеров AVR. Электрические характеристики
Для грамотного использования микроконтроллера необходимо иметь представление об электрических характеристиках его выводов. Эти характеристики определяют максимально допустимый втекающий/вытекающий ток и уровни входных/выходных напряжений. От них зависит что и как можно подключать к микроконтроллеру, и к чему это приведет.
Сегодняшний материал посвящен как раз этой теме. Данные, приведенные ниже, взяты из описания на микроконтроллер Atmega16 в разделах Electrical Characteristics и Typical Characteristics. Для более детального изучения этого вопроса, рекомендую обязательно их посмотреть.
Первое, что стоит отметить — выводы микроконтроллера AVR защищены схемой ограничения уровня входного напряжения. Это схема из двух диодов, подключенных к выводу микроконтроллера и цепям питания.
Схема ограничивает величину входных напряжений в диапазоне от -Vd до Vcc+Vd В, где Vd — прямое падение напряжения на диоде (обычно принимается 0,7 В), Vcc — напряжение питания микроконтроллера. Это защищает цепи микроконтроллера от перенапряжений и пробоя статическим электричеством. Однако, эти защитные диоды довольно хиленькие и выдерживают ток в единицы миллиампер.
Несмотря на свою полезную функцию, схема может доставить ряд неприятностей. Если подать входные сигналы на выводы выключенного микроконтроллера, то они через защитный диод запитают микроконтроллер и все остальную схему. Это явление называют паразитным питаниям. Как при этом поведет себя микроконтроллер, сложно предсказать, поэтому такой режим нежелателен.
По хорошему, нужно сначала подавать питание, а потом входные сигналы. При выключении же наоборот – снимать входные сигналы, затем отключать питание.
Также на схеме ты можешь видеть подтягивающий резистор Rpu (pull up) и паразитную емкость Cp. Номинал подтягивающего резистора ~20 — 50 кОм, паразитная емкость имеет величину несколько пФ.
Выводы микроконтроллеров AVR могут работать или в режиме входа, или в режиме выхода. Рассмотрим эти режимы.
Данный режим используется, когда микроконтроллер управляет или передает данные какому-нибудь внешнему устройству. Например, управляет светодиодом, сдвиговым регистром, внешним АЦП и т. д.
Подключая к микроконтроллеру внешние микросхемы, ты всегда должен проверять, согласуются ли уровни ее входных напряжений с выходными напряжениями микроконтроллера.
Для этого в описании на микроконтроллер ATmega16 в разделе электрических характеристик приведены значения выходных напряжений логического нуля Vol (output low voltage) и единицы Voh (output high voltage). Обрати внимание, данные приведены для определенного напряжения питания и токов, даны минимальные и максимальные значения. Уровни напряжений для других условий можно оценить по графикам «I/O Pin Current vs Output Voltage».
В режиме выхода вывод микроконтроллера может быть или источником или потребителем тока (то есть ток или вытекает из него или втекает). Это зависит от того, какой логический уровень установлен на выводе – ноль или единица (то есть это зависит от содержимого регистра PORTх). Если на выводе логический ноль, то любое положительное напряжение, приложенное к выводу, вызовет втекающий ток. Если на выводе логическая единица, то любое внешнее напряжение, меньше напряжения питания микроконтроллера, вызовет вытекающий ток.
Протекание тока сопровождается падением напряжения на внутренних цепях вывода микроконтроллера. Величину падения можно оценить по тем же графикам «I/O Pin Current vs Output Voltage».
Зависимость выходного напряжения от втекающего тока.
Вывод микроконтроллера в режиме выхода, установлен логический ноль, напряжение питания 5В.
Зависимость выходного напряжения от вытекающего тока.
Вывод микроконтроллера в режиме выхода, установлена логическая единица, напряжение питания 5В.
Как ты можешь видеть, графики приведены для диапазона токов от 0 до 70 мА (для температуры +25 С), но это вовсе не означает, что через каждый из выводов микроконтроллера AVR может протекать такой ток. Таблица Аbsolute Maximum Ratings в разделе электрических характеристик говорит нам о том, что максимальный ток через один вывод микроконтроллера AVR не должен превышать 40 мА, а ток через выводы VCC и GND не должен превышать 200 мА для PDIP и 400 мА для корпусов TQFP/MLF.
Это позволяет нам оценить, какую нагрузку микроконтроллер способен запитать своими силами. Например, мы можем подключить 8 ярких светодиодов при токе 20 мА и микроконтроллер не сгорит. При этом для расчета ограничительных резисторов нужно будет учитывать падение напряжения (~0.5 В) на выходе микроконтроллера.
8 * 20 мА = 160 мА
+ 10 мА собственное потребление
итого 170 мА < 200 мА
Rd = (5 — 0.5 — Vd)/20 , где Vd прямое падение напряжения на светодиоде
Кстати, величину собственного потребления микроконтроллера можно найти в разделе типичных электрических характеристик. Оно зависит от напряжения питания, тактовой частоты, количества работающей периферии и режима работы микроконтроллера. Это только один из графиков, приведенных в том разделе.
Зависимость тока потребления от тактовой частоты и напряжения питания микроконтроллера в активном режиме.
Режим входа используется для приема или ввода данных в микроконтроллер. Например, для получения данных с цифрового датчика или определения состояния тактовой кнопки.
В режиме входа вывод микроконтроллера может быть или в высокоимпедансном состоянии (Hi-Z) или подтянут к плюсу питания через встроенный резистор (20 — 50 кОм). Спалить вывод в режиме входа замыканием на землю или плюс питания нельзя, в отличии от режима выхода. Но можно спалить внутренние цепи вывода, подав чрезмерно большое напряжение. Конечно, если бросок напряжения на входе микроконтроллера будет кратковременным, защитные диоды предохранят его.
Подключая к микроконтроллеру внешние микросхемы, с которых принимаются данные, нужно всегда проверять, согласуются ли выходные уровни микросхемы с входными уровнями микроконтроллера.
В разделе типичных электрических характеристик приведены графики «Pin Thresholds And Hysteresis», по которым можно оценить уровни входных напряжений в зависимости от напряжения питания микроконтроллера AVR.
Зависимость порогового напряжения от напряжения питания микроконтроллера. Любое напряжение выше графика, воспринимается микроконтроллером как логическая единица.
Как можно видеть из рисунка, при напряжении 5 В входное напряжение > 2 В будет восприниматься микроконтроллером как логическая единица.
Аналогичный график представлен и для логического нуля.
Зависимость порогового напряжения от напряжения питания микроконтроллера. Любое напряжение ниже графика, воспринимается микроконтроллером как логический ноль.
При питании 5 В, входное напряжение меньше ~1.4, воспринимается микроконтроллером как логический ноль.
Думаю ты заметил, что между пороговыми уровнями логического нуля и единицы разница 2 — 1.4 = 0.6 В. Как микроконтроллер воспринимает напряжение попавшее в этот диапазон? Никак. Благодаря наличию гистерезиса, внутренняя логика вывода микроконтроллера не реагирует на эти значения. И только в случае превышения порогов, переключается в одно из состояний. Про гистерезис ты можешь немного почитать в статье «Компаратор на операционном усилителе».
Зависимость гистерезиса от напряжения питания микроконтроллера
Итак, что еще можно сказать про режим входа. Не следует оставлять выводы микроконтроллера в высокоимпедансном состоянии. Они будут «ловить» помехи и без конца переключаться из логической единицы в логический ноль и наоборот, увеличивая потребление микроконтроллера. Для снижения энергопотребления рекомендуется конфигурировать неиспользуемые выводы на вход с включенными подтягивающими резисторами.
Во время сброса микроконтроллера настройки всех портов сбрасываются. Если малое энергопотребление микроконтроллера во время сброса тоже важно, необходимо использовать внешние подтягивающие резисторы. Подключать выводы к напряжению питания или земле напрямую нежелательно, потому что если выводы случайно окажутся в режиме выхода, возникнет значительный ток.
Подводя итог выше сказанному, сформулирую несколько правил:
— подключаешь внешние микросхемы к микроконтроллеру, проверяй как согласуются их уровни напряжений,
— управляешь с помощью микроконтроллера нагрузкой, ограничивай ток через выводы микроконтроллера,
— управляешь несколькими нагрузками, проверяй не превышаешь ли максимально допустимый ток потребления микроконтроллера.
— не используешь выводы микроконтроллера, конфигурируй их в режим входа с подтягивающими резисторами.
Кстати, недавно я наступил на грабли, связанные с согласованием уровней. В одной из схем я применил 5-ти вольтовый сторожевой таймер и 3-х вольтовую ПЛИС. Выход таймера согласовал со входом ПЛИС, а про согласование входа сброса таймера с выходом ПЛИС забыл. Когда плата пришла с завода, я обнаружил, что уровня выходного напряжения ПЛИС не хватает для перезагрузки сторожевого таймера и тот постоянно ее сбрасывает. Из положения пришлось выходить, используя 5-ти вольтовую логическую микросхему на плате. У нее оставалось 2 незадействованных логических элемента и она «нормально воспринимала» логические уровни ПЛИС. Так что будьте аккуратнее, такой момент можно случайно проглядеть, особенно, если в схеме много микросхем.
ATMEGA328-PU — Microchip — 8-битный микроконтроллер, низкое энергопотребление, высокая производительность, микроконтроллеры семейства AVR ATmega серии ATmega328
ATMEGA328-PU — это маломощный 8-разрядный КМОП-микроконтроллер, основанный на улучшенной RISC-архитектуре AVR. Выполняя мощные инструкции за один такт, ATMEGA328-PU достигает пропускной способности, приближающейся к 1 MIPS на МГц, что позволяет разработчику системы оптимизировать энергопотребление в зависимости от скорости обработки.
- 131 мощная инструкция, выполнение большинства операций за один такт
- 32 x 8 рабочих регистров общего назначения
- Полностью статическая работа
- Пропускная способность до 20MIPS на частоте 20 МГц
- Встроенный двухтактный умножитель
- циклов записи/стирания: 10 000 флэш-памяти/100 000 EEPROM
- Дополнительная секция кода загрузки с независимыми битами блокировки
- В системном программировании с помощью встроенной программы загрузки
- Истинное чтение во время операции записи
- Блокировка программирования для защиты программного обеспечения
- Поддержка библиотеки Atmel® QTouch®
- Емкостные сенсорные кнопки, ползунки и колесики
- Приобретение QTouch и QMatrix®
- До 64 сенсорных каналов
- Два 8-битных таймера/счетчика с отдельным предварительным делителем и режимом сравнения
- Один 16-битный таймер/счетчик с отдельным предделителем, режимом сравнения и режимом захвата
- Счетчик реального времени с отдельным генератором
- Шесть каналов ШИМ
- Программируемый серийный номер USART
- Последовательный периферийный интерфейс (SPI)
Предупреждения
Рыночный спрос на этот продукт привел к увеличению сроков поставки.Сроки доставки могут меняться. Товар освобожден от скидок.
8-разрядный микроконтроллер ATMega AVR®, 8 КБ, 20 МГц, PDIP-28 at reichelt elektronik
ATmega88/V, megaAVR® Введение:
улучшенная RISC-архитектура AVR®. Выполняя инструкции за один такт, устройства достигают пропускной способности ЦП, приближающейся к одному миллиону инструкций в секунду (MIPS) на мегагерц, что позволяет разработчику системы оптимизировать энергопотребление по сравнению со скоростью обработки.
Характеристики
• Высокопроизводительный 8-разрядный микроконтроллер AVR® с низким энергопотреблением
• Усовершенствованная архитектура RISC
— 131 мощная инструкция — выполнение в большинстве случаев за один такт
— 32 × 8 рабочих регистров общего назначения
— Полностью статическая работа
– Пропускная способность до 20 MIPS при частоте 20 МГц
– Встроенный двухтактный умножитель
• Сегменты энергонезависимой памяти с высокой износостойкостью
– 8 Кбайт внутрисистемной самопрограммируемой флэш-памяти программ
– 512 байт EEPROM
– 1 Кбайт внутренняя SRAM
– Циклы записи/стирания: 10 000 флэш-памяти/100 000 EEPROM
– Хранение данных: 20 лет при 85°C/100 лет при 25°C(1)
– Дополнительная секция загрузочного кода с независимыми битами блокировки, внутрисистемное программирование с помощью встроенной программы загрузки, операция «Чтение во время записи»
– Блокировка программирования для обеспечения безопасности программного обеспечения
• Поддержка библиотеки QTouch®
– Емкостные сенсорные кнопки, ползунки и колесики
– Сбор данных QTouch и QMatrix
– Вверх до 64 каналов считывания
• Периферийные функции
– Два 8-битных таймера/счетчика с отдельным предварительным делителем и режимом сравнения
– Один 16-битный таймер/счетчик с отдельным предварительным делителем, режим сравнения + режим захвата
– Счетчик реального времени с отдельным генератором
— Шесть каналов ШИМ
— 8-канальный 10-битный АЦП в пакетах TQFP и QFN/MLF
— 6-канальный 10-битный АЦП в корпусе PDIP
— Программируемый последовательный интерфейс USART
— Ведущий/ведомый последовательный интерфейс SPI ориентированный 2-проводной последовательный интерфейс (совместимый с Philips I2C)
– Программируемый сторожевой таймер с отдельным встроенным генератором
– Встроенный аналоговый компаратор
– Прерывание и пробуждение при смене контакта
• Специальные функции микроконтроллера
– DebugWIRE on- система отладки чипа
— Сброс при включении питания и программируемое обнаружение отключения питания
— Внутренний калиброванный генератор
— Внешние и внутренние источники прерываний
— Пять режимов сна: бездействие, шумоподавление АЦП, энергосбережение, и в режиме ожидания
• Ввод/вывод и пакеты
– 23 программируемых линии ввода/вывода
– 28-контактный PDIP, 32-выводной TQFP, 28-контактный QFN/MLF и 32-контактный QFN/MLF
• Рабочее напряжение:
– 1.8 В — 5,5 В для Atmel ATmega48V/88V/168V
– 2,7 В — 5,5 В для Atmel ATmega48/88/168
• Диапазон температур:
– от -40°C до 85°C
• Класс скорости:
– ATmega48V /88 В/168 В: 0–4 МГц при 1,8–5,5 В, 0–10 МГц при 2,7–5,5 В
– ATmega48/88/168: 0–10 МГц при 2,7–5,5 В, 0–20 МГц при 4,5–5,5 В V
• Низкое энергопотребление
– Активный режим: 250 мкА при 1 МГц, 1,8 В, 15 мкА при 32 кГц, 1,8 В (включая осциллятор)
– Режим отключения питания: 0,1 мкА при 1,8 В кусок | Микроконтроллер Atmega Microcontroller IC по цене 149 рупий за штуку | Микроконтроллер | ID: 16705417948