350 likes | 600 Views
Мікроконтролери AVR. Лекція 9 Судаков О.О, Радченко С.П. « Сучасна мікропроцесорна техніка ». Сімейство мікроконтролер ів AVR. AT tiny – 8 розрядн і Малий набір перифер ії Малий набір інструкцій Мала ціна Малий об ’ єм пам ’ ят і для програм 0.5–16 kB ATMega – 8 розрядні
E N D
Мікроконтролери AVR Лекція 9 Судаков О.О, Радченко С.П. «Сучасна мікропроцесорна техніка»
Сімейство мікроконтролерів AVR • ATtiny – 8 розрядні • Малий набірпериферії • Малий набір інструкцій • Мала ціна • Малий об’єм пам’яті для програм 0.5–16 kB • ATMega– 8 розрядні • Розширений набірпериферії • Розширений набір інструкцій (множення) • Вища ціна • Збільшений об’єм пам’яті для програм 4–512 kB • XMEGA– 8 розрядні • Розширений набір функцій • Висока продуктивність • AVR 32 • ARM процесори не сумісні з AVR
Особливості AVR • Гарвардська архітектура • Виконуваний код – лише flash пам’ять • Даны, які зміються - лише оперативна пам’ять (SRAM) • Переваги – паралельний доступ до пам’яті і даних – висока швидкодія • Недоліки - неефективне перепрограмування і збереження результатів роботи програми • Напруги живлення • 1.8 – 5.5 В • Максимальна тактова частота • 1.8 В - 4 МГц • 2.7 В – 10 МГц • 4.5 В – 20 МГц • Розрядність • Даних -8 • Адреса 16 розрядів • Відносно низьке енергоспоживання • Активний режим ~200 мкА при частоті 1 МГц • Режим енергозбереження < 1мкА
Компоненти • Тактові генератори • Процесор • Пам’ять • Flash, EEPROM, SRAM • Окремі простори адрес • GPIO • Порти D,B,C • Таймери • 8-розрядні • 16-розрядний • вартовий • Послідовні шини • SPI • USART • I2C (TWI) • АЦП • 10 розрядів • 8-6 каналів • Контроль живлення
Процесор • Велика кількість регістрів загального призначення • 32 8-розрядних регістра • 6 із них = 3 16- розрядних • 8-розрядний ALU • Більшість операцій за 1 такт
Регістри процесора • Всі регістри відображені на оперативну пам’ять • Звертання до регістра = звертання до пам’яті • Однакові асемблерні команди • Короткі інструкції • 32 8-розрядних регістра • 8біт XL,XH,YL,YH,ZL,ZH = 16 біт X,Y,Z • Регістр стану • Вказівник стеку … Регістр стану (SREG) T-temporary V-overflow C-перенесення H-напівперенесення …. Регістри стеку
Виконання команд • Переваги гарвардської архітектури • Лише читання пам’яті команд (запису немає) • Конвеєрне виконання • Поки одна команда читається інша виконується • ALU • За 1 такт виконується • Читання регістрів • Виконання • Запис в регістри
Пам’ять • Гарвардська архітектура • 2 (або 3) окремих області пам’яті • SRAM – для оперативного збереження даних • FLASH – для постійного збереження даних і програм • (EEPROM – для постійного збереження даних під час вимкнення або перезапису FLASH) • Кожна область – окремий простір адрес • Адреса 0x000 FLASH це не адреса 0x000 SRAM • Виконання комад – тільки з FLASH • Всі області пам’яті плоскі (flat) • Не розбиті на сторінки (сегменти) • Для адрес пам’яті достатньо одного 16-розрядного регістра (11-14 біт)
FLASH пам’ять • Для читання і виконання інструкцій • Програмний код • Програмні дані (постійні) • Обробники переривань • 2 області • Програма (Application) • Завантажувач (Boot) • Для зручності перепрограмування • Кожна програмна інструкція • 16-32 біт • Для запису спеціальні машинні інструкції (LPM,SPM)
Оперативна пам’ять • Для оперативного запису-читання даних • Регістри процесора • Регістри периферії • Стек • Оперативні дані • Немає виконуваного коду • Читання/запис – 2 такти • По 8 біт кожна операція
Особливості адресації пам’яті • Команди, переходи, функції, дані в програмі • Адреси у флеш-пам’яті • Доступ – 16 розрядів з кроком 2 адреси • Час доступу – 1 такт до 16 бітів • Всі оперативні дані, стек, • Адреси оперативної пам’яті • Доступ – 8 бітів з кроком 1 адреса • Час доступу 2 такти • Зарезервовані адреси пам’яті <0x60 • Регістри загального призначення • Регістри вводу-виводу (IO) • Час доступу 1 такт (IN, OUT) • Виконання доступу до даних • Безпосереднє завантаження (LDI) – 1такт • Пересилка з регістра в регістр (MOV)-1такт • Непряма (регістрова) адресація SRAM -2 такти • Непряма (регістрова) адресація FLASH -3 такти • Індексна з інкрементом/декрементом -2 такти • Виклик функцій (прямий.непрямий) – 3 такти • Повернення з функцій – 4 такти
Запис флеш-пам’яті (до 10000 разів) • Процедура • Запис даних у SRAM • Стирання області FLASH • Запис області SRAMу FLASH • Запис сторінками • 32-64 слова • Є області • Read-While-Write • NonRead-While-Write • Програма • Звантажувач • Спеціальні регістри
Обробники переривань • На початку FLASH • Чим менший номер, тим вищий пріоритет • Кожен вектор • 2(іноді 1 байт) • Обробка переривань – завдання програми …….. …
Біти FUSE • Ще одна область Flash • Не відображається на програмну область • Фактично інша пам’ять з 1 коміркою 16 розрядів • Біти вмикають/вимикають рызны режими роботи мікроконтролера • Внутрішній-зовнішній RC генератор • Вибір тактового генератора для процесора • Дозвіл/заборона налагодження • … • Запис-читання • Запис лише через JTAG • Читання можливе в програмі
Периферія • Тактові генератори • 2-3 внутрішніх • зовнішні • GPIO • 3-4 порти A,B,C,D • 8 розрядів • Таймери-лічильники • 2-3 таймера • 8-16 розрядів з PWM • Аналоговий компараптор • 1 канал, 8 комутованих входів • АЦП • 1 канал, 10 розрядів, 6 комутованих входів • Послідовні шини • USART,SPI,I2C • debugWIRE
Системні годинники • Різні пристрої мають свої джерела тактування • Процесор (clkCPU) • Flash (clkFLASH) • Периферія (clkI/O) • Асинхронний (clkASY) • АЦП (clkADC) • Різні системні годинники тактуються різними генераторами • Внутрішній RC 128 кГц • Внутрішній RC 1-8МГц • Кварцевий НЧ • Зовнішні
Керування тактовими генераторами • Дозвіл і підключення до пристроїв, коефіцієнт поділу • Fuse біти • На етапі прошивки • Запуск-зупинка • Під час роботи програми • Перериваннями • Калібровка • Під час роботи програми • Спеціальний регістр
Ввімкнення і виконання програми • Ввімкнення • Виконання з адреси RESET вектора (0000) • RESET вектор можна перемкнути на область завантажувача • RESET • При ввімкненні • При втраті або низькому живленні • Коли спрацьовує Watchdog • При подачі сигналів на “ніжку”reset • Виконання • Зчитує послідовно і виконуэ команди поки не зупиниться • Переривання • Перериває зупинку, або код і виконує обробник переривань • Джерелом може бути периферія
Режими низького енергоспоживання Спеціальні регістри керування SMCR – sleep mode control MCUCR PRR – power reduction register
GPIO • Декілька портів вводу-виводу • A,B,C,D • Кожен порт 8 розрядів • Можна підключати “ніжки” до бітів портів • Кожен біт може бути на ввід або вивід • Можна підключати-відключати підтягуючі резистори (тільки до живлення) • Можна дозволяти забороняти переривання по кожному піну
Підключення портів і резисторів • Регістри • DDxn (x=A,B,C,D - порти n=0-7 біти) ввід чи вивід • PORTxn – вивід (0 чи 1) • PUD глобальний дозвіл підтягуючих резисторів • PIN – введення
Читання порту • Регістри PINxn • Наприклад PINB1 – біт 1 порта B • Запис в регістр - по спаду такта • Виконання інструкції – по фронту такта • Мінімальна затримка – 0.5 такта • Максимальна затримка – 1.5 такта • Після запису перед читанням – необхідно почекати 1 такт • 1 nop інструкція
Переривання GPIO • Деякі виводи деяких потів можуть бути джерелами переривань • Зовнішні переривання INT0,INT1 • По 0, по фронту, спаду, зміні • регістр EICRA умова і сигнал – що викликало • Регістр EIMSK маскування переривань • Регістр EIFR прапорці яке з пепреривань було • По зміні рівня на “ніжці” PCINT0-23 • PCICR – дозвіл для портів B,C,D (3 біта) • PCIFR – по якому порту було переривання B,C,D (3 біта) • PCMSK1,PCMSK2 – маскування переривань (24 біта) • 2 обробника переривань (для INT і для PCINT) • Переривання будуть і коли порт на IN і на OUT
Вибір функцій “ніжок” • За замовченням ніжки підключені до портів GPIO • Після ввімкнення • Переривання GPIO дозволяються, коли порти в режиміGPIO і сконфігуровані переривання • Ввімкнення альтернативних функцій вимикає GPIO і вмикає альтернативну функцію • Таймер • АЦП • Компаратор
Таймери Таймер-лічник Джерела тактування Лічильник Джерела Захоплення • Типи таймерів • Timer0 • 8 біт • Внутрішнє, або зовнішнє джерело тактування • Режим порівняння (два регістри) • Виведення ШІМ • Timer1 • 16 біт • Внутрішнє, або зовнішнє джерело тактування • Режим порівняння (два регістри) • Виведення ШІМ • Режим захоплення • Timer2 • Як Timer0 • Внутрішнє джерело тактування, або власний тактовий генератор Регістри захоплення Регістри порівняння переривання Вихід ШІМ
Джерела тактування таймерів • Таймер рахує тактові імпульси, які надходять • Подільник частоти 1(prescaler 1) для timer0і timer1 • Ділення на 8,64,256,1024 • Інший подільник частоти для timer2 • Ділення на 8,32,64,128,256,1024 • Кожен таймер може мати свій коефіцієнт поділу • Зовнішнє джерело • Подільники тактуються • системним годинником • Зовнішнє джерело • Частота не ділиться
Регістри таймерів • Значення лічильника таймера • TCNT0 (8 біт),TCNT1(16 біт),TCNT2(8 біт) • Кількість нарахованих імпульсів • Регістри порівняння • OCR0A,OCR0B(8 біт), OCR1A,OCR1B (16 біт), OCR2A,OCR2B(8 біт) • Значення з якими порівнюється лічильник • Регістри переривань • TIMSK[0,1,2] – маскування переривань • TIFR[0,1,2] – прапорці наявності переривань (преповнення, захоплення, порівняння) • Регістри захоплення • ICR1 (16 біт) • Регістри керування • TCCR[0,1,2]ATCCR[0,1,2]B • При ввімкненні таймера порти переходять в режим виводу таймера
OC flag Режими таймерів • Normal • БітиWGM02:0=0 • Рахуємо до максимуму і переходимо в нуль • Переривання по переповненню TOV • Clear on Compare • БітиWGM02:0=2 • Рахуємо до CCR[0,1,2]Aі переходимо в нуль • Переривання по порівнянню OCF[0,1,2]A • Fast PWM • БітиWGM02:0=3,7 • Fhase correct PWM • БітиWGM02:0=1,5
Вихідні сигнали таймерів • Коли таймер дорахував до значень в регістрах OCR*AтаOCR*B • Вмикаються високий або низький рівні на «ніжках» виходу таймера • Генерується переривання по порівнянню OCF*AабоOCF*B • Режими виводу регулюється бітами COM*A1,COM*A2,COM*B1,COM*B2 • Наприклад COM0A1=1,COM0A2=0 перемкнути вихід OCA0 • Див. документацію
Генерація ШІМ Скважність (OCRA+1)/256 0 – 1 імпульс 256 – постійне значення • Приклад Fast PWM • Записати необхідні біти в регістрах керування • В обробнику переривання по переповненню змінювати регістр OCRA
Режим захоплення (timer1) • Встановлення джерела захоплення • Компаратор • Зовнішній вивід • Спеціальні біти в регістрах інших пристроїв • По фронту чи по спаду сигнала • Значення таймера копіюється спеціальний регістр • ICR1 • Генерується переривання • Прапорець ICF1 • Потрібно зберегти інформацію про результат захоплення • Вимірювання часових інтервалів
Компаратор • Порівняння значень на 2-х ніжках • AIN0>AIN1біт ACOвстановлений • Замість AINT1можна включати AD0-AD7 (регістр ADMUX) • При переремиканні може генеруватись переривання (фронт, спад, перермикання) • Може бути джерелом захоплення timer1 • Підключення внутрішнього джерела опорної напруги • Регістри • ADSRB,ACSR,DIDR1, ADMUX
АЦП • 10-бітне перетворення сигналу на вході • 1023*U/Uref • Опорна напруга Uref – вхід Aref, 1.1 В, Vcc • Вхід – один з виводів AD0-AD7 (регістр ADMUX) • Результат 2 регістраADCH ADCL • Запуск – біт ADSC=1 в регістрі ADCSRA • Постійний самозапуск ADATE=1 • Після завершення • Генерується переривання • Встановлюється прапорець ADIF • Тактова частота (50-200кГц) • Подільник встановлюється бітами ADPS • Вища частота – нижча точність • Час переретворення 13-25 тактів
Висновки • Переваги AVR • Потужна периферія • Швидкість • Прості інтерфейси • Популярність • Недоліки AVR • 8 розрядність – складність для 16-розрядних операцій • Великий набір команд • Мала кількість режимів