Site Loader

Содержание

Документация по 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 лет хватит.

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

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

ATMEGA32L-8AU, Микроконтроллер AVR 32K-Флэш-память/2K-ОЗУ/1K-ЭППЗУ + 8×10 АЦП, электропитание 2,7…5.5В

*Изображения служат только для ознакомления. См. DataSheet продукта

Микроконтроллер AVR 32K-Флэш-память/2K-ОЗУ/1K-ЭППЗУ + 8×10 АЦП, электропитание 2,7…5.5В

Описание ATMEGA32L-8AU

Микроконтроллер AVR 32K-Флэш-память/2K-ОЗУ/1K-ЭППЗУ + 8×10 АЦП, электропитание 2,7…5.5В

IC, SM 8-BIT 32K FLASH MCU, WAFFLE80 Series ATMEGA Memory Size, Flash 32KB EEPROM Size 1024Byte Memory Size, RAM 2048Byte No of I/O Lines 32 No. of ADC Inputs 8 Timers, No. of 3 PWM Channels, No of 4 Clock Frequency 8MHz Interface Type JTAG, SPI, USART Voltage, Supply Min 2.7V Voltage, Supply Max 5.5V Termination Type SMD Case Style TQFP No. of Pins 44 Operating Temperature Range -40°C to +85°C Temp, Op. Max 85°C Temp, Op. Min -40°C Base Number 32 Bits, Number in ADC 10 IC Generic Number 32 Interrupts, External No. of 3 Logic Function Number 32 Memory Size 32K Memory Type Flash PEROM Microprocessor/Controller Features ISP, SPI, WDT No. of Bits 8 Packaging Type Waffle Tray

Корпус TQFP-44, Ядро AVR, Максимальная частота ядра 8 МГц, Объём памяти программ 32.77 кБайт, Объём EEPROM памяти 1.02 кБайт, Объём оперативной памяти 2.05 кБайт, Интерфейсы I²C, SPI, UART/USART, Периферия Brown-out Detect/Reset, POR, PWM, WDT, АЦП/ЦАП A/D 8x10b, Напряжение питания, min 2.7 В, Напряжение питания, max 5.5 В

Серияavr atmega
Ядроavr
Ширина шины данных8-бит
Тактовая частота8 мгц
Количество входов/выходов32
Объем памяти программ32 кбайт (16k x 16)
Тип памяти программflash
Объем EEPROM1k x 8
Объем RAM2k x 8
Наличие АЦП/ЦАПацп 8x10b
Встроенные интерфейсыi2c, spi, uart
Встроенная периферияbrown-outdetect/reset, por, pwm, wdt
Напряжение питания2.7…5.5 в
Рабочая температура-40…+85c
КорпусTQFP-44 (10 x 10)
Вес, г1.4

Генерация звука на микроконтроллерах AVR методом волновых таблиц с поддержкой полифонии

Микроконтроллеры AVR довольно дешевы и широко распространены. Наверно, с них начинает почти любой embedded разработчик. А среди любителей правит балом Arduino, сердцем которого обычно является ATmega328p. Наверняка многие задумывались: как можно заставить их звучать?

Если посмотреть на существующие проекты, то они бывают нескольких типов:

  1. Генераторы квадратных импульсов. Генерация с помощью ШИМ или дергать пины в прерываниях. В любом случае, получается очень характерный пищащий звук.
  2. Использование внешнего оборудования типа MP3 декодера.
  3. Использование ШИМ для вывода 8 битного (иногда 16 битного) звука в формате PCM или ADPCM. Поскольку памяти в микроконтроллерах для этого явно не достаточно, то обычно используют SD карту.
  4. Использование ШИМ для генерации звука на основе волновых таблиц, подобных MIDI.

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

Заинтересовавшихся прошу под кат.

Итак, оборудование:

  • ATmega8 или ATmega328. Портировать на другие ATmega не сложно. И даже на ATtiny, но об этом позже;
  • Резистор;
  • Конденсатор;
  • Динамик или наушники;
  • Питание;

Вроде все.

Простая RC цепочка вместе с динамиком подключается к выводу микроконтроллера. На выходе получаем 8 битный звук с частотой дискретизации 31250Гц. При частоте кристалла в 8МГц можно генерировать до 5 каналов звука + один шумовой канал для перкуссии. При этом используется почти все процессорное время, но после заполнения буфера процессор можно занять чем-то полезным помимо звука:

Данный пример полностью помещается в память ATmega8, 5 каналов + шум обрабатываются при частоте кристалла 8МГц и остается немного времени на анимацию на дисплее. (- t).

В самом простом случае звучание инструмента – это произведение этих функций instrument(t) = tone(t) * volume(t):

На графике это все выглядит примерно так:

Дальше берем все звучащие в данный момент времени инструменты и суммируем их с некоторыми коэффициентами громкости (псевдокод):

for (i = 0; i < CHANNELS; i++) {
  value += channels[i].tone(t) * channels[i].volume(t) * channels[i].volume;
}

Надо только подбирать громкости так, чтобы не было переполнения. И это почти все.

Шумовой канал работает приблизительно так же, только вместо функции тона генератор псевдослучайной последовательности.

Перкуссия — это микс шумового канала и низкочастотной волны, приблизительно в 50-70 Гц.
Конечно, качественного звука таким образом добиться сложно. Но у нас же всего 8 килобайт на все. Надеюсь, это можно простить.

Что можно выжать из 8 бит

Изначально я ориентировался на ATmega8. Без внешнего кварца она работает на частоте 8МГц и имеет 8 битный ШИМ, что дает базовую частоту дискретизации 8000000 / 256 = 31250Гц. Один таймер использует ШИМ для вывода звука и он же при переполнении вызывает прерывание для передачи следующего значения в генератор ШИМ. Соответственно, у нас 256 тактов для вычисления значения сэмпла на все, включая накладные расходы на прерывание, обновление параметров звуковых каналов, отслеживание времени, когда надо проигрывать очередную ноту и т.д.

Для оптимизации будем активно использовать следующие трюки:

  • Поскольку процессор у нас восьмибитный, то переменные будем стараться делать такими же. Иногда будем пользоваться 16 битными.
  • Вычисления условно разделим на частые и не очень. Первые необходимо вычислять для каждого сэмпла, вторые – заметно реже, раз в несколько десятков/сотен сэмплов.
  • Для равномерного распределения нагрузки во времени мы используем циклический буфер. В основном цикле программы мы буфер наполняем, в прерывании вычитываем. Если все хорошо, то наполняется буфер быстрее, чем опустошается и у нас есть время на что-то еще.
  • Код написан на C с большим количеством inline. Практика показывает, что так заметно быстрее.
  • Все что можно просчитать препроцессором, особенно с участием деления, делается препроцессором.

Для начала, разделим время на промежутки по 4 миллисекунды (я назвал их тиками). При частоте дискретизации 31250Гц получаем 125 сэмплов на тик. То, что обязательно нужно считать каждый

arduino — AVR ISP + Atmega16

Есть микроконтроллер Atmega16L-8PU, который я пытаюсь прошить с помощью Arduino Mega 2560, используя скетч ArduinoISP и avrdude.

  1. Создал тестовый проект в Atmel Studio, скомпилировал под Atmega16.
  2. Прошил Arduino скетчем ArduinoISP
  3. Подключил второй микроконтроллер, также установил конденсатор 10мкФ между Reset и GND Ардуино (без него ошибка «out of sync»)
  4. Запускаю avrdude:

avrdude -v -p m16 -c avrisp -P COM3 -b 19200 -D -U flash:w:".\hex\test.hex":i

avrdude: Version 5.4-arduino, compiled on Oct 11 2007 at 19:12:32
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/

         System wide configuration file is "C:\Users\Public\avr\avrdude.conf"

         Using Port            : COM3
         Using Programmer      : avrisp
         Overriding Baud Rate  : 19200
         AVR Part              : ATMEGA16
         Chip Erase delay      : 9000 us
         PAGEL                 : PD7
         BS2                   : PA0
         RESET disposition     : dedicated
         RETRY pulse           : SCK
         serial program mode   : yes
         parallel program mode : yes
         Timeout               : 200
         StabDelay             : 100
         CmdexeDelay           : 25
         SyncLoops             : 32
         ByteDelay             : 0
         PollIndex             : 3
         PollValue             : 0x53
         Memory Detail         :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom         4    10   128    0 no        512    4      0  9000  9000 0xff 0xff
           flash         33     6   128    0 yes     16384  128    128  4500  4500 0xff 0xff
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
           calibration    0     0     0    0 no          4    0      0     0     0 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel AVR ISP
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.

Видно, что сигнатура устройства неверная (0x000000). (UPD: Если запустить avrdude без подключенного целевого МК, то происходит абсолютно такой же вывод в консоль, т.е. проблема в том, что целевой МК не обнаруживается в принципе).

В скетче ArduinoISP сделал #define SPI_CLOCK (128000/6).

Если в avrdude установить флаг -F, то запись как будто бы идет, но проверка в итоге не проходит:

avrdude: Version 5.4-arduino, compiled on Oct 11 2007 at 19:12:32
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/

         System wide configuration file is "C:\Users\Public\avr\avrdude.conf"

         Using Port            : COM3
         Using Programmer      : avrisp
         Overriding Baud Rate  : 19200
         AVR Part              : ATMEGA16
         Chip Erase delay      : 9000 us
         PAGEL                 : PD7
         BS2                   : PA0
         RESET disposition     : dedicated
         RETRY pulse           : SCK
         serial program mode   : yes
         parallel program mode : yes
         Timeout               : 200
         StabDelay             : 100
         CmdexeDelay           : 25
         SyncLoops             : 32
         ByteDelay             : 0
         PollIndex             : 3
         PollValue             : 0x53
         Memory Detail         :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom         4    10   128    0 no        512    4      0  9000  9000 0xff 0xff
           flash         33     6   128    0 yes     16384  128    128  4500  4500 0xff 0xff
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
           calibration    0     0     0    0 no          4    0      0     0     0 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel AVR ISP
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
avrdude: Expected signature for ATMEGA16 is 1E 94 03
avrdude: safemode: lfuse reads as 0
avrdude: safemode: hfuse reads as 0
avrdude: reading input file ".\hex\test.hex"
avrdude: writing flash (150 bytes):

Writing | ################################################## | 100% 0.48s

avrdude: 150 bytes of flash written
avrdude: verifying flash memory against .\hex\test.hex:
avrdude: load data flash data from input file .\hex\test.hex:
avrdude: input file .\hex\test.hex contains 150 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.34s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
         0x0c != 0x00
avrdude: verification error; content mismatch

avrdude: safemode: lfuse reads as 0
avrdude: safemode: hfuse reads as 0
avrdude: safemode: Fuses OK

avrdude done.  Thank you.

P.S. Atmega16 новая.

AVR – микроконтроллеры семь ярких лет становления. Что дальше? Часть 1. Текущее положение AVR на мировом рынке микроконтроллеров — Компоненты и технологии

Микроконтроллеры AVR по праву считаются одним из самых интересных направлений, активно развиваемых корпорацией Atmel. Они представляют собой мощный инструмент для создания современных высокопроизводительных и экономичных многоцелевых контроллеров. На настоящий момент соотношение «цена — производительность — энергопотребление» для микроконтроллеров AVR по-прежнему остается едва ли не лучшим на мировом рынке 8-разрядных микроконтроллеров. Объемы продаж AVR в мире имеют стабильный рост, постоянно растет число сторонних фирм, разрабатывающих и выпускающих программные и аппаратные средства поддержки разработок для них. Области применения AVR многогранны — от простейших игрушек и интеллектуальных датчиков до сложных промышленных систем управления и контроля и современного телекоммуникационного оборудования. Семейство интенсивно развивается, усложняется, совершенствуется. Для примера, на рис. 1 приведены упрощенные структурные схемы AVR выпуска 1997 и 2003 годов.

Рис. 1. Структурные схемы микроконтроллеров AVR в 1997 и 2003 годах

AVR — это относительно молодой продукт корпорации Atmel. В этой линии микроконтроллеров общего назначения постоянно появляются новые кристаллы, обновляются версии уже существующих микросхем, совершенствуется и расширяется программное обеспечение поддержки. Первое официальное издание — каталог Atmel, посвященный AVR, — был датирован маем 1997 года. Второе, существенно расширенное издание каталога, вышло в августе 1999 года [1], и в него уже были включены все три семейства AVR — «tiny», «classic» и «mega». И до сих пор более «свежей» версии каталога в печатном виде не существует, постоянно обновляются и добавляются лишь технические данные в электронном виде (DataSheet), которые Atmel Corp. регулярно размещает на своей информационной странице по AVR в Интернете (www.atmel.com) и за которыми нужно постоянно следить. На этой странице также публикуются замеченные ошибки в кристаллах (Errata Sheet), списки микроконтроллеров, планируемых к снятию с производства, а также другая полезная информация. Все внесенные изменения на сайте корпорации за последние 30 дней отражаются на странице «What’s Changed» (www.atmel.com/dyn/general/updates.asp). Также выпускается полная электронная техническая библиотека по всей продукции Atmel. Ее последняя версия (сентябрь 2003) вышла на двух CD-ROM. В дополнение к этой библиотеке для микроконтроллеров AVR ежемесячно издается отдельный диск «AVR Software and Technical Library», содержащий все существующие документы по микроконтроллерам AVR и программное обеспечение поддержки. В 2004 году корпорация Atmel планирует размещать содержимое этого CD на своем FTP-сайте.

Сама идея создания нового RISC-ядра родилась в 1994 году в Норвегии. В 1995 году два его изобретателя Альф Боген (Alf-Egil Bogen) и Вегард Воллен (Vegard Wollen) предложили корпорации Atmel выпускать новый 8-разрядный RISC-микроконтроллер как стандартное изделие и снабдить его Flash-памятью программ на кристалле. Руководство Atmel Corp. приняло решение инвестировать данный проект. В 1996 году был основан исследовательский центр в городе Тронхейм (Норвегия). Оба изобретателя стали директорами нового центра, а микроконтроллерное ядро было запатентовано и получило название AVR (Alf — Egil Bogen + Vegard Wollen + RISC). Первый опытный кристалл 90S1200 был выпущен на стыке 1996-1997 годов, а с 3 квартала 1997 года корпорация Atmel приступила к серийному производству нового семейства микроконтроллеров и к их рекламной и технической поддержке. Первый специализированный технический семинар по AVR состоялся в октябре 1997 года в городе Нетания (Израиль). Тогда в семейство AVR входило всего четыре базовых кристалла с объемами Flash-памяти программ от 1 до 8 кбайт. Первые опытные промышленные партии микросхем содержали много ошибок, технологических и архитектурных недочетов. Бывало даже, что пластмассовые корпуса микроконтроллеров иногда деформировались от перегрева кристалла, когда порты ввода-вывода «защелкивались» в линейном режиме. Множество нареканий было к устойчивости работы AVR в условиях сильных электромагнитных помех, часто терялось содержимое ячеек EEPROM и Flash-памяти программ при проблемах с напряжением питания микроконтроллеров и так далее. Тем не менее, новая платформа все же понравилась разработчикам во всем мире, ошибки и недочеты постепенно исправлялись и, начиная с 1998 года, началось активное внедрение AVR на микроконтроллерный рынок. В 2003 году Atmel Corp. торжественно отпраздновала крупное событие — количество выпущенных микросхем с ядром AVR превысило 500 миллионов штук! Сюда вошли не только микроконтроллеры AVR, выпускаемые как стандартные изделия. В это количество включены также специализированные микросхемы Atmel: изделия ASSP (управление приводами CD/DVD, микросхемы для цифровых фотоаппаратов, для счетчиков электроэнергии, для Wireless LAN, Bluetooth, комплектов IP-телефонии, системы на кристалле FPSLIC), микросхемы USB (семейство AT43), микроконтроллеры для изделий класса Smart Cards и ряд других специальных проектов.

В связи с постоянным ростом продаж AVR увеличиваются также инвестиции в это направление. Ежегодно проводятся технические семинары для дистрибьюторов (последний состоялся на «родине» AVR в Норвегии), растет число технических специалистов, осуществляющих поддержку этого направления в Atmel Corp. Так, в 1997 году команда AVR составляла не более 10 человек, сейчас это уже свыше 100 только в Норвегии, без учета технических специалистов по AVR в двух специализированных центрах (Франция и Финляндия). Постоянно улучшается сайт компании, появилась возможность размещать дополнительную техническую документацию по направлению.

Какое место занимают микроконтроллеры AVR на мировом рынке? В настоящее время заметная часть современного рынка микроэлектроники принадлежит микроконтроллерам и микропроцессорам общего назначения. По итогам 2002 года (данные независимых исследований компаний Semico и IC Insights) общая стоимость этой части рынка составляет $9,35 млрд, из которых 43% приходится на микроконтроллеры с Flash-памятью программ (или Flash-микроконтроллеры). Если перевести в штуки общую стоимость Flash-микроконтроллеров, то их количество составит 28% (рис. 2).

Рис. 2. Продажи микроконтроллеров в мире

Можно выделить две главных тенденции развития общего рынка микроконтроллеров. Во-первых, наиболее интенсивно развиваются высокопроизводительные 32-разрядные микроконтроллеры и микропроцессоры с богатыми периферийными возможностями. Рынок 4-разрядных микроконтроллеров практически стабилен и занимает не более 10% от общего объема продаж, хотя по количеству выпускаемых кристаллов на этот сегмент приходится не менее четверти всех выпускаемых в мире микроконтроллеров. Основную часть всех выпускаемых в настоящее время в мире изделий данного класса составляют микроконтроллеры разрядностью 16 и 8 бит. Во-вторых, исторически самый большой сегмент этого рынка — однократно программируемые (ОТР) и масочные микроконтроллеры — постоянно сокращается из-за быстрого развития и удешевления Flash-технологии и замещается Flash-версиями. По данным независимых исследований ожидается, что к 2007 году три четверти всех выпускаемых в мире микроконтроллеров с разрядностью от 32 до 4 бит будут иметь Flash-память программ на кристалле.

Рассмотрим подробнее 16- и 8-разрядные сегменты микроконтроллерного рынка. Мировые объемы выпуска 16-разрядных микроконтроллеров составляют на рынке 29% от его общей стоимости — $2,71 млрд. Темпы роста данного сегмента в 2002-2004 годах оцениваются на уровне не более 10%. При этом 50% общего количества выпускаемых 16-разрядных микроконтроллеров принадлежит именно Flash-микроконтроллерам. Из основных мировых лидеров здесь можно отметить Renesas (Hitachi + Mitsubishi), Infineon, Motorola и Texas Instruments. Эти четыре компании удерживают более 70% мирового рынка 16-разрядных микроконтроллеров (по данным IC Insight).

Но наиболее интересным представляется сегмент 8-разрядных микроконтроллеров. В 2002 и 2003 годах его стоимость составляла более $4 млрд. В каждом году этих микроконтроллеров производилось более 3,2 миллиардов штук. В данном сегменте 28% всего объема производства (в штуках) приходится на ОТР-микроконтроллеры, 45% — на масочные версии и 27% — на Flash-микроконтроллеры (34% всего сегмента по стоимости). При этом доля Flash-версий непрерывно растет и по оценкам независимых источников (Semico) составит к 2007 году до 64% общего количества выпускаемых в мире 8-разрядных микроконтроллеров. Средний прирост производства в этом сегменте планируется на уровне не менее 6-7% в год. Наиболее серьезными игроками на мировом рынке считаются Motorola (22%), Renesas (15%), Microchip (14%), ST Micro (9%) и Philips (8%) (рис. 3). Atmel находится здесь на почетном шестом месте с 6% долей рынка, одновременно лидируя в производстве именно Flash-микроконтроллеров. По итогам 2002 и 2003 годов доля Atmel составляет здесь 27%.

Рис. 3. Рынок 8-разрядных микроконтроллеров

Сама корпорация расценивает занимаемое ей шестое место в мире как большой успех. Дело в том, что Atmel продолжительное время выпускает микроконтроллеры и микропроцессоры всех разрядностей от 32 до 4 бит [2], но подлинный успех к компании пришел только после принятия стратегически верного решения объединить передовую Flash-технологию Atmel Corp. с популярным процессорным ядром MCS-51. Корпорация Atmel первой в мире в 1995 году реализовала электрически стираемые и программируемые Flash-микроконтроллеры семейства С51 как современную альтернативу уже существовавшим масочным версиям и дорогим перепрограммируемым кристаллам с ультрафиолетовым стиранием. Аналогичное решение было использовано и для AVR-микроконтроллеров. И Atmel Corp. сразу же вошла в группу лидеров на рынке 8-разрядных микроконтроллеров, потеснив такие известные фирмы, как Intel, Motorola, Philips и Siemens. Агрессивная ценовая политика компании довершила процесс вживания в «элиту» производителей 8-разрядных микроконтроллеров. Положение на рынке более или менее выровнялось только в 2000 году, когда остальные производители также стали выпускать Flash — микроконтроллеры. Но дело было уже сделано, и теперь Atmel Corp. имеет действительно законно заработанную долю рынка в размере 6%. Именно потому, что в этом сегменте Atmel является фигурой молодой и относительно новой, корпорация рассматривает данное положение как большой успех, который следует укреплять и развивать. Современная Flash-технология, «ноу-хау» Atmel, является тем базисом, на котором будет происходить дальнейшее укрепление позиций компании в растущем и перспективном секторе Flash-микроконтроллеров общего назначения.

Нельзя не упомянуть и о конкурентах Atmel. Первым «без сомнения» является компания Motorola. Это крупнейший производитель микропроцессоров и микроконтроллеров различного назначения высокой надежности с разрядностью от 8 до 64 бит. В настоящее время Motorola активно развивает 8-разрядное и 16-разрядное Flash-семейства (HCS08 и HCS12 соответственно) и планирует выпустить в 2004 году 14 новых микроконтроллеров. Вторым главным конкурентом Atmel является компания Microchip. Она представляет широкий спектр 8-разрядных RISC-подобных микроконтроллеров (всего более 180 различных наименований), среди которых имеются как ОТР, так и Flash-версии. Только в 2003 году Microchip выпустила 12 новых Flash-микроконтроллеров.

Рис. 4. Динамика роста продаж AVR в мире

У корпорации Atmel также есть собственный хороший сегмент рынка 8-разрядных микроконтроллеров. Компания Microchip традиционно доминирует на «low-end» рынке для низкостоимостных приложений (разнообразные охранные системы и системы доступа), а компания Motorola несомненно занимает лидирующие позиции в 16- и 32-разрядных сегментах рынка и в автомобильном секторе приложений. В этом смысле Flash — микроконтроллеры с архитектурами AVR и С51 производства Atmel Corp. отлично вписываются в среднюю нишу, на стык между 8- и 16-разрядными микроконтроллерами, где в полной мере можно использовать все несомненные преимущества Flash-технологии. Особенно это касается, конечно, микроконтроллеров AVR. На рис. 4 показаны темпы роста объемов продаж AVR за семь лет развития этой платформы, а на рис. 5 — распределение объемов продаж AVR по регионам за 2003 год. Примечательно, что на долю Азии приходится уже 44% (в 2000 году было менее 4%!), на долю США — 21% и на долю Европы — 35% всего объема продаж. Это говорит о колоссальном успехе AVR на рынках, где традиционно доминировали NEC и OKI (Азия), Motorola и Microchip (США) и Philips / Siemens (Европа). Естественно, такими же темпами росло и производство кристаллов AVR. Только за последние три года Atmel открыла в Европе три новых фабрики по производству кремниевых пластин.

Рис. 5. Распределение объемов продаж AVR по регионам

Для корпорации Atmel в настоящее время развитие и активное продвижение AVR является первостепенной задачей, самым приоритетным и инвестируемым направлением как минимум на ближайшие три года. Корпорация планирует и в дальнейшем уверенно лидировать в мировом производстве 8-разрядных Flash-микроконтроллеров, а собственную долю всего мирового рынка 8-разрядных микроконтроллеров довести до 20%. Для достижения этой очень непростой задачи Atmel Corp. собирается удвоить количество серийно выпускаемых стандартных микроконтроллеров в семействе AVR (сейчас их 20, а к концу 2004 года планируется выпускать уже 40). Одновременно планируется всемерно интегрировать усилия различных исследовательских центров. Например, новый кристалл mega128CAN11 с аппаратным модулем CAN, который появится в феврале 2004 года, разрабатывался уже совместно двумя центрами — в Финляндии и во Франции. Наконец, Atmel Corp. планирует кардинально перестроить свою информационную и рекламную деятельность, а также повсеместно пересмотреть организацию технической поддержки в регионах. Так, будет значительно увеличен и переквалифицирован штат FAE для более полной поддержки региональных дистрибьюторов, и в первую очередь в Европе. Активно создается сеть независимых консультантов по специальной программе «AVR Consultant Program». Проходящее заключительную фазу тестирования, новое оборудование по усовершенствованной технологии 0,35 мкм (0,35+) на трех фабриках корпорации позволит Atmel увеличить объемы выпуска AVR минимум на 50% уже к началу 3 квартала 2004 года.

Микроконтроллеры AVR достаточно подробно описаны на русском языке в периодической технической литературе (например, [3, 4]) а также в Интернете. Сводные таблицы по всем трем семействам AVR можно найти на сайте ООО «ЭФО». Более полному описанию преимуществ семейства AVR, отличительных особенностей архитектуры и периферийных узлов этих микроконтроллеров по состоянию дел на начало 2004 года будет посвящена вторая часть цикла статей. Отметим здесь лишь ключевые особенности платформы AVR 8-bit RISC:

  • скоростная RISC-архитектура Гарвардского типа с регистровым файлом, одинаковая для всех AVR;
  • Flash-память программ и память данных EEPROM на кристалле;
  • функциональная совместимость AVR с объемом памяти программ от 1 до 128 кбайт;
  • широкий диапазон напряжений питания от 1,8 до 5,5 В;
  • активно развивающаяся периферия, отслеживающая мировые требования к современным микроконтроллерам;
  • отличное сочетание параметров «цена — производительность — энергопотребление» для 8-разрядных микроконтроллеров.

Что же ожидает всех потребителей AVR в ближайшие два года? Новая технология производства и ее преимущества

Atmel Corp. завершает перевод текущего производства микроконтроллеров AVR на новые проектные нормы по улучшенной технологии 0,35+. Все последние версии кристаллов AVR и так уже производятся только по новой технологии, а более ранние версии микросхем (технология 0,5 мкм) окончательно переведут на новые проектные нормы до конца 2004 года. Проектная норма 0,35+ позволяет увеличить максимальную рабочую частоту кристалла, совершенствовать уже имеющиеся периферийные блоки (например, UART превратить в USART), а также добавлять дополнительные аппаратные функции на кристалл, например, дифференциальный АЦП с усилителем на входе, интерфейс JTAG и т. д. Следует заметить, что на первом этапе перехода Atmel Corp. от 0,5 к 0,35 мкм не все особенности нового технологического процесса были полностью понятны, было много ошибок и недоработок, которые устранялись параллельно с выпуском очередных версий микроконтроллеров AVR. Поэтому, например, в DataSheet на часть новых кристаллов семейства «mega», выпускаемых по технологии 0,35 мкм первого поколения, были приведены заведомо завышенные данные по времени записи в EEPROM (до 5 мс). В настоящий момент все технологические недочеты устранены, поэтому в новых микросхемах и описаниях этот параметр будет приведен в норму — 3,4 мс. То же самое можно сказать и в отношении энергопотребления в режиме Power Down. К сожалению, DataSheet на уже выпущенные кристаллы по технологии 0,35мкм первого поколения в ближайшее время переиздаваться не будут. Все изменения, на которые следует обратить внимание при переходе на новые версии кристаллов, отражены в специальных руководствах, которые можно найти на сайте Atmel Corp.

Возможности технологии 0,35+ позволят в ближайшем будущем унифицировать семейства «tiny» и «mega». Все новые микроконтроллеры будут тестироваться только для работы в индустриальном температурном диапазоне, с двумя диапазонами питающих напряжений и с характеристиками, перекрывающими все анонсированные ранее. Это, во — первых, снизит количество наименований однотипных кристаллов и, во-вторых, позволит полностью устранить старую проблему совместимости низковольтных (3,3 В) и стандартных (5 В) версий AVR. На рис. 6 в качестве примера показаны зоны стабильной работы нового микроконтроллера tiny13 на максимальных тактовых частотах в зависимости от напряжения питания кристалла (Vcc). Отметим, что при Vcc = 1,8 В нижний порог тактовой частоты составляет уже 6МГц, а не 1 МГц, как у предыдущих версий микроконтроллеров семейства «tiny», а верхний — 24 МГц при Vcc = 5,5 В. На рис. 6 видно, что значение максимальной тактовой частоты кристалла изменяется линейно при росте напряжения питания от 1,8 до 4,5 В. Для расчета максимальной частоты на этом интервале можно использовать формулу F=(Vсс-0,9)/0,15. Например, при Vcc = 3 В максимальное значение частоты составит 14 МГц.

Рис. 6. Зависимость тактовой частоты от напряжения питания для tiny 13

Технология 0,35+ также позволит всем следующим поколениям AVR работать с таким же большим быстродействием: максимальная тактовая частота в 2004 году составит 6 МГц при 1,8 В и 24 МГц при 5 В. Эти характеристики будут стандартными для индустриального температурного диапазона (-40…+85°С). Микроконтроллеры AVR для работы в коммерческом температурном диапазоне (0…+70°С) больше производиться не будут.

Важной новостью является то, что по планам корпорации Atmel к середине 2005 года микроконтроллеры AVR будут тестироваться и серийно выпускаться для работы в автомобильном температурном диапазоне (-40…+125°С). Уже сейчас новые кристаллы, выпускаемые по технологии 0,35+, могут тестироваться для работы в температурном диапазоне -40…+105°С, но только по специальному заказу для промышленных партий.

Возможности усовершенствованной технологии 0,35+ позволят также реализовать сверхнизкое энергопотребление кристаллов, особенно в режиме Power Down. Данная программа у Atmel Corp. носит название ULP (Ultra Low Power). Справедливости ради стоит заметить, что все современные кристаллы универсальных микроконтроллеров, производимые мировыми лидерами, имеют сходные параметры в режимах пониженного энергопотребления. Физически это определяется в основном токами утечки в ячейках Flash-памяти и, следовательно, возможностями технологии. Значения энергопотребления — критичного параметра для приложений с батарейным питанием, полученные Atmel Corp., соответствуют современным требованиям и теперь позволяют AVR успешнее конкурировать, например, с микроконтроллерами Microchip и Texas Instruments на конечном рынке.

Новые кристаллы AVR

За прошедший 2003 год анонсировано несколько новых микроконтроллеров в семействах «tiny» и «mega». Это tiny13, tiny2313 и mega128CAN11. Выпущены в серийное производство микросхемы tiny26, mega16, mega32, mega64, mega162, mega169, mega8515 и mega8535. Сняты с производства кристаллы mega 103, mega 323, mega 161, mega 163, 90S8515, 90S8535 и 90S4433. Планируются к снятию с производства микроконтроллеры 90S1200, 90S2313, 90S2323 и 90S2343. Таким образом, самое первое семейство «classic» AVR (90S) не будет далее развиваться, а будет постепенно замещаться новыми кристаллами семейств «tiny» и «mega», более совершенными, чем их «классические» предшественники.

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

Семейство «tiny» (см. табл. 1) в 2003 году пополнилось тремя новыми кристаллами: tiny 13, tiny 2313 и ATtiny 25. Популярные микроконтроллеры tiny11 и tiny12 пока еще имеют активный статус на сайте Atmel Corp., но в печатных брошюрах корпорации указывается, что их планируется снять с производства после запуска в серию микроконтроллеров tiny13 и tiny2313, которые рекомендуется использовать для новых разработок.

Таблица 1. Микроконтроллеры AVR семейства «tiny» в 2003-2004 годах

 tiny11tiny12tiny13tiny15tiny2313tiny25tiny26tiny28
Flash, кбайт11112222
SRAM, байт64128128128
EEPROM, байт646464128128128
U(S)ART1
USIЕстьЕсть
Таймер/счетчик11122221
Каналы ШИМ214221
Каналы АЦП44411
ISP12ВЕстьЕстьЕстьЕстьЕстьЕсть
debugWIREЕстьЕстьЕсть
Типы корпусаPDIP 8PDIP 8PDIP 8PDIP 8PDIP 20PDIP 8PDIP 20PDIP 28
SOIC 8SOIC 8SOIC 8SOIC 8SOIC 20SOIC 8SOIC 20TQFP 28
    MLF 32 MLF 32MLF 32

Микросхема tiny13 имеет низкое энергопотребление, выпускается в 8-выводном корпусе и является развитием кристаллов tiny11 и tiny12. Микросхема tiny2313 также имеет низкое энергопотребление, но количество выводов и периферийных блоков у нее больше. Новый кристалл tiny25 является развитием популярного микроконтроллера tiny15. Он имеет скоростной модуль ШИМ, который специально разрабатывался для применения в электронных балластах. При этом tiny25 будет выпускаться в корпусах SOIC8 и PDIP8.

Все новые микроконтроллеры семейства «tiny» имеют также блок статической памяти SRAM и модуль внутрисхемной отладки debugWIRE, о котором будет сказано ниже.

Наибольшее развитие в 2003 году получило семейство «mega» (см. табл. 2). Планируются к выпуску новые кристаллы mega48, mega88, mega168, mega256, mega329 с аппаратным контроллером жидкокристаллического индикатора и другие.

Функциональным развитием популярного микроконтроллера mega8 в 2004 году будут три новых ULP-кристалла mega48/88/168 с различными объемами Flash-памяти программ, полностью совместимые как между собой, так и с mega8 по расположению выводов. Микроконтроллеры отличает наличие модуля USART, который может быть также установлен в режим SPI «Master», усовершенствованный модуль контроля напряжения питания BOD (Brown — out Detector), который калибруется на фабрике и потребляет меньше энергии, а также встроенный RC-генератор. Новые ULP-кристаллы mega48/88/168 будут иметь существенно лучшие характеристики энергопотребления. Например, в режиме Power Down при напряжении питания 1,8 В ожидается значение тока потребления 0,1 мкА по сравнению с 0,5 мкА у mega8. Микроконтроллеры будут выпускаться для работы в двух диапазонах напряжений питания — батарейном (1,8-5,5 В) и стандартном (2,7-5,5 В).

Серийно выпускаемый микроконтроллер mega169 для носимых приложений имеет встроенный аппаратный контроллер 4×25 сегментного ЖКИ. Он тоже тестируется для работы в индустриальном температурном диапазоне и для двух диапазонов напряжений питания. В 2004 году планируется производить две его «расширенные» версии, совместимые по расположению выводов и функционально — mega329 и mega649. Они будут иметь увеличенные объемы массивов памяти и пониженное энергопотребление.

В дополнение к этому, также планируется выпустить полностью аналогичные кристаллы mega3290/mega6490 в корпусе TQFP100, содержащем уже 100 внешних выводов. Благодаря большему количеству выводов корпуса микроконтроллера, внешний ЖКИ может иметь до 4×40 сегментов. Эти же самые кристаллы будут выпускаться и как стандартные изделия, но без контроллера ЖКИ. Обозначения для них планируются следующие: mega165/325/645 и mega3250/6450. Вообще, цифра «0» в конце обозначения микроконтроллера будет соответствовать типу корпуса TQFP100, то есть кристаллу с увеличенным количеством выводов. Незадействованные выводы контроллера ЖКИ будут иметь альтернативные функции портов ввода-вывода общего назначения.

Таблица 2. Микроконтроллеры AVR Семейства «mega» в 2003-2004 годах

 mega48mega8mega88mega8515mega8535mega162mega16mega168mega169mega165mega329mega32mega64mega128mega128 CAN11mega256mega2560
Flash, байт488881616161616323264128128256256
SRAM, байт51210241024512512102410241024102410242048204840964096409681928192
EEPROM, байт2565125125125125125125125125121024102420484096409640964096
U(S)ART11111211111122222
USI+
SPI21211112111111111
TWI (I2C)11111111111111111
Таймер/ счетчик33323433333344444
Каналы ШИМ5353464544446+26+2512+412+4
Каналы АЦП86 или 88888888888888
Интерфейс ЖКИ++
debugWIRE+++
JTAG+++++++++++
Тип корпусаPDIP28PDIP28PDIP28PDIP40PDIP40PDIP40PDIP40PDIP28   PDIP40     
   PLCC44             
TQFP32TQFP32TQFP32TQFP44TQFP44TQFP44TQFP44TQFP32TQFP64TQFP64TQFP64TQFP44TQFP64TQFP64TQFP64TQFP64TQFP100 
MLF32MLF32MLF32MLF44MLF44MLF44MLF44MLF32MLF64MLF64MLF64MLF44MLF64MLF64MLF64MLF64 

Микроконтроллеры mega256/512 являются логическим развитием своих предшественников mega64/128 и имеют больший объем памяти. Микросхемы с обозначениями mega640/1280/2560/5120 представляют собой 100-выводные версии этих кристаллов. Управление доступом к памяти программ в кристаллах mega256/512 будет осуществляться автоматически с помощью специального регистра, что должно привести к снижению быстродействия микроконтроллеров при обращении к определенной части программного кода. Кристаллы mega256/512 также будут иметь специальный регистр для дополнительного управления энергопотреблением.

Все новые кристаллы, планируемые к выпуску в 2004 году, приведены в таблице 3.

Таблица 3. Микроконтроллеры AVR, планируемые к выпуску в 2004-2005 годах

Планируемое обозначениеFlash, кбайтRAM, байтEEPROM, байтКаналов АЦПОсобенности
tiny2521281284Скоростной ШИМ
tiny4542562564Скоростной ШИМ
tiny46425625611Скоростной ШИМ
mega32932204810248100сегментный LCD
mega329032204810248160сегментный LCD
mega32532204810248 
mega325032204810248 
mega64964409640968100сегментный ЖКИ
mega649064409640968160сегментный ЖКИ
mega64564409640968 
mega645064409640968 
mega641644096409616 
mega6410644096409616 
mega12811284096409616 
mega12801284096409616 
mega5125128192409616 
mega51205128192409616 

Кристаллы tiny45 и tiny46 являются развитием кристаллов tiny25 и tiny26, а mega1281 и mega641 — кристаллов mega128 и mega64 соответственно. Все новые версии микроконтроллеров будут иметь пониженное энергопотребление.

Архитектурные новшества

Как известно, серийно выпускаемые микроконтроллеры mega103L, mega64 и mega128 уже имеют примечательную архитектурную особенность, позволяющую значительно снизить энергопотребление всего кристалла в целом, когда в процессе работы возникают вынужденные паузы ожидания. В этом случае целесообразно уменьшить ток потребления процессорного ядра и периферийных блоков, как в активном режиме, так и в режиме холостого хода, понизив основную тактовую частоту микроконтроллера. Специальный модуль на кристалле позволяет делить основную тактовую частоту на целое число в диапазоне от 2 до 129. Включение-выключение данной функции осуществляется одной короткой командой в программе. Для дополнительного управления энергопотреблением, особенно когда микроконтроллер находится в режиме пониженного энергопотребления, все ULP-микроконтроллеры (первыми будут mega48/88/168) и все новые кристаллы семейства «mega» будут содержать специальный модуль, также управляемый программно через 8-разрядный регистр. Этот регистр имеет обозначение PRR (Power Reduction Register). Полного описания новой функции в DataSheet пока нет, тем не менее, аппаратно и модуль, и регистр реально существуют, входят в состав микроконтроллера mega169, но пока недоступны широким массам пользователей — проходят этап тестирования.

Отличительной чертой построения портов ввода-вывода у AVR является наличие трех битов контроля и управления для каждого физического вывода микросхемы: бит контроля направления передачи данных и привязки вывода к шине питания (DDRx), бит данных (PORTx) и бит для отображения логического уровня сигнала на физическом выводе микросхемы (PINx). Такая архитектура портов ввода-вывода AVR позволяет разработчику полностью контролировать процесс ввода-вывода и операции «чтение — модификация — запись». Особую значимость приобретает данная возможность AVR для реализации систем, работающих в условиях внешних электрических помех. Тем не менее в новых микроконтроллерах семейства «tiny», начиная с tiny46, будет добавлен еще один, четвертый бит для управления портами ввода-вывода. Регистр имеет обозначение DIDRx (Digital Input Disable Register). Это сделано для снижения энергопотребления кристалла. Дело в том, что у предыдущей версии кристалла tiny26 имеют место утечки тока на цифровом выходе, когда последний находится в высокоимпедансном состоянии, а физический вывод микроконтроллера соединен с внешними электронными компонентами. С помощью нового дополнительного регистра DIDRx можно будет полностью отключать цифровой порт ввода-вывода от физического вывода микросхемы.

Обе вышеописанные особенности новых версий AVR позволят им значительно приблизиться и даже сравняться с энергопотреблением микроконтроллеров MSP430 производства Texas Instruments в энергосберегающих режимах.

Все новые кристаллы AVR будут выпускаться с одним из двух отладочных интерфейсов: JTAG — для микроконтроллеров с объемом Flash-памяти программ от 16 кбайт и debugWIRE для микроконтроллеров с небольшим количеством выводов и размером памяти программ не более 8 кбайт.

Новый аппаратный модуль внутрисхемной отладки debugWIRE уже входит в состав микроконтроллера tiny13. Однопроводной интерфейс debugWIRE был специально разработан для младших кристаллов AVR с небольшим количеством выводов, у которых не хватало линий для полноценной поддержки JTAG-интерфейса (требующего 4 вывода) и площади на кристалле для размещения блоков JTAG и BSD. Модуль debugWIRE позволяет устанавливать неограниченное число программных точек останова в симуляторе AVR Studio и осуществлять эмуляцию всех функций микроконтроллера, за исключением сброса. Он использует один двунаправленный вывод для управления выполнением команд в процессоре и для программирования энергонезависимой памяти. При этом он является коммуникационным интерфейсом с асинхронной передачей данных между отлаживаемым кристаллом и внешним эмулятором.

Flash-память программ перепрограммируется автоматически каждый раз при установке или снятии точек останова под управлением AVR Studio через интерфейс debugWIRE. Использование точек останова, таким образом, сокращает количество возможных циклов перезаписи и время хранения данных во Flash-памяти отлаживаемого кристалла.

Вывод интерфейса debugWIRE (dW) физически расположен на том же выводе, что и вход внешнего сброса (RESET). Поэтому при использовании debugWIRE функция внешнего сброса не поддерживается. При этом линии ввода-вывода не задействуются.

DebugWIRE эмулирует все функции вводов-выводов при функционировании кристалла на максимальной скорости, при остановке микроконтроллера доступ к регистрам ввода-вывода через отладчик AVR Studio осуществляется с некоторыми ограничениями (см. документацию на интерфейс debugWIRE).

Встроенный интерфейс JTAG соответствует стандарту IEEE 1149.1 и позволяет осуществлять тестирование печатной платы с помощью блока граничного сканирования, программирование энергонезависимой памяти, битов защиты и fuse-битов AVR, а также фоновую отладку приложения. Управление JTAG-интерфейсом осуществляется через 4 вывода микроконтроллера, которые составляют Test Access Port (TAP). Контроллер TAP представляет собой конечный автомат с 16 состояниями. Переход в различные состояния зависит от сигнала на выводе TMS в момент переднего фронта на выводе TCK. Вывод TMS (Test Mode Select) используется для управления конечным автоматом, вывод TCK (Test Clock) — для синхронизации интерфейса JTAG. Вывод TDI (Test Data In) представляет собой последовательный вход данных для сдвига в регистр команд или регистр данных (Scan Chains), а вывод TDO (Test Data Out) — последовательный выход данных из регистра команд или регистра данных. Сигнал TRST (Test ReSeT), который дается в стандарте IEEE 1149.1 как дополнительный, здесь не используется.

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

Функциональное развитие периферии

На рис. 7 приведена обобщенная диаграмма перспективных планов Atmel Corp. по развитию семейства микроконтроллеров AVR. В основном эти планы касаются увеличения объемов массивов памяти на кристалле, а также добавления принципиально новых для AVR крупных функционально законченных периферийных блоков — CAN, USB, RF, Ethernet и др.

Анонсирован к выпуску в феврале 2004 года AVR-микроконтроллер mega128CAN11 с аппаратным узлом CAN. Узел CAN имеет 15 независимых буферов входных сообщений и поддерживает скорость передачи данных до 1 Мбит/с при тактовой частоте 8 МГц. Микроконтроллер будет выпускаться в индустриальном (-40…+85°С) и автомобильном (-40…+125°С) температурных диапазонах и опрессовываться в корпуса TQFP64, QFN64 и BGA64. В mega128CAN11 используется такой же узел CAN, как и в микроконтроллере AT89C51CC01 разработки Temic, производимого на фабрике в г. Нант (Франция).

Разрабатывается специальный микроконтроллер семейства «mega», предназначенный для управления электронным балластом флуоресцентных ламп. Он пока позиционируется как изделие класса ASSP с предварительным обозначением «Mballast», но впоследствии Atmel Corp. планирует выпускать этот кристалл и как стандартный микроконтроллер для всех потребителей AVR.

Для специальных приложений — систем управления напряжением питания, зарядных устройств для аккумуляторов различных типов, портативных блоков питания носимых электронных устройств (сотовые телефоны, ноутбуки, плейеры, PDA и пр.) — по заказу японской фирмы разрабатывается и будет производиться еще одно семейство класса ASSP со встроенным ядром AVR. Оно будет иметь обобщенное название Heimdall. Главной отличительной особенностью Heimdall является новая технология изготовления высоковольтных CMOS-ячеек, которая позволит портам ввода-вывода и процессорному ядру AVR работать при напряжении питания до 24 В.

В 2005 году планируется выпустить микроконтроллеры AVR с USB-интерфейсом на кристалле, используя апробированный блок USB для микроконтроллера AT89C5131 разработки Temic. Также в 2005 году Atmel намеревается расширить линейку AVR с радиочастотным блоком на кристалле.

В планы развития AVR на ближайшее будущее также включен специализированный микроконтроллер с аппаратным блоком Ethernet 10/100T, включая MAC. Этот кристалл уже находится в разработке во Франции. В качестве аппаратного контроллера Ethernet выбрана известная микросхема W3100A производства корейской компании WIZnet (www.wiznet.co.kr).

Архитектурные новшества, возможные для реализации в будущем

Аналоговый компаратор входит в состав большинства микроконтроллеров AVR и имеет свой собственный вектор в общей системе прерываний микроконтроллера. При этом тип перепада, вызывающий запрос на прерывание при срабатывании компаратора, может быть запрограммирован пользователем как фронт, срез или переключение. Логический выход компаратора может быть программным образом подключен ко входу одного из 16-разрядных таймеров-счетчиков, работающего в режиме захвата. Это дает возможность измерять длительность аналоговых сигналов, а также максимально просто реализовывать АЦП двухтактного интегрирования. Но, например, если требуется с помощью встроенного аналогового компаратора построить внешний сигма-дельта АЦП, то необходимо подключать выход компаратора на один из внешних выводов микросхемы. Такая возможность дополнительной программной коммутации выхода компаратора на внешний вывод AVR будет реализована как дополнительная опция в последующих версиях кристаллов. Тем не менее «превращать» компаратор в операционный усилитель не планируется.

Встроенный в AVR аналого-цифровой преобразователь, к сожалению, не в полной мере отвечает современным требованиям к встроенным аппаратным блокам микроконтроллеров с точки зрения количества разрядов, точности и скорости преобразования. Но только совершенствованием технологического процесса здесь не помочь, требуются новые архитектурные решения как для самого ядра AVR, так и для аппаратного модуля АЦП. Поэтому вопросы создания нового встроенного АЦП с увеличенным быстродействием, в том числе и при тактировании кристалла от вспомогательной частоты 32,768 кГц, будут решаться в отдаленном будущем.

Возможно, что на кристалл AVR будет встроен и специальный аппаратный узел LVD (Low Voltage Detector), отвечающий за индикацию пониженного напряжения батареи питания. Также обсуждается вопрос о реализации аппаратного контроллера прямого доступа к памяти (DMA) на кристалле AVR. В обоих случаях все определяется потребностями конечного рынка. Если потребуется массовое производство AVR с такими блоками, то они будут выпускаться корпорацией Atmel как стандартные серийные изделия.

Аппаратные и программные средства поддержки разработок

Программные и аппаратные средства поддержки разработок для AVR всегда разрабатывались и продолжают разрабатываться параллельно с самими микроконтроллерами и корпорацией Atmel, и сторонними фирмами. Они включают в себя компиляторы, внутрисхемные эмуляторы, отладчики, программаторы и отладочные платы практически на любой вкус. Немаловажную роль играет и открытая политика Atmel Corp. в вопросах развития и распространения разнообразных доступных средств поддержки разработок. Это позволяет разработчикам и производителям электронной техники надеяться на сохранение полноценной поддержки для перспективного семейства микроконтроллеров AVR, закладываемых в новые изделия. Сама корпорация Atmel выпускает профессиональную интегрированную программную среду разработки приложений (IDE) — AVR Studio, которая распространяется свободно, недорогие стартовые наборы и эмуляторы, программатор для внутрисхемного программирования. Важной характеристикой этой продукции является то, что одно и то же отладочное средство (например, STK500) поддерживает почти все кристаллы AVR, а возможность поддержки новых, еще не выпущенных кристаллов уже заложена в отладочную плату и осуществляется путем обновления микропрограммы (firmware) платы под управлением новых версий AVR Studio.

Одной из последних разработок, которая планируется к выпуску во втором квартале 2004 года, является новая версия внутрисхемного эмулятора JTAGICE — JTAGICE mkII (читается как «mark two»), работающего под управлением AVR Studio. Он разработан для поддержки нового однопроводного интерфейса фоновой отладки debugWIRE. В режиме фоновой отладки программный код исполняется самим целевым микроконтроллером, таким образом, достигается полное совпадение временных и электрических параметров системы в отладочном и рабочем режимах. Новый JTAGICE mkII выглядит так же, как и его предшественник и будет иметь такую же цену. Помимо управления интерфейсами debugWIRE и JTAG, эмулятор JTAGICE mkII может использоваться и в качестве внутрисхемного программатора для микроконтроллеров, имеющих на кристалле интерфейсы JTAG или debugWIRE. JTAGICE mkII будет иметь возможность подключаться к компьютеру не только через COM-порт, но и через интерфейс USB.

Рис. 8. Демонстрационная плата AVRBRLY

Новый демонстрационный набор AVR Butterfly (ATAVRBFLY) на базе микроконтроллера mega169 является отладочным средством нового поколения, имеет небольшие габариты 65 x 45 мм (рис. 8), низкую стоимость и питается от литиевой батарейки. Набор компонентов на плате позволяет достаточно полно оценить все характеристики кристалла mega169. AVR Butterfly поставляется с прошивкой программы, которая поддерживает функции измерения температуры, напряжения от 0 до 5 В, освещенности а также проигрывание простых мелодий. Перепрограммирование кристалла осуществляется непосредственно на плате под управлением AVR Studio (рис. 9).

Рис. 9. Подключение AVRBFLY к PC через RS-232

Для поддержки микроконтроллера mega128CAN11 с CAN-интерфейсом выпущен специальный модуль расширения ATADAPCAN01, который подключается к стандартным отладочным платам STK500 и STK501 производства Atmel (рис. 10). Модуль разработан в соответствии со стандартом Bosch CAN 2.0A/B и реализует функции, необходимые для присоединения отладочной платы STK500 к шине CAN для разработки и отладки конечного приложения.

Рис. 10. Подключение ATADAPCAN01 к STK500/STK501

Новый внутрисхемный эмулятор ICE40 поддерживает работу в реальном времени микроконтроллеров tiny26 и mega8. ICE40 может подключаться к компьютеру через COM-порт или через USB, позволяет осуществлять запись трассы и использовать неограниченное число программных точек останова. Для поддержки микроконтроллеров mega8515, mega8535 и tiny13 с помощью эмулятора ATICE40 выпущен также Upgrade Kit ATICE 40 UPGR. Последняя версия интегрированной среды разработки AVR Studio 4.08 поддерживает Upgrade Kit для ATICE40 в дополнение к совместной работе с внутрисхемными эмуляторами реального времени ICE40, ICE50 и ICE200, JTAG-эмулятором JTAGICE, а также с отладочными наборами STK500/501/502 и кабелем для внутрисхемного программирования AVRISP.

Заключение, или Почему рекомендуется использовать AVR ?

Во-первых, архитектура Flash-микроконтроллеров AVR 8-bit RISC является одной из самых удачных на мировом рынке микроконтроллеров. Наличие трех типов памяти на кристалле, высокая производительность, низкое энергопотребление, отличная адаптивность к языкам программирования высокого уровня (С/С++), разнообразные периферийные модули, широкий диапазон напряжений питания и совместимость кристаллов семейства «снизу вверх» снискали заслуженное уважение и авторитет во всем мире.

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

В-третьих, объемы производства и продаж AVR постоянно увеличиваются, что является гарантией их развития и соответствия мировым требованиям, предъявляемым к современным микроконтроллерам. Легкий выбор нужного универсального микроконтроллера для конкретного приложения из относительно небольшого, но сбалансированного семейства AVR, хорошая совместимость микроконтроллеров по коду и расположению выводов, отличное соотношение «цена — производительность — энергопотребление» для 8-разрядных микроконтроллеров являются хорошими аргументами для выбора платформы.

Литература
  1. AVR RISC Microcontroller Data Book. Atmel Corp. 1999.
  2. Кривченко И. В. Микроконтроллеры общего назначения для встраиваемых приложений производства Atmel Corp. // Электронные компоненты. 2002. N5.
  3. Гребнев В. В. Микроконтроллеры семейства AVR фирмы Atmel. М.: ИП Радиософт. 2002.
  4. Кривченко И. В.AVR-микроконтроллеры очередной этап на пути развития // Компоненты и Технологии. 2002. N3.
  5. AVR Technical Training. Atmel Corp. Norway. 2003.
  6. www.atmel.com.

Типы данных в языке Си

Все данные делятся на типы, типы подразумевают под собой определенную структуру данных и их вид.

Для успешного написания программ для микроконтроллеров на языке Си необходимо знать эти типы, и знать как их применять в конкретном случаи. Например чтобы не использовать лишнюю оперативную память микроконтроллера, которой как обычно не так много (порядок величин сотни байт) для переменной которая будет меняться к примеру в диапазоне от 0 до 120 нету смысла выбирать тип данных long, который хоть и содержит данных диапазон, но имеет размер в 4 байта, а это очень много, если учесть что например тип данных char размером всего 1 байт.

ТипРазмер в байтах (битах)Интервал изменения
char1 (8)от -128 до 127
unsigned char1 (8)от 0 до 255
signed char1 (8)от -128 до 127
int2 (16)от -32768 до 32767
unsigned int2 (16)от 0 до 65535
signed int2 (16)от -32768 до 32767
short int2 (16)от -32768 до 32767
unsigned short int2 (16)от 0 до 65535
signed short int2 (16)от -32768 до 32767
long int4 (32)от -2147483648 до 2147483647
unsigned long int4 (32)от 0 до 4294967295
signed long int4 (32)от -2147483648 до 2147483647
float4 (32)от 3.4Е-38 до 3.4Е+38
double8 (64)от 1.7Е-308 до 1.7Е+308
long double10 (80)от 3.4Е-4932 до 3.4Е+4932

Анатомия микроконтроллеров ATmega » Журнал практической электроники Датагор

Здравствуйте, датагорцы!

После публикации моей первой статьи, меня завалили вопросами о микроконтроллерах, как, что, куда, почему…

Чтобы вы смогли разобраться, как этот чёрный ящик работает, я расскажу вам, о микроконтроллере (далее МК) ATmega8. В принципе фирма Atmel выпускает целую серию МК семейства AVR – это подсемейства Tiny и Mega. Я не буду расписывать достоинства тех или иных МК, это уж вам решать, что вам больше всего подходит.

Некоторые представители большой семьи:

Итак, ATmega8, самый простой МК из всех ATmega:

Начнем изучать внутренности по упрощенной структурной схеме:

Это обобщённая схема всех ATmega.

Все микроконтроллеры AVR построены по так называемой Гарвардской архитектуре, то есть использована раздельная адресация памяти программ и памяти данных. Преимущества этой архитектуры заключаются в повышенном быстродействии, например ATmega выполняет одну инструкцию за один тактовый импульс, то есть при частоте 16МГц МК выполняет 16 миллионов операций в секунду.

А теперь о требухе по порядку.
1. Тактовый генератор выполняет синхронизацию всех внутренних устройств.
2. ПЗУ – постоянное запоминающее устройство, используется для хранения программы и неизменяемых данных (констант).
3. Дешифратор команд – он тут самый главный, управляет всем, что ему под руку попадётся.
4. АЛУ – арифметико-логическое устройство, выполняет арифметические (сложение, вычитание и т.д.) и логические (И, ИЛИ, НЕ, Исключающее ИЛИ) операции над числами.
5. РОН – регистры общего назначения, ими АЛУ оперирует, а так же используются для временного хранения данных. Регистры РОН могут объединяться в регистровые пары:
r26 : r27 – X;
r28 : r29 – Y;
r30 : r31 – Z.

Регистровые пары используются для косвенной адресации данных в ОЗУ.
6. ОЗУ – оперативное запоминающее устройство, используется для хранения данных, массивов и стека.
7. PORTA-PORTn – связь с внешним миром, порты ввода/вывода, ну енто понятно для чего…
8. Спец. УВВ – специальные устройства ввода/вывода, контроллеры разной периферии, например USART (по другому СОМ-порт), иногда USB, АЦП, ЦАП, I2C, короче, чего только там нет…

Ну да это всё теория, а вам не терпится что-то склеить, попробовать, и чтобы енто дело работало! Тогда перечислим что нам нужно:

1. Программатор с соответствующим софтом, об этом я писал в прошлой статье;
2. Компилятор языка Си, Code Vision AVR, имеет неплохой инструментарий для разработки программ для МК;

Перед тем как начать программирование на Си, неплохо бы ознакомиться с какой-нибудь литературой по этому языку, например есть замечательная книга Кернигана и Ритчи «Язык С».

Ну да ладно, начнём…

Тестовая схема.

Давайте соберём такую схему:

Это будет базовая модель. Кстати схему лучше собрать на макетной плате, а МК сунуть в панельку. Но такая схема бессмысленна. Добавим, например, светодиод, и не забудем про токоограничивающий резистор. Подключим его к нулевому выводу порта В.
Схема будет иметь следующий вид:

Включим питание… НОЛЬ!!! А что вы хотели без программы?
Значит…

Пишем программу!

Итак, вы запустили CVAVR, что нужно сделать первым делом? Запускаем мастер Code Wizard AVR, нажав на кнопочку с шестерёнкой в панели инструментов, появится окно мастера:

Здесь выбираем тип МК и тактовую частоту. Далее переходим на вкладку Ports:

И настраиваем, какой бит какого порта у нас будет настроен на ввод или вывод, порт В бит 0 у нас будет выдавать сигнал, а остальные принимать.
Чтобы сохранить настройки выбираем меню File / Generate Save and Exit, вводим имена файлов на все последующие запросы, желательно чтобы они были одинаковые, ну например «prj». Всё, мы сгенерировали исходный текст программы с установками заданными в мастере.

Давайте посмотрим что у нас вышло. Первые 22 строки это комментарий, то есть на действия программы он не имеет никакого влияния, таким образом, всё, что находится между «/*» и «*/» является комментарием, и компилятор всё это дело игнорирует. В 24 сроке у нас подключается заголовочный файл, в нём описано как какие регистры называются и по какому адресу находятся. Для программирования на Си подробности здесь излишни.
С 28 строки у нас начинается основная программа определением функции main(),

Прокрутим ниже. Обратите внимание на строки 36 и 37, здесь присваивается значение порту В и выбирается направление передачи. Вообще наглядно это выглядит так:

То есть, если в какой-нибудь бит регистра DDRB записать единичку, то соответствующий бит порта В будет работать на вывод. В нашем случае это бит 0.
Кстати, у портов в ATmega есть одна приятная особенность, даже если порт настроен на ввод, а в регистр PORTx записать единички, то подключатся внутренние подтягивающие резисторы к плюсу питания, что исключает использование внешних навесных резисторов. Это удобно при подключении всяких датчиков и кнопок.

Скомпилируем программу, для этого нажмём кнопочку Make the Project, или через меню Project / Make. Ошибок быть не должно, если вы что-нибудь не подправили.

Откроем папку C:\cvavr\bin\, найдём там файл prj.hex. Это и есть скомпилированная нами программа для МК. Подключим программатор к ПК и МК. Запустим программу Pony Prog и перетащим в её окно файл prj.hex. Включите питание МК и залейте в него нашу программу… Опять ничего? А проблема в том что мы ничего на нулевой разряд порта В не вывели, вернее вывели, только это ноль. А чтобы наш светодиод загорелся, надо вывести единицу. Так и сделаем, заменим в 36 строке «PORTB=0x00;» на «PORTB=0x01;». Скомпилируем заново программу. А в программе Pony Prog перезагрузим файл при помощи сочетания клавиш Ctrl+L или меню File / Reload Files. Сотрём МК и снова зальём «прошивку» в него. УРА!!! ОНО РАБОТАЕТ!!!

Кстати, Pony Prog поддерживает скрипты, и чтобы не мучаться с перезагрузкой, стиранием и записью, можно просто написать скрипт с расширением .e2s, и обозвать его, например, prog.e2s. Сделать это можно с помощью блокнота. Содержимое у него будет такое:

SELECTDEVICE ATMEGA8
CLEARBUFFER
LOAD-ALL prj.hex
ERASE-ALL
WRITE-ALL

Поместить скрипт следует в одну папку с .hex-файлом, и запускать его двойным щелчком мыши. Можно поместить ярлык на рабочий стол, это уж кому как удобно…

Продолжение следует…

Камрад, рассмотри датагорские рекомендации

🌼 Полезные и проверенные железяки, можно брать

Опробовано в лаборатории редакции или читателями.

 

% PDF-1.6 % 34165 0 объект > эндобдж xref 34165 1135 0000000016 00000 н. 0000030402 00000 п. 0000030540 00000 п. 0000030757 00000 п. 0000030788 00000 п. 0000030842 00000 п. 0000030881 00000 п. 0000031122 00000 п. 0000031212 00000 п. 0000031297 00000 п. 0000031385 00000 п. 0000031473 00000 п. 0000031561 00000 п. 0000031649 00000 п. 0000031737 00000 п. 0000031825 00000 п. 0000031913 00000 п. 0000032001 00000 п. 0000032089 00000 п. 0000032177 00000 п. 0000032265 00000 п. 0000032353 00000 п. 0000032441 00000 п. 0000032529 00000 п. 0000032617 00000 п. 0000032705 00000 п. 0000032793 00000 п. 0000032881 00000 п. 0000032969 00000 п. 0000033057 00000 п. 0000033145 00000 п. 0000033233 00000 п. 0000033321 00000 п. 0000033409 00000 п. 0000033497 00000 п. 0000033585 00000 п. 0000033673 00000 п. 0000033761 00000 п. 0000033849 00000 п. 0000033937 00000 п. 0000034025 00000 п. 0000034113 00000 п. 0000034201 00000 п. 0000034289 00000 п. 0000034377 00000 п. 0000034465 00000 п. 0000034553 00000 п. 0000034641 00000 п. 0000034729 00000 п. 0000034817 00000 п. 0000034905 00000 п. 0000034993 00000 п. 0000035081 00000 п. 0000035169 00000 п. 0000035257 00000 п. 0000035345 00000 п. 0000035433 00000 п. 0000035521 00000 п. 0000035609 00000 п. 0000035697 00000 п. 0000035785 00000 п. 0000035873 00000 п. 0000035961 00000 п. 0000036049 00000 п. 0000036137 00000 п. 0000036225 00000 п. 0000036313 00000 п. 0000036401 00000 п. 0000036489 00000 п. 0000036577 00000 п. 0000036665 00000 п. 0000036753 00000 п. 0000036841 00000 п. 0000036929 00000 п. 0000037017 00000 п. 0000037105 00000 п. 0000037193 00000 п. 0000037281 00000 п. 0000037369 00000 п. 0000037457 00000 п. 0000037545 00000 п. 0000037633 00000 п. 0000037721 00000 п. 0000037809 00000 п. 0000037897 00000 п. 0000037985 00000 п. 0000038073 00000 п. 0000038161 00000 п. 0000038249 00000 п. 0000038337 00000 п. 0000038425 00000 п. 0000038513 00000 п. 0000038601 00000 п. 0000038689 00000 п. 0000038777 00000 п. 0000038865 00000 п. 0000038953 00000 п. 0000039041 00000 п. 0000039129 00000 п. 0000039217 00000 п. 0000039305 00000 п. 0000039393 00000 п. 0000039481 00000 п. 0000039569 00000 п. 0000039657 00000 п. 0000039745 00000 п. 0000039833 00000 п. 0000039921 00000 н. 0000040009 00000 п. 0000040097 00000 п. 0000040185 00000 п. 0000040273 00000 п. 0000040361 00000 п. 0000040449 00000 п. 0000040537 00000 п. 0000040625 00000 п. 0000040713 00000 п. 0000040801 00000 п. 0000040889 00000 п. 0000040977 00000 п. 0000041065 00000 п. 0000041153 00000 п. 0000041241 00000 п. 0000041329 00000 п. 0000041417 00000 п. 0000041505 00000 п. 0000041593 00000 п. 0000041681 00000 п. 0000041769 00000 п. 0000041857 00000 п. 0000041945 00000 п. 0000042033 00000 п. 0000042121 00000 п. 0000042209 00000 п. 0000042297 00000 п. 0000042385 00000 п. 0000042473 00000 п. 0000042561 00000 п. 0000042649 00000 п. 0000042737 00000 н. 0000042825 00000 п. 0000042913 00000 п. 0000043001 00000 п. 0000043089 00000 п. 0000043177 00000 п. 0000043265 00000 п. 0000043353 00000 п. 0000043441 00000 п. 0000043529 00000 п. 0000043617 00000 п. 0000043705 00000 п. 0000043793 00000 п. 0000043881 00000 п. 0000043969 00000 п. 0000044057 00000 п. 0000044145 00000 п. 0000044233 00000 п. 0000044321 00000 п. 0000044409 00000 п. 0000044497 00000 п. 0000044585 00000 п. 0000044673 00000 п. 0000044761 00000 п. 0000044849 00000 н. 0000044937 00000 п. 0000045025 00000 п. 0000045113 00000 п. 0000045201 00000 п. 0000045289 00000 п. 0000045377 00000 п. 0000045465 00000 п. 0000045553 00000 п. 0000045641 00000 п. 0000045729 00000 п. 0000045817 00000 п. 0000045905 00000 п. 0000045993 00000 п. 0000046081 00000 п. 0000046169 00000 п. 0000046257 00000 п. 0000046345 00000 п. 0000046433 00000 п. 0000046521 00000 п. 0000046609 00000 п. 0000046697 00000 п. 0000046785 00000 п. 0000046873 00000 п. 0000046961 00000 п. 0000047049 00000 п. 0000047137 00000 п. 0000047225 00000 п. 0000047313 00000 п. 0000047401 00000 п. 0000047489 00000 п. 0000047577 00000 п. 0000047665 00000 п. 0000047753 00000 п. 0000047841 00000 п. 0000047929 00000 н. 0000048017 00000 п. 0000048105 00000 п. 0000048193 00000 п. 0000048281 00000 п. 0000048369 00000 н. 0000048457 00000 п. 0000048545 00000 п. 0000048633 00000 п. 0000048721 00000 п. 0000048809 00000 п. 0000048897 00000 н. 0000048985 00000 п. 0000049073 00000 п. 0000049161 00000 п. 0000049249 00000 п. 0000049337 00000 п. 0000049425 00000 п. 0000049513 00000 п. 0000049601 00000 п. 0000049689 00000 п. 0000049777 00000 п. 0000049865 00000 п. 0000049953 00000 н. 0000050041 00000 п. 0000050129 00000 п. 0000050217 00000 п. 0000050305 00000 п. 0000050393 00000 п. 0000050481 00000 п. 0000050569 00000 п. 0000050657 00000 п. 0000050745 00000 п. 0000050833 00000 п. 0000050921 00000 п. 0000051009 00000 п. 0000051097 00000 п. 0000051185 00000 п. 0000051273 00000 п. 0000051361 00000 п. 0000051449 00000 п. 0000051537 00000 п. 0000051625 00000 п. 0000051713 00000 п. 0000051801 00000 п. 0000051889 00000 п. 0000051977 00000 п. 0000052065 00000 п. 0000052153 00000 п. 0000052241 00000 п. 0000052329 00000 п. 0000052417 00000 п. 0000052505 00000 п. 0000052593 00000 п. 0000052681 00000 п. 0000052769 00000 п. 0000052857 00000 п. 0000052945 00000 п. 0000053033 00000 п. 0000053121 00000 п. 0000053209 00000 п. 0000053297 00000 п. 0000053385 00000 п. 0000053473 00000 п. 0000053561 00000 п. 0000053649 00000 п. 0000053737 00000 п. 0000053825 00000 п. 0000053913 00000 п. 0000054001 00000 п. 0000054089 00000 п. 0000054177 00000 п. 0000054265 00000 п. 0000054353 00000 п. 0000054441 00000 п. 0000054529 00000 п. 0000054617 00000 п. 0000054705 00000 п. 0000054793 00000 п. 0000054881 00000 п. 0000054969 00000 п. 0000055057 00000 п. 0000055145 00000 п. 0000055233 00000 п. 0000055321 00000 п. 0000055409 00000 п. 0000055497 00000 п. 0000055585 00000 п. 0000055673 00000 п. 0000055761 00000 п. 0000055849 00000 п. 0000055937 00000 п. 0000056025 00000 п. 0000056113 00000 п. 0000056201 00000 п. 0000056289 00000 п. 0000056377 00000 п. 0000056465 00000 п. 0000056553 00000 п. 0000056641 00000 п. 0000056729 00000 п. 0000056817 00000 п. 0000056905 00000 п. 0000056993 00000 п. 0000057081 00000 п. 0000057169 00000 п. 0000057257 00000 п. 0000057345 00000 п. 0000057433 00000 п. 0000057521 00000 п. 0000057609 00000 п. 0000057697 00000 п. 0000057785 00000 п. 0000057873 00000 п. 0000057961 00000 п. 0000058049 00000 п. 0000058137 00000 п. 0000058225 00000 п. 0000058313 00000 п. 0000058401 00000 п. 0000058489 00000 н. 0000058577 00000 п. 0000058665 00000 п. 0000058753 00000 п. 0000058841 00000 п. 0000058929 00000 п. 0000059017 00000 п. 0000059105 00000 п. 0000059193 00000 п. 0000059281 00000 п. 0000059369 00000 п. 0000059457 00000 п. 0000059545 00000 п. 0000059633 00000 п. 0000059721 00000 п. 0000059809 00000 п. 0000059897 00000 п. 0000059985 00000 п. 0000060073 00000 п. 0000060160 00000 п. 0000060247 00000 п. 0000060334 00000 п. 0000060421 00000 п. 0000060508 00000 п. 0000060595 00000 п. 0000060682 00000 п. 0000060769 00000 п. 0000060856 00000 п. 0000060943 00000 п. 0000061030 00000 п. 0000061117 00000 п. 0000061204 00000 п. 0000061291 00000 п. 0000061378 00000 п. 0000061465 00000 п. 0000061552 00000 п. 0000061639 00000 п. 0000061726 00000 п. 0000061813 00000 п. 0000061900 00000 п. 0000061987 00000 п. 0000062074 00000 п. 0000062161 00000 п. 0000062248 00000 п. 0000062335 00000 п. 0000062422 00000 п. 0000062509 00000 п. 0000062596 00000 п. 0000062683 00000 п. 0000062770 00000 н. 0000062857 00000 п. 0000062944 00000 п. 0000063031 00000 п. 0000063118 00000 п. 0000063205 00000 п. 0000063292 00000 п. 0000063379 00000 п. 0000063466 00000 п. 0000063553 00000 п. 0000063640 00000 п. 0000063727 00000 п. 0000063814 00000 п. 0000063901 00000 п. 0000063988 00000 п. 0000064075 00000 п. 0000064162 00000 п. 0000064249 00000 н. 0000064336 00000 п. 0000064423 00000 п. 0000064510 00000 п. 0000064597 00000 п. 0000064684 00000 п. 0000064771 00000 п. 0000064858 00000 п. 0000064945 00000 п. 0000065032 00000 п. 0000065119 00000 п. 0000065206 00000 п. 0000065293 00000 п. 0000065380 00000 п. 0000065467 00000 п. 0000065554 00000 п. 0000065641 00000 п. 0000065728 00000 п. 0000065815 00000 п. 0000065902 00000 п. 0000065989 00000 п. 0000066076 00000 п. 0000066163 00000 п. 0000066250 00000 п. 0000066337 00000 п. 0000066424 00000 н. 0000066511 00000 п. 0000066598 00000 п. 0000066685 00000 п. 0000066772 00000 п. 0000066859 00000 п. 0000066946 00000 п. 0000067033 00000 п. 0000067120 00000 п. 0000067207 00000 п. 0000067294 00000 п. 0000067381 00000 п. 0000067468 00000 п. 0000067555 00000 п. 0000067642 00000 п. 0000067729 00000 п. 0000067816 00000 п. 0000067903 00000 п. 0000067990 00000 п. 0000068077 00000 п. 0000068164 00000 п. 0000068251 00000 п. 0000068337 00000 п. 0000068423 00000 п. 0000068509 00000 п. 0000068595 00000 п. 0000068681 00000 п. 0000068767 00000 п. 0000068853 00000 п. 0000068939 00000 п. 0000069025 00000 п. 0000069111 00000 п. 0000069197 00000 п. 0000069388 00000 п. 0000069994 00000 н. 0000070221 00000 п. 0000070301 00000 п. 0000070380 00000 п. 0000071361 00000 п. 0000072214 00000 п. 0000072968 00000 п. 0000073610 00000 п. 0000074358 00000 п. 0000075361 00000 п. 0000075501 00000 п. 0000075901 00000 п. 0000077075 00000 п. 0000078227 00000 п. 0000079415 00000 п. 0000080651 00000 п. 0000081166 00000 п. 0000081399 00000 н. 0000082501 00000 п. 0000083342 00000 п. 0000088891 00000 п. 0000095131 00000 п. 0000095208 00000 п. 0000101344 00000 н. 0000101597 00000 н. 0000101940 00000 н. 0000102465 00000 н. 0000102566 00000 н. 0000102630 00000 н. 0000102755 00000 н. 0000102943 00000 н. 0000103074 00000 н. 0000103202 00000 н. 0000103361 00000 п. 0000103487 00000 н. 0000103617 00000 п. 0000103807 00000 н. 0000103908 00000 н. 0000104010 00000 п. 0000104196 00000 п. 0000104310 00000 п. 0000104424 00000 н. 0000104579 00000 п. 0000104718 00000 н. 0000104913 00000 н. 0000105051 00000 н. 0000105249 00000 н. 0000105449 00000 н. 0000105578 00000 н. 0000105726 00000 н. 0000105909 00000 н. 0000106070 00000 п. 0000106273 00000 н. 0000106530 00000 н. 0000106642 00000 п. 0000106817 00000 п. 0000107028 00000 п. 0000107137 00000 н. 0000107315 00000 н. 0000107542 00000 п. 0000107651 00000 п. 0000107873 00000 п. 0000108085 00000 п. 0000108194 00000 н. 0000108370 00000 п. 0000108564 00000 н. 0000108730 00000 н. 0000108906 00000 н. 0000109102 00000 п. 0000109213 00000 п. 0000109387 00000 п. 0000109569 00000 н. 0000109679 00000 н. 0000109878 00000 п. 0000110036 00000 н. 0000110146 00000 п. 0000110304 00000 п. 0000110521 00000 п. 0000110696 00000 п. 0000110873 00000 н. 0000111136 00000 н. 0000111286 00000 н. 0000111463 00000 н. 0000111680 00000 н. 0000111792 00000 н. 0000111948 00000 н. 0000112181 00000 п. 0000112317 00000 н. 0000112492 00000 н. 0000112743 00000 н. 0000112852 00000 н. 0000113030 00000 н. 0000113234 00000 н. 0000113343 00000 п. 0000113517 00000 н. 0000113701 00000 н. 0000113849 00000 н. 0000114021 00000 н. 0000114187 00000 н. 0000114383 00000 п. 0000114557 00000 н. 0000114721 00000 н. 0000114837 00000 н. 0000115042 00000 н. 0000115237 00000 н. 0000115364 00000 н. 0000115539 00000 н. 0000115751 00000 н. 0000115868 00000 н. 0000116043 00000 н. 0000116251 00000 н. 0000116359 00000 н. 0000116535 00000 н. 0000116730 00000 н. 0000116877 00000 н. 0000117059 00000 н. 0000117228 00000 н. 0000117410 00000 н. 0000117560 00000 н. 0000117728 00000 н. 0000117844 00000 н. 0000118031 00000 н. 0000118186 00000 н. 0000118319 00000 н. 0000118461 00000 н. 0000118584 00000 н. 0000118745 00000 н. 0000118863 00000 н. 0000119028 00000 н. 0000119131 00000 н. 0000119238 00000 п. 0000119462 00000 н. 0000119582 00000 н. 0000119704 00000 н. 0000119829 00000 н. 0000119952 00000 н. 0000120099 00000 н. 0000120245 00000 н. 0000120393 00000 н. 0000120541 00000 н. 0000120686 00000 н. 0000120832 00000 н. 0000120977 00000 н. 0000121125 00000 н. 0000121270 00000 н. 0000121416 00000 н. 0000121562 00000 н. 0000121678 00000 н. 0000121807 00000 н. 0000121970 00000 н. 0000122142 00000 н. 0000122335 00000 н. 0000122498 00000 н. 0000122701 00000 н. 0000122868 00000 н. 0000123043 00000 н. 0000123176 00000 н. 0000123337 00000 н. 0000123488 00000 н. 0000123626 00000 н. 0000123807 00000 н. 0000123951 00000 н. 0000124103 00000 н. 0000124280 00000 н. 0000124409 00000 н. 0000124589 00000 н. 0000124769 00000 н. 0000124965 00000 н. 0000125141 00000 н. 0000125315 00000 н. 0000125503 00000 н. 0000125616 00000 н. 0000125806 00000 н. 0000125971 00000 н. 0000126162 00000 н. 0000126393 00000 н. 0000126515 00000 н. 0000126671 00000 н. 0000126835 00000 н. 0000127018 00000 н. 0000127180 00000 н. 0000127335 00000 н. 0000127495 00000 н. 0000127643 00000 н. 0000127780 00000 н. 0000127939 00000 н. 0000128114 00000 н. 0000128287 00000 н. 0000128455 00000 н. 0000128621 00000 н. 0000128795 00000 н. 0000128932 00000 н. 0000129076 00000 н. 0000129295 00000 н. 0000129429 00000 н. 0000129562 00000 н. 0000129739 00000 н. 0000129895 00000 н. 0000130044 00000 н. 0000130211 00000 н. 0000130380 00000 н. 0000130583 00000 н. 0000130736 00000 н. 0000130874 00000 н. 0000131032 00000 н. 0000131182 00000 н. 0000131313 00000 н. 0000131452 00000 н. 0000131589 00000 н. 0000131746 00000 н. 0000131871 00000 н. 0000132000 00000 н. 0000132142 00000 н. 0000132307 00000 н. 0000132455 00000 н. 0000132603 00000 н. 0000132783 00000 н. 0000132935 00000 н. 0000133113 00000 п. 0000133290 00000 н. 0000133403 00000 н. 0000133518 00000 н. 0000133720 00000 н. 0000133903 00000 н. 0000134077 00000 н. 0000134203 00000 н. 0000134329 00000 н. 0000134480 00000 н. 0000134620 00000 н. 0000134775 00000 н. 0000134940 00000 н. 0000135138 00000 н. 0000135293 00000 п. 0000135451 00000 н. 0000135656 00000 н. 0000135791 00000 н. 0000135920 00000 н. 0000136106 00000 п. 0000136261 00000 н. 0000136442 00000 н. 0000136585 00000 н. 0000136760 00000 н. 0000136931 00000 н. 0000137102 00000 н. 0000137273 00000 н. 0000137444 00000 н. 0000137614 00000 н. 0000137787 00000 н. 0000137959 00000 н. 0000138130 00000 н. 0000138320 00000 н. 0000138491 00000 н. 0000138672 00000 н. 0000138863 00000 н. 0000139035 00000 н. 0000139215 00000 н. 0000139404 00000 н. 0000139576 00000 н. 0000139755 00000 н. 0000139945 00000 н. 0000140116 00000 н. 0000140295 00000 н. 0000140484 00000 н. 0000140656 00000 н. 0000140836 00000 н. 0000141029 00000 н. 0000141202 00000 н. 0000141382 00000 н. 0000141574 00000 н. 0000141745 00000 н. 0000141925 00000 н. 0000142116 00000 п. 0000142286 00000 н. 0000142467 00000 н. 0000142654 00000 н. 0000142823 00000 п. 0000143004 00000 п. 0000143192 00000 н. 0000143361 00000 н. 0000143538 00000 н. 0000143724 00000 н. 0000143893 00000 п. 0000144034 00000 н. 0000144251 00000 н. 0000144432 00000 н. 0000144621 00000 н. 0000144790 00000 н. 0000144973 00000 н. 0000145156 00000 н. 0000145353 00000 п. 0000145557 00000 н. 0000145747 00000 н. 0000145938 00000 н. 0000146141 00000 п. 0000146324 00000 н. 0000146516 00000 н. 0000146683 00000 н. 0000146869 00000 н. 0000146988 00000 н. 0000147129 00000 н. 0000147328 00000 н. 0000147497 00000 н. 0000147685 00000 н. 0000147822 00000 н. 0000147977 00000 п. 0000148111 00000 п. 0000148274 00000 н. 0000148438 00000 н. 0000148553 00000 н. 0000148675 00000 н. 0000148862 00000 н. 0000149002 00000 н. 0000149195 00000 н. 0000149403 00000 п. 0000149585 00000 н. 0000149765 00000 н. 0000149941 00000 н. 0000150138 00000 н. 0000150326 00000 н. 0000150520 00000 н. 0000150689 00000 н. 0000150877 00000 н. 0000150998 00000 н. 0000151170 00000 н. 0000151368 00000 н. 0000151538 00000 н. 0000151726 00000 н. 0000151864 00000 н. 0000152019 00000 н. 0000152205 00000 н. 0000152358 00000 п. 0000152513 00000 н. 0000152646 00000 н. 0000152811 00000 н. 0000153012 00000 н. 0000153177 00000 н. 0000153341 00000 п. 0000153456 00000 н. 0000153577 00000 н. 0000153717 00000 н. 0000153903 00000 н. 0000154060 00000 н. 0000154200 00000 н. 0000154391 00000 н. 0000154602 00000 н. 0000154813 00000 н. 0000155023 00000 н. 0000155238 00000 п. 0000155453 00000 н. 0000155666 00000 н. 0000155883 00000 н. 0000156086 00000 н. 0000156288 00000 н. 0000156491 00000 н. 0000156693 00000 н. 0000156902 00000 н. 0000157114 00000 н. 0000157327 00000 н. 0000157537 00000 н. 0000157750 00000 н. 0000157961 00000 п. 0000158174 00000 н. 0000158387 00000 н. 0000158601 00000 н. 0000158813 00000 н. 0000159026 00000 н. 0000159240 00000 н. 0000159428 00000 н. 0000159615 00000 н. 0000159807 00000 н. 0000159995 00000 н. 0000160201 00000 н. 0000160405 00000 н. 0000160608 00000 н. 0000160811 00000 н. 0000161013 00000 н. 0000161217 00000 н. 0000161422 00000 н. 0000161628 00000 н. 0000161832 00000 н. 0000162033 00000 н. 0000162234 00000 н. 0000162410 00000 н. 0000162561 00000 н. 0000162702 00000 н. 0000162816 00000 н. 0000163000 00000 н. 0000163195 00000 н. 0000163351 00000 н. 0000163540 00000 н. 0000163706 00000 н. 0000163906 00000 н. 0000164075 00000 н. 0000164262 00000 н. 0000164400 00000 н. 0000164558 00000 н. 0000164744 00000 н. 0000164865 00000 н. 0000165010 00000 н. 0000165142 00000 н. 0000165305 00000 н. 0000165445 00000 н. 0000165638 00000 п. 0000165826 00000 н. 0000166035 00000 н. 0000166245 00000 н. 0000166432 00000 н. 0000166614 00000 н. 0000166798 00000 н. 0000166974 00000 н. 0000167174 00000 н. 0000167289 00000 н. 0000167409 00000 н. 0000167560 00000 н. 0000167707 00000 н. 0000167874 00000 н. 0000167992 00000 н. 0000168111 00000 н. 0000168245 00000 н. 0000168440 00000 н. 0000168604 00000 н. 0000168797 00000 н. 0000169016 00000 н. 0000169120 00000 н. 0000169323 00000 н. 0000169475 00000 н. 0000169633 00000 н. 0000169853 00000 н. 0000170027 00000 н. 0000170178 00000 н. 0000170410 00000 н. 0000170580 00000 н. 0000170729 00000 н. 0000170878 00000 н. 0000171055 00000 н. 0000171183 00000 н. 0000171363 00000 н. 0000171564 00000 н. 0000171717 00000 н. 0000171842 00000 н. 0000171984 00000 н. 0000172157 00000 н. 0000172301 00000 н. 0000172478 00000 н. 0000172651 00000 н. 0000172807 00000 н. 0000172947 00000 н. 0000173100 00000 н. 0000173283 00000 н. 0000173462 00000 н. 0000173629 00000 н. 0000173839 00000 н. 0000174049 00000 н. 0000174254 00000 н. 0000174426 00000 н. 0000174627 00000 н. 0000174802 00000 н. 0000174993 00000 н. 0000175166 00000 н. 0000175341 00000 п. 0000175476 00000 н. 0000175635 00000 н. 0000175823 00000 н. 0000175941 00000 н. 0000176159 00000 н. 0000176380 00000 н. 0000176603 00000 н. 0000176758 00000 н. 0000176941 00000 н. 0000177122 00000 н. 0000177309 00000 н. 0000177455 00000 н. 0000177611 00000 н. 0000177746 00000 н. 0000177946 00000 н. 0000178077 00000 н. 0000178200 00000 н. 0000178426 00000 н. 0000178636 00000 н. 0000178767 00000 н. 0000178974 00000 н. 0000179199 00000 н. 0000179326 00000 н. 0000179476 00000 н. 0000179626 00000 н. 0000179781 00000 н. 0000179945 00000 н. 0000180093 00000 н. 0000180242 00000 н. 0000180402 00000 н. 0000180555 00000 н. 0000180713 00000 н. 0000180864 00000 н. 0000181017 00000 н. 0000181200 00000 н. 0000181365 00000 н. 0000181532 00000 н. 0000181700 00000 н. 0000181883 00000 н. 0000182063 00000 н. 0000182284 00000 н. 0000182469 00000 н. 0000182650 00000 н. 0000182801 00000 н. 0000182986 00000 н. 0000183128 00000 н. 0000183274 00000 н. 0000183502 00000 н. 0000183635 00000 н. 0000183774 00000 н. 0000183989 00000 н. 0000184113 00000 н. 0000184265 00000 н. 0000184391 00000 н. 0000184559 00000 н. 0000184737 00000 н. 0000184930 00000 н. 0000185127 00000 н. 0000185317 00000 н. 0000185516 00000 н. 0000185713 00000 н. 0000185855 00000 н. 0000185990 00000 н. 0000186180 00000 п. 0000186409 00000 н. 0000186532 00000 н. 0000186656 00000 н. 0000186827 00000 н. 0000186995 00000 н. 0000187188 00000 н. 0000187298 00000 н. 0000187424 00000 н. 0000187562 00000 н. 0000187700 00000 н. 0000187912 00000 н. 0000188153 00000 н. 0000188309 00000 н. 0000188461 00000 н. 0000188648 00000 н. 0000188805 00000 н. 0000188946 00000 н. 0000189177 00000 н. 0000189297 00000 н. 0000189418 00000 н. 0000189594 00000 н. 0000189721 00000 н. 0000189857 00000 н. 0000189996 00000 н. 00001 00000 н. 00001

  • 00000 н. 00001
  • 00000 н. 00001
  • 00000 н. 00001 00000 н. 00001 00000 н. 00001 00000 н. 00001

    00000 н. 00001 00000 н. 00001 00000 н. 0000191861 00000 н. 0000192010 00000 н. 0000192269 00000 н. 0000192426 00000 н. 0000192592 00000 н. 0000192825 00000 н. 0000192961 00000 н. 0000193111 00000 п. 0000193306 00000 н. 0000193485 00000 н. 0000193694 00000 н. 0000193890 00000 н. 0000194058 00000 н. 0000194251 00000 н. 0000194453 00000 н. 0000194647 00000 н. 0000194841 00000 н. 0000195068 00000 н. 0000195247 00000 н. 0000195408 00000 н. 0000195567 00000 н. 0000195766 00000 н. 0000195945 00000 н. 0000196103 00000 п. 0000196290 00000 н. 0000196448 00000 н. 0000196614 00000 н. 0000196805 00000 н. 0000196947 00000 н. 0000197120 00000 н. 0000197385 00000 н. 0000197493 00000 н. 0000197622 00000 н. 0000197765 00000 н. 0000197905 00000 н. 0000198072 00000 н. 0000198189 00000 н. 0000198361 00000 н. 0000198531 00000 н. 0000198706 00000 н. 0000198872 00000 н. 0000199059 00000 н. 0000199234 00000 н. 0000199406 00000 н. 0000199558 00000 н. 0000199705 00000 н. 0000199864 00000 н. 0000200021 00000 н. 0000200156 00000 н. 0000200351 00000 п. 0000200537 00000 н. 0000200710 00000 н. 0000200881 00000 п. 0000201059 00000 н. 0000201225 00000 н. 0000201382 00000 н. 0000201537 00000 н. 0000201698 00000 н. 0000201847 00000 н. 0000202004 00000 н. 0000202162 00000 н. 0000202327 00000 н. 0000202494 00000 н. 0000202651 00000 н. 0000202815 00000 н. 0000202989 00000 н. 0000203156 00000 н. 0000203297 00000 н. 0000203440 00000 н. 0000203591 00000 н. 0000203743 00000 н. 0000203895 00000 н. 0000204043 00000 н. 0000204187 00000 н. 0000204372 00000 н. 0000204535 00000 н. 0000204725 00000 н. 0000204938 00000 н. 0000205085 00000 н. 0000205229 00000 н. 0000205379 00000 н. 0000205571 00000 н. 0000205755 00000 н. 0000205914 00000 н. 0000206088 00000 н. 0000206196 00000 н. 0000206304 00000 н. 0000206495 00000 н. 0000206660 00000 н. 0000206857 00000 н. 0000207026 00000 н. 0000207174 00000 н. 0000207305 00000 н. 0000207459 00000 н. 0000207619 00000 н. 0000207781 00000 н. 0000207968 00000 н. 0000208107 00000 н. 0000208236 00000 п. 0000208364 00000 н. 0000208494 00000 н. 0000208609 00000 н. 0000208729 00000 н. 0000208878 00000 н. 0000209025 00000 н. 0000209170 00000 н. 0000209315 00000 н. 0000209462 00000 н. 0000209608 00000 н. 0000209756 00000 н. 0000209902 00000 н. 0000210045 00000 н. 0000210189 00000 п. 0000210332 00000 н. 0000210475 00000 н. 0000210619 00000 п. 0000210762 00000 н. 0000210906 00000 н. 0000211048 00000 н. 0000211191 00000 п. 0000211336 00000 н. 0000211481 00000 н. 0000211625 00000 н. 0000211769 00000 н. 0000211912 00000 н. 0000212056 00000 н. 0000212200 00000 н. 0000212341 00000 п. 0000212483 00000 н. 0000212624 00000 н. 0000212771 00000 н. 0000212917 00000 н. 0000213064 00000 н. 0000023473 00000 п. трейлер ] / Назад 8139656 >> startxref 0 %% EOF 35299 0 объект > поток 1’bMx.҂riPUShn *%> 1IV ݼ 8 ێ SQwz6 * T ډ 1 ZI7 {iegKb; = p], v $ wMB.0Cα} O ~ 4! {OWF6n «F! 0B + ۪ 1! VJe x> Ȱ`ѭNJ [` = T # Ӥb5> S 𐙜 dsJcue [YZ% ~]; \ Lud2AdE + L [󶲍 Խ / D $ fEY; VSw; s ‚[N-a @ & ɾz

    N [- # 6xqEYWELh4zϖ hln.5ϙ

    ATmega2560 — Характеристики, сравнение и Arduino Mega Review

    Atmega2560, обычно используется в Arduino Mega 2560 в качестве основного микроконтроллера. Это микроконтроллер на базе RISC AVR, который выполняет мощные инструкции за один такт. Это позволяет достичь идеального баланса между потребляемой мощностью и скоростью обработки.

    В этом блоге я расскажу о следующем:

    • ATmega2560 особенности, хорошие и плохие, сравнение
    • Платы микроконтроллеров Atmega2560; Arduino Mega 2560, Seeeduino Mega

    Характеристики и параметры:
    Характеристики:
    1. Сегменты энергонезависимой памяти High Endurance
      • Циклы записи / стирания: 10 000 флэш-памяти
    2. Поддержка библиотеки Atmel QTouch
    3. JTAG (IEEE std.1149.1) интерфейс
    4. Периферийные функции
      • Счетчик реального времени с отдельным генератором
      • Программируемый сторожевой таймер с отдельным встроенным генератором
      • Встроенный аналоговый компаратор
      • Прерывание и активация при зарядке вывода
    5. Другие специальные функции
      • Сброс при включении питания и программируемое обнаружение пониженного напряжения
      • Внутренний калиброванный осциллятор
      • Внешние и внутренние источники прерываний
      • Шесть режимов сна: холостой ход, шумоподавление АЦП, энергосбережение, отключение питания , Режим ожидания и расширенный режим ожидания

    Полный список функций вы можете просмотреть в техническом описании

    Параметры:
    Имя Значение
    Тип памяти программы Вспышка
    Размер памяти программы (КБ) 256
    Скорость процессора (MIPS / DMIPS) 16
    SRAM (КБ) 8,192
    Данные EEPROM / HEF (байты) 4 096
    Периферийные устройства цифровой связи 4-UART, 5-SPI, 1-I2C
    Периферийные устройства для захвата / сравнения / ШИМ 4 входа захвата, 4 CCP, 16PWM
    Таймеры 2 x 8 бит, 4 x 16 бит
    Количество компараторов 1
    Диапазон температур (° C) от -40 до 85
    Диапазон рабочего напряжения (В) 1.8 к 5,5
    Счетчик контактов 100

    Что хорошего и плохого?

    Преимущества:

    • Низкое энергопотребление при быстром запуске
    • Легче в использовании, 8-битный микроконтроллер менее сложен, чем 32/64 битные версии
    • QTouch Suite упрощает изучение, разработку и отладку собственных сенсорных приложений
    • Запатентованный смежный Технология Key Suppression позволяет однозначно обнаруживать ключевые события

    Недостатки:

    • Ограниченное количество циклов записи во флеш-память ограничивает количество раз, когда изображения могут быть прошиты при программировании на ПК
    • Естественно не хватает инкрементальной производительности по сравнению с микроконтроллерами с более высоким битом

    Сравнение микроконтроллеров:

    ATmega2560 относится к микроконтроллерам; ATmega640 / 1280/1281/2560/2561.Он имеет общие конфигурации, такие как EEPROM и RAM, но все же имеет различия, как показано ниже:

    Устройство Вспышка Контакты ввода-вывода общего назначения Каналы ШИМ с разрешением 16 бит Последовательные USART Каналы АЦП
    ATmega640 64 КБ 86 12 4 16
    ATmega1280 128 КБ 86 12 4 16
    ATmega1281 128 КБ 54 6 2 8
    ATmega2560 256 КБ 86 12 4 16
    ATmega2561 256 КБ 54 6 2 8

    Ближайшим к ATmega2560 микроконтроллером является ATmega1280 с единственной разницей в дополнительных 128 КБ флэш-памяти.

    Это дополнительное количество флэш-памяти 2560 будет лучше для проектов, требующих большего пространства для программирования.

    Примечание: Mega 1280 на базе Arduino больше не производится Arduino, что делает 2560 единственным вариантом

    Платы микроконтроллера, использующие ATmega2560:

    Ардуино Мега 2560

    Известный своими способностями к работе с более сложными проектами, Arduino Mega 2560 дает вашим проектам много места и возможностей.Он рекомендуется для 3D-принтеров и проектов робототехники с 54 цифровыми контактами ввода / вывода, 16 аналоговыми входами и большим пространством.

    Характеристики / характеристики

    • Рабочее напряжение: 5 В
    • Входное напряжение (рекомендуемое): 7-12 В
    • Входное напряжение (пределы): 6-20 В
    • Выводы цифрового ввода / вывода: 54 (из которых 14 обеспечивают вывод ШИМ)
    • Выводы аналогового ввода : 16
    • Постоянный ток на вывод ввода / вывода: 40 мА
    • Постоянный ток для вывода 3,3 В: 50 мА
    • Флэш-память: 256 КБ, 8 КБ используется загрузчиком
    • SRAM: 8 КБ
    • EEPROM: 4 КБ
    • Часы Скорость: 16 МГц

    Arduino Mega 2560 — отличный вариант.Нельзя отрицать, что эта плата обеспечивает производительность при работе с ATmega2560, но она также обеспечивает значительное количество контактов ввода-вывода и места для программ.

    Если вы в настоящее время пользуетесь Arduino Uno, возможно, пришло время сделать шаг вперед и взглянуть на Arduino Mega 2560, чтобы получить дополнительный «сок» производительности и выводов ввода-вывода.

    Но подождите,

    Что, если мы скажем вам, что есть еще лучшая версия?

    Seeeduino Mega: более широкий диапазон поддержки

    Если вы думали, что 54 контактов ввода / вывода достаточно, то это еще не все.Seeeduino Mega — это улучшенная версия Arduino Mega 2560, предлагающая в общей сложности 70 контактов ввода / вывода и поддерживающая мощный процессор ATmega2560, 14 PWM, 4 UART.

    Сравнительная таблица:

    Характеристики Ардуино Мега 2560 Seeeduino Mega
    Контакты ввода / вывода 54 70
    ШИМ 14 14
    Аналоговый вывод 16 16
    UART 4 4
    Рабочее напряжение 5V 3.3 В / 5 В (по выбору)
    Размещение кнопки сброса Верх Сторона

    Прочие характеристики:

    • Совместимость с большинством Arduino Duemilanove и Diecimila Shields
    • Выбор работы 5 В / 3,3 В
    • 14 аналоговых входов
    • Малый форм-фактор, на 30% меньше, чем у Arduino Mega
    • Простота программирования, не требуется дополнительное оборудование для загрузки прошивки — просто подключите к USB-порту, и все готово.
    • Заголовок ICSP
    • Может работать от батареи или через адаптер переменного тока в постоянный

    Обзор оборудования:

    Какое у Seeeduino Mega лучшее решение:

    Дополнительные контакты ввода / вывода:

    Еще 16 контактов ввода / вывода в ваше распоряжение.

    Поддержка выбора рабочего напряжения 3,3 В:

    Поддержка рабочего напряжения 3,3 В открывает доступ к большему количеству совместимых модулей / аксессуаров для сопряжения с Seeeduino Mega.

    Лучшее расположение кнопки сброса:

    Боковое расположение кнопки сброса на Seeeduino Mega обеспечивает большее удобство для пользователя по сравнению с верхним расположением кнопки сброса на Arduino Mega 2560.

    Приложения Seeeduino Mega:

    • Интернет вещей
    • DIY
    • Робот
    • Умный дом
    • 3D-принтер
    • Промышленный

    Сводка

    В целом, я рекомендую Seeeduino Mega, поскольку он не только содержит чип ATmega2560, который обеспечивает значительно улучшенную производительность по сравнению с чем-то вроде ATmega328, но и сама плата имеет значительные улучшения по сравнению с версией Arduino.

    Если вы ищете ATmega328, не стесняйтесь проверить мою старую статью

    Следите за нами и ставьте лайки:

    Продолжить чтение

    Atmel butterfly с микропроцессором AVR Mega 169

    Контекст 1

    … не реализован многими производителями сотовых телефонов, поддерживающими этот стандарт. Разные реализации могут привести к проблемам с совместимостью с разными сотовыми телефонами, но этого можно избежать, используя сертифицированные, а не дополнительные библиотеки.Несмотря на некоторые небольшие проблемы с неполной поддержкой некоторых библиотек, J2ME легко переносится, так что любой человек с новым телефоном и нашим домашним сервером может использовать это программное обеспечение для управления своим домом. Разработка Java-приложений также довольно проста с использованием Sun’s [2] studio, которая предназначена для разработки Java-приложений и включает в себя эмулятор, с помощью которого можно тестировать свои Java-приложения на различных виртуальных сотовых телефонах перед тестированием на реальных телефонах. Это некоторые из причин, по которым J2ME был выбран для этого проекта.После того, как было решено, что J2ME будет языком, который будет использоваться для написания сотового приложения, следующим шагом будет выбор сотового телефона для тестирования. Хотя на момент запуска этого проекта на рынке было много сотовых телефонов, Motorola V525 [см. Рис. 2] был одним из единственных телефонов по разумной цене на рынке с J2ME, в которых реализован MIDP 2.0 (профиль мобильного информационного устройства) [см. приложение]. Для выбора этого телефона потребовалось гораздо больше исследований, но это выходит за рамки данной статьи.В этом разделе описываются протоколы и концепции, используемые для управления домом с помощью SMS (Простая система обмена сообщениями) и для предлагаемого, но не реализованного управления домом GPRS (General Packet Radio Service). Протокол SMS позволяет отправлять короткие сообщения практически на любой мобильный телефон с поддержкой SMS в мире. SMS обычно называют текстовыми сообщениями, и они становятся все более популярными, поскольку это недорогой способ передачи небольших объемов информации. Небольшая фиксированная стоимость связи с помощью SMS практически на любой сотовый телефон в мире, а также популярность SMS делают SMS отличным способом управления домашней автоматизацией.SMS был протоколом управления домашней автоматизацией, выбранным для отправки текстовых сообщений в систему домашней автоматизации, в основном из-за небольшой стоимости и ограниченного времени, которое было доступно для исследования GPRS. GPRS имеет много преимуществ по сравнению с системой SMS, но также необходимо преодолеть множество трудностей. GPRS — это протокол, который позволяет сотовым телефонам в сети GSM получать доступ в Интернет. Это открывает целый мир возможностей для сотовых телефонов, поскольку теперь они могут передавать данные куда угодно за относительно небольшие деньги.Использование GPRS в качестве основного протокола связи для домашнего сервера, а не SMS, улучшит систему, поскольку она станет более доступной для других устройств и протоколов через Интернет, а также позволит более доступную передачу данных в сотовой системе. Другое использование GPRS для этого приложения может заключаться в реализации веб-сервера на микроконтроллере, чтобы к дому можно было получить доступ с любых других устройств через Интернет, хотя безопасность должна быть усилена. Основная проблема после исследования использования GPRS на домашнем сервере заключалась в том, что сотовый модем должен активировать свой контекст PDP (протокол пакетных данных), прежде чем ему будет назначен IP-адрес.Проще говоря, сотовому модему не назначается IP-адрес до тех пор, пока он не отправит запрос на подключение к внешнему серверу, и поэтому ему будет предоставлен IP-адрес на лету. Это означает, что, поскольку IP-адрес не назначен, модем не может быть вызван через GPRS. Открытие соединения с внешним сервером в Интернете и направление всех данных на сотовый модем с этого сервера может обойти эту проблему. Затем этот сервер может действовать как маршрутизатор, отправляющий или получающий любую информацию на сотовый модем.Это может свести на нет цель использования микроконтроллера в качестве домашнего сервера для одного пользователя, но если бы он стал коммерческим продуктом, пользователи могли бы заплатить небольшую плату за использование такого сервера. В этом разделе дается схема домашнего сервера, который был разработан, включая описание спроектированного оборудования и программного обеспечения. Первым этапом проектирования домашнего сервера был выбор подходящего микроконтроллера. Требования к микроконтроллеру: порт RS232, достаточное количество выходных цифровых входов / выходов и разумная скорость.Также потребовалось разумное количество EEPROM, чтобы программное обеспечение могло обрабатывать текстовые команды, обеспечивать флэш-память программных данных для хранения состояния устройства, а также имени пользователя и паролей, связанных с входом в систему, чтобы данные не терялись в случае отключения электроэнергии. . Мы выбрали микроконтроллер Atmel AVR Mega 169, который был выбран по вышеуказанным причинам, а также отличный компилятор с открытым исходным кодом, среду и библиотеки, доступные для разработки с AVR. Основным окружением / компилятором, который мы использовали, был winavr (см. Приложение).Это набор инструментов для AVR, включая компилятор C / C ++ и окно среды. AVR Mega 169 также можно приобрести как плату для разработки под кодовым названием Butterfly (см. Рисунок 3). Он имеет встроенные компоненты, такие как ЖК-экран, пьезоэлектрический динамик, термометр и преобразователь напряжения RS232. Чтобы увеличить скорость разработки этого проекта, использовалась бабочка, встроенная в печатную плату, созданную в Altium Protel DXP (см. Рисунок 4). Эта печатная плата содержит (см. Рисунок 5): DB9 для связи и программирования RS232, разъем HD15 для связи с сотовым модемом, светодиодную индикацию простого выхода и драйвер высокого напряжения для управления внешними устройствами через TRIAC или другие приводные устройства.Программирование программного обеспечения для домашнего сервера — одна из важнейших частей этого проекта. Он обрабатывает связь с сотовым модемом и от него, связь с подключенными устройствами, обработку SMS-сообщений, выполнение поиска имени пользователя и пароля в базе данных и, в случае аутентификации, обработку указанных команд, а также отправку ответов на команды. / ошибки или предупреждения, определенные с приоритетом для отправки. Первым этапом программы является настройка всех факторов, относящихся к системе.Первым из них является установка устройства в их последнее состояние перед отключением питания, что выполняется путем сохранения любых изменений состояния устройства на микроконтроллерах на флеш-памяти данных при любом изменении состояния данных, и так система сделана устойчивой к кратковременному отключению электроэнергии. Сотовый модем также должен быть настроен для отправки и получения SMS-сообщений, это делается путем отправки AT-команд, указанных для выполнения этой задачи в соответствии с таблицей данных AT GT48 [см. Приложение], а затем перенаправления на сотовый модем через порт RS232 и ожидание ответа от сотовых модемов.Второй этап программного обеспечения микроконтроллеров — это обработка сообщений заголовка SMS, отправленных на устройство. Сначала устройство должно дождаться отправки текста «+ CMT:» через RS232 от сотового модема, после чего оно проанализирует сообщение (см. Рис. 6), следуя команде, извлекая из него информацию, в том числе: сотовый номер, с которого было отправлено сообщение, дата и время отправки, а также длина текстового сообщения. Длина текстового сообщения затем используется для захвата текстового сообщения целиком, поскольку не указываются конечные символы.Рис. 6. Текстовое сообщение сотового модема, отправленное через сотовый модем GT48. Затем необходимо обработать имя пользователя и пароль, содержащиеся в текстовом сообщении. Это реализовано путем разбора имени пользователя и пароля на переменные. Затем переменная имени пользователя сравнивается с переменными имени пользователя в базе данных и при обнаружении; пароль, связанный с именем пользователя в базе данных, сравнивается с отправленным паролем для проверки его правильности. Если имя пользователя или пароль неверны, сообщение об ошибке отправляется обратно на сотовый телефон, который отправил сообщение.Когда выясняется, что и имя пользователя, и пароль являются правильными, команда затем сравнивается с базой данных команд, чтобы проверить, что это действительная команда, и если обнаруживается, что это действительная команда, команда либо обрабатывается, либо иным образом выводится сообщение об ошибке. возвращается. Чтобы эта система могла управлять устройствами, необходим стандарт команд, которые нужно отправлять для выполнения соответствующих команд. Одна из этих команд — «devSet (device_No: on / off, other_dev)». Эта команда включает или выключает указанный номер устройства в зависимости от команды.Также другая команда «devget =?» Получает все текущие настройки устройства. Это очень упрощенный набор команд, который будет работать для небольшого набора устройств, но требует дальнейшего развития для управления большим количеством устройств различными способами. Чтобы спроектировать приложение, необходимое для удаленного управления домашней автоматикой, сначала оно было начато с рассмотрения примера кода, включенного в студию Sun. Это было полезно при определении формата для разработки кода для J2ME. Я также нашел полезным обратиться к Руководству по дизайну Motorola [4] для J2ME, в котором дан код для отправки SMS через J2ME.Для размещения можно использовать формы приложения, они похожи на веб-формы, но поскольку это небольшой экран, у вас меньше контроля над макетом. После того, как вы создали форму, вы присоединяете к ней дочерние части, например, в этом текстовом поле приложения типа any для имени пользователя и текстовом поле типа пароля для поля пароля. Это создает два текстовых поля в форме: одно типа any, что означает любые символы, и одно поля типа password, которое скрывает все, кроме текущего вводимого символа. Также в форму могут быть добавлены типы команд; они расположены внизу экрана и представляют собой такие команды, как «Выход» и «Отправить».При нажатии соответствующей кнопки запускается функция, связанная с этой кнопкой, например, кнопка «Отправить» отправит SMS-сообщение или кнопка «Выход» уничтожит все объекты и завершит работу. Разработанное приложение (см. Рисунок 7) содержит номер телефона, имя пользователя и пароль в виде текстовых полей. Он также содержит набор флажков для выбора состояния, в которое должны быть переведены устройства. …

    ATMEGA8U2-AU — Microchip — MCU-Application Specific 8 bit, AVR MEGA, 16 MHz

    ATMEGA8U2-AU — это 8-разрядный высокопроизводительный маломощный микроконтроллер AVR на базе RISC, сочетающий в себе флэш-память ISP объемом 8 КБ с возможностями чтения во время записи, EEPROM 512 ГБ, SRAM 512 ГБ, 22 линии ввода-вывода общего назначения, 32 линии общего назначения. целевые рабочие регистры, два гибких таймера / счетчика с режимами сравнения и PWM, USART, программируемый сторожевой таймер с внутренним генератором, последовательный порт SPI, интерфейс debugWIRE для отладки и программирования на кристалле и пять программно выбираемых режимов энергосбережения.Устройство работает от 2,7 до 5,5 В. Выполняя мощные инструкции за один такт, устройство достигает пропускной способности, приближающейся к 1 MIPS на МГц, балансируя энергопотребление и скорость обработки.

    • Расширенная архитектура RISC — полностью статическая работа
    • Энергонезависимая память программ и данных
    • Модуль полноскоростного устройства USB 2.0 с прерыванием по завершении передачи
    • Периферийные функции — Программируемый сторожевой таймер с отдельным встроенным генератором
    • Встроенный интерфейс отладки (debugWIRE)
    • Сброс при включении (POR) и программируемое обнаружение потери напряжения
    • Внутренний калиброванный генератор
    • Внешние и внутренние источники прерываний
    • Пять режимов сна — режим ожидания, энергосбережение, отключение питания, режим ожидания и расширенный режим ожидания
    • 22 программируемых линии ввода / вывода
    • от -40 до + 85 ° C Диапазон рабочих температур в промышленности

    Приложения

    Промышленное, Компьютеры и компьютерная периферия

    Предупреждения

    Рыночный спрос на этот продукт привел к увеличению сроков поставки.Сроки доставки могут отличаться. Товар освобожден от скидок.

    Память AVR — Справка разработчика

    Микроконтроллеры AVR построены с использованием модифицированной Гарвардской архитектуры. Это означает, что пространство флэш-памяти программ находится на отдельной адресной шине, чем статическая оперативная память (SRAM). Есть две шины данных: одна для доступа ко всем данным и шина ввода / вывода с ограниченным доступом к небольшому участку памяти.

    Микроконтроллеры AVR содержат встроенную в систему перепрограммируемую флэш-память для хранения программ.Поскольку все инструкции AVR имеют ширину 16 или 32 бита, флэш-память организована как 32K x 16. В целях безопасности программного обеспечения пространство памяти флэш-программ разделено на две секции — секцию загрузчика и секцию прикладной программы в устройстве. Типичный срок службы флэш-памяти составляет не менее 10 000 циклов записи / стирания. Таблицы констант могут быть размещены во всем адресном пространстве памяти программ с помощью инструкции загрузки памяти программ (LPM). Существует также библиотека функций, облегчающих эту задачу. AVR Libc Library

    .

    Данные электрически стираемая программируемая постоянная память (EEPROM) организована как отдельное пространство данных, в котором можно читать и записывать отдельные байты.Доступ от ЦП к EEPROM осуществляется через регистры адресов EEPROM , регистр данных EEPROM и регистр управления EEPROM . EEPROM выдерживает не менее 100 000 циклов записи / стирания.

    Доступ к данным можно получить через стандартную шину данных . Имеется вторичная шина ввода / вывода для быстрого прямого доступа к выбранным местам.

    Память данных состоит из:

    • Регистры
    • Память ввода / вывода
    • Расширенная память ввода / вывода (зависит от устройства)
    • Внутренняя SRAM

    Регистровое пространство — состоит из 32 рабочих 8-битных регистров общего назначения (R0-R31).

    Память ввода / вывода — содержит адресное пространство для периферийных функций, таких как регистры управления и другие функции ввода / вывода.

    Расширенная память ввода-вывода — Некоторым микроконтроллерам AVR с большим количеством периферийных устройств требуется больше места, чем может адресовать память ввода-вывода, поэтому часть SRAM используется в качестве расширенной памяти ввода-вывода для обработки дополнительных регистров управления периферийными устройствами и других операций ввода-вывода. O функции.

    Внутренняя SRAM (память данных) — используется для временного хранения промежуточных результатов и переменных в программном приложении.

    Существует пять различных режимов адресации шины данных (не вход / выход) для памяти данных:

    • Прямая — Прямая адресация распространяется на все пространство данных.
    • Косвенный — В регистровом файле регистры с R26 по R31 содержат регистры указателя косвенной адресации.
    • Косвенный со смещением — Режим косвенного со смещением достигает 63 адресных ячеек от базового адреса, заданного регистром Y или Z.
    • Косвенный с предварительным декрементом — Адресные регистры X, Y и Z уменьшаются.
    • Косвенный с пост-инкрементом — Адресные регистры X, Y и Z увеличиваются.

    Входная / выходная шина данных

    Эта шина данных имеет прямой доступ к 64-байтовой секции памяти ввода-вывода (не расширенной) с использованием адресов от 0x00 до 0x1F. К этой памяти также можно получить доступ по стандартной шине данных, используя смещение адреса 0x20 в команде доступа.

    Все ячейки ввода / вывода (память ввода / вывода и расширенная память ввода / вывода) могут быть доступны инструкциям сборки LD / LDS / LDD и ST / STS / STD с использованием стандартной шины данных.Данные передаются между 32 рабочими регистрами общего назначения и пространством ввода-вывода.

    Регистры ввода / вывода в диапазоне адресов шины ввода / вывода 0x00-0x1F (память ввода / вывода) имеют прямой битовый доступ с использованием инструкций SBI и CBI. В этих регистрах значение отдельных битов можно проверить с помощью инструкций SBIS и SBIC.

    Три регистра ввода-вывода общего назначения, регистр ввода-вывода общего назначения 0/1/2 (GPIOR 0/1/2) находятся в верхней части памяти ввода-вывода (0x020-0x022). Эти регистры могут использоваться для хранения любой информации, и они особенно полезны для хранения глобальных переменных и флагов состояния.Эти регистры имеют прямой битовый доступ с использованием инструкций SBI, CBI, SBIS и SBIC через шину данных In / Out. Остальные регистры ввода-вывода начинаются после регистров ввода-вывода общего назначения.

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

    Для операции записи старший байт 16-битного регистра должен быть записан перед младшим байтом.Затем старший байт записывается во временный регистр. Когда записывается младший байт 16-битного регистра, временный регистр копируется в старший байт 16-битного регистра в том же тактовом цикле.

    Для операции чтения младший байт 16-битного регистра должен быть прочитан перед старшим байтом. Когда ЦП считывает младший байт регистра, старший байт 16-битного регистра копируется во временный регистр в том же тактовом цикле, что и младший байт.Когда читается старший байт, он затем читается из временного регистра.

    Это гарантирует, что младший и старший байты 16-битных регистров всегда доступны одновременно при чтении или записи регистра.

    Векторы прерывания AVR

    Ниже приведены таблицы прерываний, доступных на микроконтроллерах AVR, используемых в классе. Имя вектора — это идентификатор, который следует использовать в начале процедура обслуживания прерывания (ISR). Например, ISR для вывода ATmega328P Запрос на изменение прерывания 0 будет выглядеть так.

    ISR (PCINT0_vect)
    {
    // код ISR
    
    }
     

    Примечание: имена векторов не всегда одинаковы для одного и того же прерывания. в разных процессорах. Перед написание ISR.

    ATmega328P
    900 7
  • Таймер / счетчик2 9086 совпадение BIIII MER2_COMPB_vect
  • Счетчик Время сравнения TIMER1_COMPA_vect TIMER1_OVF3Comp.
    Номер вектора Определение прерывания Имя вектора
    2 Запрос внешнего прерывания 0 INT0_vect
    3 Запрос внешнего прерывания 1 INT1_vect
    Запрос прерывания по смене пина 0 PCINT0_vect
    5 Запрос прерывания по смене пина 1 PCINT1_vect
    6 Запрос прерывания по смене пина 2 Прерывание тайм-аута сторожевого таймера WDT_vect
    8 Таймер / счетчик2 Сравнить соответствие A TIMER2_COMPA_vect
    9
    10 Переполнение таймера / счетчика2 TIMER2_OVF_vect
    11 Таймер / счетчик1 Событие захвата Сравнить TIMER1_CAPT_86
    13 Таймер / счетчик1 Сравнение совпадений B TIMER1_COMPB_vect
    14 Таймер / счетчик1 Сравнение переполнения TIMER1_OVF3 TIMER0_COMPA_vect
    16 Таймер / счетчик0 Сравнить соответствие B TIMER0_COMPB_vect
    17 Таймер / счетчик0 Переполнение F_vect0 Последовательная передача SPI завершена SPI_STC_vect
    19 USART Rx Complete USART_RX_vect
    20 Регистр данных USART Пустой USART_UDRE_ve Tx Complete USART_TX_vect
    22 Преобразование ADC завершено ADC_vect
    23 EEPROM Ready EE_READY_vect EE_READY_vect EE_READY_vect
    25 Двухпроводной последовательный интерфейс TWI_vect
    26 Сохранение памяти программ для чтения SPM_READY_vect
    ATtiny4313
    9002_COMPA_vect 9002_COMPA_vect

    6 USART_ART_ ct

    9002 Evect Evect Evect M_READY_vect Запрос на изменение пина
    Номер вектора Определение прерывания Имя вектора
    2 Запрос внешнего прерывания 0 INT0_vect
    3 Запрос внешнего прерывания 1 INT1_vect
    Таймер / счетчик1 захват события TIMER1_CAPT_vect
    5 Таймер / счетчик1 Сравнить соответствие A TIMER1_COMPA_vect
    Таймер / счетчик1 Переполн. 7 Таймер / счетчик0 Переполнение TIMER0_OVF_vect
    8 USART Rx Complete USART0_RX_vect
    9 Регистр данных USART пустой
    10 USART Tx Complete USART0_TX_vect
    11 Аналоговый компаратор ANA_COMP_vect
    запрос прерывания изменения контакта
    13 Таймер / счетчик1 Сравнить совпадение B TIMER1_COMPB_vect
    14 Таймер / счетчик0 Сравнить совпадение A TIMER0_COMPA_vect Match Timer Сравнить Таймер TIMER0_COMPB_vect
    16 Условие запуска USI USI_START_vect
    17 Переполнение USI USI_OVERFLOW_vect
    19 Переполнение сторожевого таймера WDT_OVERFLOW_vect
    20 Запрос прерывания смены пина 1 PCINT_A_vect
    ATtiny85
    3 6 ADC_vect 9084 79
  • 6 Таймер сравнения TIMER0_COMPB_vect

    USI_START_vect_vect_vect_vect USI USI_START_vect_vect 86I
    Номер вектора Определение прерывания Имя вектора
    1 Внешний запрос прерывания 0 INT0_vect
    2 Запрос прерывания изменения контакта 0 PCINT0_vect
    Таймер / Счетчик1 Сравнить Соответствие A TIMER1_COMPA_vect
    4 Таймер / Счетчик1 Переполнение TIMER1_OVF_vect
    5 Таймер / Счетчик0 Переполнение
    EEPROM Ready EE_RDY_vect
    7 Аналоговый компаратор ANA_COMP_vect
    8 Преобразование АЦП завершено 9 Таймер / счетчик1 Сравнить соответствие B TIMER1_COMPB_vect
    10 Таймер / счетчик0 Сравнить совпадение A TIMER0_COMPA_vect TIMER0_COMPA_vect
    11
    12 Тайм-аут сторожевого таймера WDT_vect
    13 Условие запуска USI USI_START_vect_vect
    I
    I
    I

    AvrFreaks | Сообщество Атмель

    Новые комментарии Проблема с загрузкой скетчей с Raspberry Pi на ATmega328 через USB

    Автор: Pygmalion, четверг, 2 сентября 2021 г. — 19:48

    megaAVR и tinyAVR 24 Проблема с загрузкой скетчей с Raspberry Pi на ATmega328 через USB

    Автор: Pygmalion, четверг, 2 сентября 2021 г. — 19:48

    Комментарий от Pygmalion, четверг, 2 сентября 2021 г. — 20:15
    megaAVR и tinyAVR
    Новые комментарии [I2C] Atmega32 с DS1307 не читает

    Автор: epyczen, понедельник, 23 августа 2021 г. — 13:12

    megaAVR и tinyAVR 683 [I2C] Atmega32 с DS1307 не читает

    Автор: epyczen в понедельник, 23 августа 2021 г. — 13:12

    Комментарий от ki0bk в четверг, 2 сентября 2021 г. — 19:22
    megaAVR и tinyAVR
    Горячая тема, новые комментарии Будет работать 16МГц.

    Размещено S_K_U_N_X в четверг, 2 сентября 2021 г., 01:51

    Компиляторы и общее программирование 195 Будет работать 16МГц.

    Автор S_K_U_N_X в четверг, 2 сентября 2021 г. — 01:51

    Комментарий от gchapman в четверг, 2 сентября 2021 г. — 18:23
    Компиляторы и общее программирование
    Новые комментарии SMBus между Atmega328 и MLX

    Автор: Tkay61 в четверг, 2 сентября 2021 г., 14:49

    megaAVR и tinyAVR 22 SMBus между Atmega328 и MLX

    Автор: Tkay61 в четверг, 2 сентября 2021 г. — 14:49

    Комментарий от ki0bk в четверг, 2 сентября 2021 г. — 18:14
    megaAVR и tinyAVR
    Новые комментарии Скоростно-монотонное планирование

    Автор rahulk7 в четверг, 2 сентября 2021 г. — 13:58

    Общая электроника 55 Скоростно-монотонное планирование

    Автор rahulk7 в четверг, 2 сентября 2021 — 13:58

    Комментарий от awneil в четверг, 2 сентября 2021 — 17:48
    Общая электроника
    Новые комментарии Почему недавно установленная Studio7 не может найти avr / io.h файл?

    Автор: FredCailloux, понедельник, 30 августа 2021 г., 01:35

    Atmel Studio (для AVR) 313 Почему недавно установленная Studio7 не может найти avr / io.h файл?

    Автор: FredCailloux, понедельник, 30 августа 2021 г. — 01:35

    Комментарий: FredCailloux, четверг, 2 сентября 2021 г. — 17:23
    Atmel Studio (для AVR)
    Новые комментарии Ошибка записи в EEPROM с avr32da48

    Автор: alxxxx, пятница, 26 марта 2021 г. — 17:13

    AVR и XMEGA 582 Ошибка записи в EEPROM с avr32da48

    Автор: alxxxx в пятницу, 26 марта 2021 г. — 17:13

    Комментарий от alxxxx в четверг, 2 сентября 2021 г. — 16:39
    AVR и XMEGA
    Новые комментарии Проблемы с анализатором AVR при многопроцессорной связи через USART

    Автор: Dave_Zeb.в среду, 1 сентября 2021 года — 12:21

    AVR и XMEGA 167 Проблемы с анализатором AVR при многопроцессорной связи через USART

    Автор: Dave_Zeb.в среду, 1 сентября 2021 г. — 12:21

    Комментирует ki0bk в четверг, 2 сентября 2021 г. — 12:56
    AVR и XMEGA
    Новые комментарии AVR2054 Bootloader PC tool

    Автор: PradeepPatel в среду, 1 сентября 2021 — 05:19

    Внутрисистемные отладчики и программисты 129 AVR2054 Bootloader PC tool

    Автор: PradeepPatel в среду, 1 сентября 2021 г. — 05:19

    Комментарий от PradeepPatel в четверг, 2 сентября 2021 г. — 11:33
    Внутрисистемные отладчики и программисты
    Новые комментарии Хранение и получение информации

    Автор: Брайан Фэйрчайлд, понедельник, 30 августа 2021 г., 08:03

    Общая электроника 292 Хранение и получение информации

    Автор: Брайан Фэйрчайлд в понедельник, 30 августа 2021 г. — 08:03

    Комментарий: gchapman, четверг, 2 сентября 2021 г. — 10:53
    Общая электроника
    Новые комментарии Проблемы с чтением двух каналов АЦП в ATMEGA 328 и ATMEGA 32

    Автор: boberst, среда, 1 сентября 2021 г. — 17:24

    megaAVR и tinyAVR 85 Проблемы с чтением двух каналов ADC в ATMEGA 328 и ATMEGA 32

    Автор: boberst, среда, 1 сентября 2021 г. — 17:24,

    Комментарий clawson, четверг, 2 сентября 2021 г., 10:04
    megaAVR и tinyAVR
    Новые комментарии Ресурс ATTiny C ++ об ограничениях

    Автор: _ari, вторник, 31 августа 2021 г., 17:42

    megaAVR и tinyAVR 245 Ресурс ATTiny C ++ по ограничениям

    Автор _ari во вторник, 31 августа 2021 г. — 17:42

    Комментарий от clawson в четверг, 2 сентября 2021 г. — 09:17
    megaAVR и tinyAVR
    Новые комментарии Комплект отладчика ATATMEL ICE — проблема отладки

    Автор: rnd @ microsetindia.com, понедельник, 30 августа 2021 г. — 13:46

    Комплекты для оценки и разработки (связанные с AVR) 314 Комплект отладчика ATATMEL ICE — проблема отладки

    Автор: rnd @ microsetindia.com в понедельник, 30 августа 2021 г. — 13:46

    Комментарий от [email protected] в четверг, 2 сентября 2021 г. — 05:09
    Комплекты для оценки и разработки (связанные с AVR)
    Новые комментарии проект хорошо работает в течение нескольких минут.

    Автор: Д.Денн, воскресенье, 29 августа 2021-19: 57

    megaAVR и tinyAVR 624 проект хорошо работает в течение нескольких минут.

    Автор: Д.Денн, воскресенье, 29 августа 2021-19: 57

    Комментарий: js, четверг, 2 сентября 2021, 04:53
    megaAVR и tinyAVR
    Новые комментарии Переключатель трансформатор-батарея ATMEGA328p

    Автор jorgedro в среду, 1 сентября 2021-14: 22

    AVR и XMEGA 110 Переключатель трансформатор-батарея ATMEGA328p

    Размещено jorgedro в среду, 1 сентября 2021-14: 22

    Комментарий ka7ehk в среду, 1 сентября 2021-2021 20:28
    AVR и XMEGA
    Новые комментарии Linear Tech и Maxim теперь вместе

    Автор avrcandies в среду, 1 сентября 2021 — 16:08

    Общая электроника 124 Linear Tech и Maxim теперь вместе

    Автор avrcandies, среда, 1 сентября 2021 — 16:08

    Комментарий gchapman, среда, 1 сентября 2021 — 19:07
    Общая электроника
    Новые комментарии Это хорошая стратегия для нескольких устройств и датчиков?

    Размещено Godesroh во вторник, 31 августа 2021-14: 49

    Общая электроника 269 ​​ Это хорошая стратегия для нескольких устройств и датчиков?

    Автор Godesroh, вторник, 31 августа 2021-14: 49

    Комментирует Jeckson, среда, 1 сентября 2021-14: 53
    Общая электроника
    Новые комментарии ATtiny816 отключить QTouch для измерения АЦП

    Автор s_powers в среду, 1 сентября 2021 г. — 13:12

    megaAVR и tinyAVR 59 ATtiny816 отключить QTouch для измерения АЦП

    Автор s_powers в среду, 1 сентября 2021-13: 12

    Комментарий kabasan в среду, 1 сентября 2021-14: 28
    megaAVR и tinyAVR
    Новые комментарии ATtiny1616 — CCL, TCD0, AC0, TCB0 — проблема совместимости

    Автор snoopy33 во вторник, 31 августа 2021 г. — 16:18

    megaAVR и tinyAVR 131 ATtiny1616 — CCL, TCD0, AC0, TCB0 — ошибка взаимодействия

    Автор snoopy33 во вторник, 31 августа 2021 г. — 16:18

    Комментарий от snoopy33 в среду, 1 сентября 2021 г. — 13:03
    megaAVR и tinyAVR
    Новые комментарии EEPROM пишет на AVRxxDA

    Автор: Bikeprincess_ в среду, 1 сентября 2021 г. — 09:21

    AVR и XMEGA 99 Запись в EEPROM на AVRxxDA

    Автор Bikeprincess_ в среду, 1 сентября 2021 г. — 09:21

    Комментарий от clawson в среду, 1 сентября 2021 г. — 11:41
    AVR и XMEGA
    Новые комментарии AVR-Studio 4.18SP3 и avr-size

    Автор spencerone, вторник, 1 февраля 2011 г. — 17:31

    Atmel Studio (для AVR) 4 364 AVR-Studio 4.18SP3 и avr-size

    Автор spencerone во вторник, 1 февраля 2011 г. — 17:31

    Комментирует clawson, среда, 1 сентября 2021 г. — 08:57
    Atmel Studio (для AVR)
    Новые комментарии LUFA & RNDIS, вопрос

    Автор: hneel, вторник, 31 августа 2021 г., 11:30

    megaAVR и tinyAVR 135 LUFA & RNDIS вопрос

    Опубликовано hneel во вторник, 31 августа 2021 г. — 11:30

    Комментарий clawson в среду, 1 сентября 2021 г. — 08:20
    megaAVR и tinyAVR
    Новые комментарии XMEGA128, Как адресовать флеш-память за пределом 64 КБ

    Написал mccrtay во вторник, 31 августа 2021-14: 15

    AVR и XMEGA 131 XMEGA128, Как адресовать флеш-память за пределом 64 КБ

    Автор: mccrtay во вторник, 31 августа 2021-14: 15

    Комментарий mccrtay, среда, 1 сентября 2021 — 06:56
    AVR и XMEGA
    Новые комментарии USART2 XDIR отсутствует на Mega4809?

    Размещено ka7ehk во вторник, 31 августа 2021 г. — 19:30

    AVR и XMEGA 113 USART2 XDIR отсутствует на Mega4809?

    Автор ka7ehk, вторник, 31 августа 2021 г. — 19:30

    Комментирует ka7ehk, среда, 1 сентября 2021 г. — 06:45
    AVR и XMEGA
    Новые комментарии Невозможно получить прерывания для работы на attiny814

    Автор: PrinsValium, вторник, 31 августа 2021 г.

    alexxlab

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

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