Микроконтроллер avr – AVR

Микроконтроллер avr от Atmel

    1. Архитектура avr от Atmel

AVR — самая обширная производственная линии среди других флэш-микроконтроллеров корпорации Atmel. Atmel представила первый 8-разрядный флэш-микроконтроллер в 1993 году и с тех пор непрерывно совершенствует технологию. Прогресс данной технологии наблюдался в

  • снижении удельного энергопотребления (мА/МГц),

  • расширении диапазона питающих напряжений (до 1.8 В) для продления ресурса батарейных систем,

  • увеличении быстродействия до 16 млн. операций в секунду,

  • встраивании эмуляции в реальном масштабе времени,

  • реализации функции самопрограммирования,

  • совершенствовании и расширении количества периферийных модулей,

  • встраивании специализированных устройств (радиочастотный передатчик, USB-контроллер, драйвер ЖКИ, программируемая логика, контроллер DVD, устройства защиты данных) и др.

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

Другая особенность AVR-микроконтроллеров, которая способствовала их популярности, это использование RISC-архитектуры с мощным набором инструкций, большинство которых выполняются за один машинный цикл.

Это означает, что при равной частоте тактового генератора они обеспечивают производительность в 12 (6) раз больше производительности предшествующих микроконтроллеров на основе CISC-архитектуры (например, MCS51). С другой стороны, в рамках одного приложения с заданным быстродействием, AVR-микроконтроллер может тактироваться в 12 (6) раз меньшей тактовой частотой, обеспечивая равное быстродействие, но при этом потребляя гораздо меньшую мощность. Таким образом, AVR-микроконтроллеры представляют более широкие возможности по оптимизации производительности/энергопотребления, что особенно важно при разработке приложений с батарейным питанием. Микроконтроллеры обеспечивает производительность до 16 млн. оп. в секунду и поддерживают флэш-память программ различной емкости: 1… 256 кбайт. AVR-архитектура оптимизирована под язык высокого уровня Си, а большинство представителей семейства megaAVR содержат 8-канальный 10-разрядный АЦП, а также совместимый с IEEE 1149.1 интерфейс JTAG или debugWIRE для встроенной отладки. Кроме того, все микроконтроллеры megaAVR с флэш-памятью емкостью 16 кбайт и более могут программироваться через интерфейс JTAG.

Пример использования

  • Основные параметры

  • Гарвардская архитектура.

  • RISC.

  • Количество команд 90…130.

  • Число выводов 8…64.

  • Частота тактового генератора 10…16 МГц.

  • Большинство инструкций выполняются за 1 цикл тактового генератора ТГ.

  • Производительность 10…16 МIPS (Millions Instructions per Second).

  • Память программ типа FLASH ROM. Перепрограммируется до 1000 раз.

  • Память данных ОЗУ (тип EEPROM). Перепрограммируется до 100000 раз.

  • 32 регистра общего назначения.

  • Есть режимы с пониженным энергопотреблением.

  • Отладчик AVR Studio, бесплатный.

Семейства

  • Tiny AVR – миниатюрные МК. Flash ROM 1…2 Кбайт, ОЗУ типа EEPROM 64 байт

  • Classic AVR. Flash ROM 2…8 Кбайт, ОЗУ типа EEPROM 64…512 байт, ОЗУ типа SRAM 128…512 байт

  • Mega AVR Flash ROM 2…128 Кбайт, ОЗУ типа EEPROM 64…512 байт, ОЗУ типа SRAM 2…4 Кбайт, 10 разрядный 8-и канальный АЦП, аппаратный умножитель 8*8

Микроконтроллер AT90S2313 выбран как пример для изучения основ. Это современный 8-битный КМОП МК. Он имеет производительность 1 MIPS при частоте ТГ в 1 МГц, так как почти все его команды выполняются за 1 период ТГ.

Используется расширенная RISC архитектура от ARM, 32 регистра общего назначения. Все регистры подключены к арифметико-логическому устройству АЛУ, что дает доступ к 2-м регистрам в течение 1 цикла. Его основные характеристики:

  • 2 Кб загружаемой FLASH памяти. Может быть перепрограммирования через интерфейс SPI.

  • 128 байт EEPROM для данных.

  • 15 линий ввода/вывода общего назначения.

  • 2 таймера/счетчика (один 8-разрядный, другой 16-разрядный.).

  • Внешние и внутренние прерывания

  • Встроенный последовательный порт.

  • Программируемый сторожевой таймер со встроенным генератором.

  • Последовательный порт SPI для загрузки программ.

  • 2 выбираемых программно режима низкого энергопотребления.

Описание выводов

  • VCC – питание.

  • GND – земля.

  • PORT B (PB7…PB0) – 8-разрядный параллельный порт ввода/вывода. Выводы PBO, PB1 являются также положительным (A1N0) и отрицательным (A1N1) входами встроенного аналогового компаратора.

  • PORT D (PD6…PD0) – 7-разрядный двунаправленный параллельный порт ввода/вывода с встроенными подтягивающими резисторами. Входы воспринимают ток до 20 мА.

  • RESET – вход сброса для перезапуска МК.

  • XTAL1 и XTAL2 – вход и выход инвертирующего усилителя, используемые для построения ТГ. К ним можно подключить кварцевый резонатор, задающий частоту ТГ.

  • Обзор архитектуры

Файл регистров общего назначения РОН. 32 8-разрядных. Регистровый файл занимает адреса $00…$1F, поэтому к регистрам можно обращаться и как ячейкам памяти данных.

Большинство команд, использующих регистры, могут обращаться к любым РОН. Исключение составляют команды, работающих с константами: SBCI, SUBI, CPI, ANDI, ORI, LDI. Они работают только со второй половиной файла РОН – R16…R31.

Каждому регистру присвоен и адрес в первых 32 ячейках ОЗУ. Это удобно.

Пространство ввода/вывода состоит из 64 адресов $20…$5F.

АЛУ поддерживает арифметические и логические операции.

6 РОН (R26…R31) можно использовать как 3 16-разрядных указателяX,Y,Zв адресном пространстве данных. Указатель Z можно использовать для адресации таблиц в памяти программ.

Использована Гарвардская архитектура – данные и программа в разных устройствах памяти.

Во время выполнения одной команды следующая команда считывается одновременно из памяти программ.

Прямая регистровая адресация с одним регистром. В качестве источника используется любой РОН. Результат заносится туда же.

Код команды содержит 1 слово. КОП – код операции, РОН определяет используемый регистр.

Прямая регистровая адресация с двумя регистрами. Код команды содержит 1 слово: КОП – код операции, Rr– источник данных, Rd– получатель результата.

Прямая адресация к области ввода вывода. Операция осуществляется с данными в поле P. Используется регистр РОН, он может быть источником или получателем данных.

Прямая адресация к памяти данных. Код команды состоит из 2-х слов. В старшем слове команды размещены — код операции КОП и используемый РОН. В младшем слове находится 16-разрядный адрес ячейки памяти данных.

Косвенная адресация к памяти данных. Адрес операнда находится в одном из регистров X, Y, Z.

Косвенная адресация к памяти данных со смещением. Адрес операнда определяется как сумма содержимого Z или Y регистра и смещения.

Косвенная адресация к памяти данных с предварительным декрементом. Адрес операнда находится в одном из регистров X, Y или Z. Перед выполнением операции он уменьшается на 1.

Косвенная адресация к памяти данных с постинкрементом. Адрес операнда находится в одном из регистров X, Y или Z. После выполнение операции он увеличивается на 1.

Адресация к константам в памяти программ. Константа в регистре Z. 15 старших битов определяют адрес слова, а младший (0) бит задают младший (если 0) или старший (если 1) байт константы в памяти программ.

Косвенная адресация памяти программ. После операций IJMP или ICALL выполнение программы продолжается с адреса записанного в регистре Z. Его содержимое переносится в счетчик команд.

Относительная адресация памяти программ. После операций RJMP или RCALL выполнение программы продолжается с адреса (Счетчик команд)+k+1. Относительный адрес k = -2048…2047

Память программ. Содержит 2 Кб флэш-памяти. Она организована как 1Кх16. Может перепрограммироваться до 1000 раз.. Программный счетчик имеет 10 разрядов и может адресовать 1024 слов памяти программ.

EEPROM память данных. Содержит 128 байтов электрически стираемой энергонезависимой памяти (EEPROM). Организована как отдельная область данных, каждый байт которой может быть прочитан и при необходимости переписан. Выдерживает не менее 100000 циклов записи/стирания. К этой памяти может обращаться программа. Данные а нее можно занести с помощью внешнего программатора.

Оперативная память данныхвключает 224 ячейки: регистровый файл (32 адреса), память ввода/вывода (64 адреса), оперативная память данных (128 адресов).

studfiles.net

AVR. Учебный курс | Электроника для всех

Про шину IIC я писал уже неоднократно. Вначале было описание протокола, потом пример работы в лоб, а недавно камрад Ultrin выложил пример работы с i2c на базе блока USI. Да и в интернете полно статей по использованию этой шины в своих целях. Одно плохо — все они какие то однобокие. В подавляющем большинстве случаев используется конфигурация «Контроллер-Master & EEPROM-Slave». Да еще и на программном мастере. И ни разу я не встречал материала, чтобы кто то сделал Контроллер-Slave или описал многомастерную систему, когда несколько контроллеров сидят на шине и решают арбитражем конфликты передачи. Пустоту пора заполнять, решил я и завязал узелок на память… Да только веревочку пролюбил 🙂

Обещаного три года ждут, вот я таки пересилил лень, выкроил время и сообразил полноценную библиотеку для работы с аппаратным модулем TWI, встроенным во все контроллеры серии MegaAVR. Давно грозился.

Кошмар на крыльях ночи
Во-первых, я сразу же отказался от концепции тупого последовательного кода. Когда у нас есть некоторая функция SendByte(Address,Byte) которая шлет данные по шине, а потом возвращает 1 или 0 в зависимости от успешности или неуспешности операции. Метод прост, дубов, но медленный. Т.е. пока мы байт не пошлем мы не узнаем ушло ли оно, а значит будем вынуждены тупить и ждать. Да, шина i2c может быть очень быстрой. До 100кбит ЕМНИП, но даже это время, а я все же за высокоскоростное выполнение кода, без тормозных выдержек. Наш выбор — диспетчеризация и работа на прерываниях.

Суть в том, что мы подготавливаем данные которые нужно отослать. Дальше запускаем аппаратуру передачи и возвращаемся к своим делам. А зверский конечный автомат, что висит на прерывании TWI передатчика сам передает данные, отвлекая основную программу только тогда, когда нужен какой-либо экшн (например сунуть очередной байт в буфер передачи). Когда же все будет передано, то он генерит событие, которое оповещает головную программу, что мол задание выполнено.
Как? Ну это уже от конкретной реализации событий программы зависит. Может флажок выставить или байт состояния конечного автомата подправить, а может и задачу на конвейер диспетчера набросить или Event в почтовый ящик задачи скинуть. Если юзается RTOS.
(далее…)

Read More »

easyelectronics.ru

Документация по AVR микроконтроллерам, все на русском. / AVR / Сообщество EasyElectronics.ru

За время программирования AVR микроконтроллеров, нарыл я вагон книг в интернете . Целый архив скопился. Вот, выкладываю его для всех. Кому надо качайте. Все строго на русском. Если здесь чего то нет, что есть у вас, предлагаю доложить. Пущай народ чесной пользуется. Весь архив я разбил не по авторам, а по годам выпуска. Если вам нужна какая то одна книга, то не обязательно качать весь архив. Это можно делать выборочно. Итак что мы имеем:
  • 0_Ревич Практическое программирование AVR на ассемблере 2011.djvu
  • 1.0_Рюмик 1000 и одна микроконтроллерная схема Вып. 2 2011.djvu
  • 1.1_Рюмик 1000 и одна микроконтроллерная схема Вып. 1 2010.djvu
  • 2_Кравченко 10 практических устройств на МК AVR Книга-2 2009.djvu
  • 3_Кравченко 10 практических устройств на МК AVR Книга-1 2008.djvu
  • 4_Ревич Практическое программирование МК AVR на ассемблере 2008.djvu
  • 5_Белов Самоучитель разработчика устройств на МК AVR 2008.djvu
  • 6_Лебедев CodeVisionAVR. Пособие для начинающих 2008.djvu
  • 6.1_Ефстифеев МК AVR семейств Tiny и Atmega 2008.pdf
  • 7_Белов Микропроцессорное управление устройствами, тиристоры, реле 2008.doc
  • 8_Стюард Болл_Аналоговые интерфейсы МК 2007.djvu
  • 9_Белов_Создаем устройства на МК AVR 2007.djvu
  • 10_Белов МК AVR в радиолюбительской практике Полный разбор ATTINY2313 2007.djvu
  • 11_Евстифеев МК AVR семейств Tiny 2007.djvu
  • 12_Евстифеев МК AVR семейства Mega 2007.djvu
  • 13_Фред Иди Сетевой и межсетевой обмен данными с МК 2007.djvu
  • 14_Хартов МК AVR практикум для начинающих 2007.djvu
  • 15_Баранов Применение AVR Схемы, алгоритмы, программы 2006.djvu
  • 16_Мортон Д. — Микроконтроллеры AVR. Вводный курс 2006.djvu
  • 17_Трамперт В. Измерение, управление и регулирование с помощью AVR 2006.djvu
  • 18_Шпак Ю.А. Программирование на языке С для AVR и PIC МК 2006.djvu
  • 19_В.Трамперт AVR-RISC МК 2006.pdf
  • 20_Евстифеев А.В. МК AVR семейства Classic 2006.pdf
  • 21_Белов конструирование устройств на МК 2005.djvu
  • 22_Рюмик С.М. — МК AVR. 10 ступеней 2005.djvu
  • 23_Баранов Применение MK AVR. Схемы, алгоритмы, программы 2004.djvu
  • 24_Евстифеев MK AVR Tiny и Mega 2004.djvu
  • 25_Фрунзе МK это же просто, том 3 2003.djvu
  • 26_Голубцов MK AVR от простого к сложному 2003.djvu
  • 27_Фрунзе МК это же просто, том 2 2002.djvu
  • 28_Фрунзе МК это же просто, том 1 2002.djvu
  • 29_Бродин Системы на МК 2002.djvu
  • 30_Гребнев МК семейства ATMEL 2002г.djvu
  • 31_Datasheet на ATmega128_полный перевод на русский.djvu

Я начинал свое изучение AVR с книги 16. Сейчас самые используемые мной книги это 10, 11, 12. Вообще я думаю если этих книг скачать, то начинающему на 5 лет хватит.

Архив качаем отсюда.

Продолжение темы здесь.

we.easyelectronics.ru

Устройство AVR микроконтроллера — Меандр — занимательная электроника

 Изучать устройство микроконтроллера будем на примере микроконтроллера ATmega16. Для начала загружаем даташит на него. В даташите на третьей странице есть блок-диаграмма микроконтроллера. Вот она(картинка “кликабельна”):

На схеме я подписал только самые основные устройства.  “Центром” любого микроконтроллера является ядро(AVR CPU). Оно состоит из Арифметическо-логического устройства(АЛУ), которое выполняет все математические операции, регистров общего назначения(РОН), в которые мы можем подгружать какие-либо значения, регистра SREG(Status Register), биты которого говорят нам о состоянии процессора(например, там есть бит, разрешающий прерывания глобально, биты, указывающие о том, что получилось в результате каких-либо математических действий и др.),  регистр инструкций(Instruction Register), который загружает инструкции по одной из FLASH памяти(памяти программ), декодер инструкций, который выполняет инструкции, взятые из памяти программ. Также есть Program Counter и Stack Pointer. В Program Counter хранится адрес текущего оператора программы, который выполняет контроллер. Stack Pointer указывает адрес стека – конца SRAM памяти(оперативки), в который мы можем записать данные. Всё, с процессором закончили, переходим к периферии.

Все устройства микроконтроллера связаны между собой 8-ми битной шиной данных. По ней данные передаются от одного устройства к другому.

Прерывания – уход микроконтроллера от основной программы при определённом событии. Событием может являтся, например, приём байта через UART интерфейс, окончание передачи байта и др. Когда происходит прерывание, микроконтроллер немедленно останавливает выполнение основной программы  уходит к так называемому обработчику прерывания. В обработчике прерывания выполняется кокое-либо действие, например, если произошло прерывание по приёму байта через UART, то мы можем сравнить принятый байт с тем, что мы ожидаем принять и, к примеру, зажечь светодиод. Так вот генерирует эти прерывания контроллер прерываний(Interrupt Unit).

Также важной частью микроконтроллера является тактовый генератор и система сброса (MCU CTRL. & Timing). Тактовый генератор генерируют тактовые импульсы, которые обеспечивают синхронность работы устройств. Без тактовых импулсьсов микроконтроллер работать не может. Контроллер может тактироваться от внутреннего RC генератора, частоту которого можно подстраивать, занося байт калибровки в специальный регистр. На схеме этот генератор обозначен как “Internal Calibrated Oscillator”. Также в микроконтроллере присутствует генератор, для работы которого требуется кварцевый резонатор. Этот генератор более надёжный и генерируемая им частота не зависит от температуры воздуха и других внешних факторов. Сброс микроконтроллера – действие, при котором микроконтроллер обнуляет  Program Counter и начинает выполнять программу сначала. При этом содержимое РОН сохраняется. У каждого микроконтроллера имеется вывод сброса(RESET). Если этот вывод прижать к земле(подать на него логический 0), микроконтроллер сбросится. Также этот вывод используется при программировании AVR, чтобы ввести контроллер в режим программирования.

Теперь я расскажу Вам о портах ввода-вывода. У ATmega16 их 4. Каждый из портов состоит из цифровой схемы управления и драйвера. Цифровая схема управления выполняет команды, посланные ядром, а драйвер управляет непосредственно ножками микроконтроллера. Также к некоторым выводам портов ввода-вывода подключены дополнительные устройства, например, ко всем линиям порта А подключен АЦП. И этот порт может работать как в режиме обычного порта ввода-вывода, так и в режиме АЦП.

Теперь поговорим о памяти. У каждого микроконтроллера AVR есть FLASH память(Program Flash), SRAM и EEPROM. Во Flash памяти находится сама прошивка микроконтроллера. SRAM – оперативная память. EEPROM  — энергонезависимая память, в которую мы можем записывать что угодно. Это необходимо, например, когда нужно сохранить какие-то меняющиеся значения и восстановить их после выключения питания.

АЦП – аналогово-цифровой преобразователь. Он позволяет представить аналоговый сигнал  в виде чила от 0 до 255 или до 1024 в зависимости от разрядности АЦП. В микроконтроллерах AVR АЦП 10-ти разрядный, поэтому мы можем представить сигнал в виде числа от 0 до 1024, а также, если не будем использовать старший регистр и не требуется большая точность, то можно тот же сигнал представить в виде числа от 0 до 255. В микроконтроллерах AVR АЦП состоит из 2-х частей – собственно самого АЦП(MUX & ADC) и схемы, которая связывает его  с ядром(ADC Interface).

Таймеры/счётчики(Timers/Counters) – устройства, которые могут тикать с разной скоростью измеряя время. Они тикают независимо от ядра. Как правило один из таймеров может работать в асинхронном режиме то есть тактироваться от отдельного тактового генератора на кварцевом резонаторе.

WatchDog Timer(его ещё называют собачьим или сторожевым таймером 🙂 ) – таймер, который при зависании микроконтроллера сбрасывает его. Этот таймер можно отключить. Как видно из диаграммы он соединяется не только с шиной данных, но и со схемой сброса и тактировки для того, чтобы собственно иметь возможность сбросить микроконтроллер. Также собачий таймер имеет свой тактовый генератор.

TWI(two wire  interface) – по сути это IIC интерфейс. Называется он так толко потому, что право на его использование стоит денег.

USART – всем известный последовательный интерфейс для передачи данных. Отличается от COM порта компьютера он только логическими уровнями, поэтому посредством этого интерфейса легче всего связать микроконтроллер с компом.

Аналоговый компаратор – устройство, которое сравнивает 2 сигнала и в зависимости от того, на каком входе амплитуда его больше, на выходе у компаратора появляется либо 0, либо 1.  Схема, которая связывает компаратор с ядром, при определённом условии также вызывает прерывание. Условие, из-за которого происходит прерывание можно менять. Компаратор пригодится, например, если необходимо сделать индикацию того, что батарейка разряжена. Для этого на один из входов подаётся опорное напряжение, а на другой измеряемое.

SPI также является одним из последовательных интерфейсов, которых в мк не один. Также через этот интерфейс происходит последовательное программирование микроконтроллера. Именно поэтому на схеме к блоку SPI подключен ещё и Programming Logic.

На этом завершу данную статью. Удачи Вам в освоении AVR!

radioelektr.ru

meandr.org

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *