33
Особливості роботи мікроконтролерів Лекція 7 Судаков О.О, Радченко С.П. «Сучасна мікропроцесорна техніка»

Особливості роботи мікроконтролерів

  • Upload
    ciel

  • View
    91

  • Download
    3

Embed Size (px)

DESCRIPTION

Особливості роботи мікроконтролерів. Лекція 7 Судаков О.О, Радченко С.П. « Сучасна мікропроцесорна техніка ». Особливості застосування MCU. Застосування процесора Тактова частота Опитування Переривання Зупинка, очікування Застосування периферії Генератори GPIO Таймери Компаратори - PowerPoint PPT Presentation

Citation preview

Page 1: Особливості роботи мікроконтролерів

Особливості роботи мікроконтролерів

Лекція 7

Судаков О.О, Радченко С.П. «Сучасна мікропроцесорна техніка»

Page 2: Особливості роботи мікроконтролерів

Особливості застосування MCU Застосування процесора

Тактова частота Опитування Переривання Зупинка, очікування

Застосування периферії Генератори GPIO Таймери Компаратори АЦП

Режими роботи мікроконтролерів Максимально допустимі параметри Енергозбереження

Page 3: Особливості роботи мікроконтролерів

Тактові генератори Мікроконтролер може мати декілька тактових генераторів з різною

частотою, стабільністю, енергоспоживанням RC високочастоний (~104-108 Гц) RC низькочастотний (~до 104 Гц) Кварцевий високочастоний (~104-106 Гц) Кварцевий низькочастотний (~до 104 Гц)

Тактові генератори можуть приєднуватись до різних системних годинників Головний, Допоміжний, Периферійний… Системний годинник видає тактовий сигнал

Різні системні годинники можуть тактувати різні пристрої мікроконтролера Процесор, Таймер, АЦП …

Різні системні годинники можуть ділити частоту генератора в певні кількість разів 1,2,4,8,16 …

Генератор1

Генератор2

Генератор3

Тактовий сигнал1

Тактовий сигнал2

Тактовий сигнал3Генератор4

Пристрій 1

Пристрій 2

Пристрій 3

Page 4: Особливості роботи мікроконтролерів

Керування тактовими сигналами Ввімкнення/вимкнення тактових

генераторів Зміна частоти тактових генераторів Підключення тактових генераторів до

системних годинників Зміна коефіцієнтів поділу системних

годинників Кеування синхронізацією генераторів Є спеціальні регістри керування, які

відображаються на пам’ять процесора

Page 5: Особливості роботи мікроконтролерів

Зміна тактової частоти В широких межах

Зміна резистора чи конденсатора RC генератора

В вузьких межах Підстроювання генератора керованого

напругою Точне підстроювання

Модуляція Утримання частоти

Автопідстроювання

Page 6: Особливості роботи мікроконтролерів

Модуляція Генератор по черзі

перемикається між вищою і нижчою частотою N-кількість рівнів

квантування частоти nhig –скільки разів

включали високу частоту

tlow – період низької частоти

thigh – період високої частоти

t – період змішаної частоти Нижча частота Вища частота

high highlow high

N n nt t t

N N

nhig N=32

Page 7: Особливості роботи мікроконтролерів

Підстроювання Рахують кількість імпульсів

нестабільного генератора за період стабільного Кількість імпульсів менша –

збільшити частоту Кількість імпульсів більша-

зменшити частоту Коли частоти високі

підстроюють f1/M під f2/N

Чим більше відношення частот – тим точніше підстроювання Nhigh=fhigh/flow

Стабільний кварцевий генератор низької частоти

Нестабільний генератор високої частоти

Лічильник імпільсів

Опорна (референтна)частотаСтарт-стоп

такт

Керуваннячастотою

2 2

high low lowf Nf N f 2 2

0.25high low low

high high low

f f f

f f f

Page 8: Особливості роботи мікроконтролерів

Синхронізація і порівняння фази Синхронізація – коли одна система

знаходиться в якомусь одному стані, інша система знаходиться в якомусь одному стані

Генератор запускається, коли синхросигнал в певному стані

Оцінка фази Рахуємо кількість імпульсів тактового

генератора за період N Фаза – кількість імпульсів, які пораховано n

Page 9: Особливості роботи мікроконтролерів

Тактова частота процесора Процесор можна приєднати до різних тактових генераторів Різні команди мають різну кількість тактів

1-6 як правило Процесор виконує команди у декілька разів повільніше, ніж

тактова частота Приклад затримка за допомогою цикла while(i--); Машинний код

loop: dec R1 // 1такт jnz loop; // 2 такта

Затримка на i*3/Fтакт секунд Продуктивність

Кількість операцій в одиницю часу Затримки (латентність)

Час між подією і реакцією на неї

Page 10: Особливості роботи мікроконтролерів

Параметри тактового генератора Максимальна тактова частота Діапазон перебудови частоти Час ввімкнення після «сну» Тривалість фронту імпульсу Скважність імпульсів (duty cycle)

Тривалість імпульсу/період

Page 11: Особливості роботи мікроконтролерів

Процесор в режимі опитування Періодично зчитує значення із регістрів

периферії і реагує на події while(1){ //вічний цикл

while (!подія1 || !подія2||..){ дії не пов’язані з подіями Відкладені дії

} if(подія1) {виконати, або відкласти} if(подія2) {виконати, або відкласти} …

} Найбільша продуктивність Великі затримки

Page 12: Особливості роботи мікроконтролерів

Процесор в режимі переивань Реєcтруються функції, які виконуються при настанні події Функції виконуються коли подія наступає register_interrupt(подія,обробник) enable_interrupt() while(1){

Якість дії, часто зупинка процесора } … обробник(){

Виконати обробку події, часто просто вийти з режиму сну

Іноді зареєструвати відкладений обробник події } Малі затримки, мала продуктивність

Page 13: Особливості роботи мікроконтролерів

GPIO – Цифрове введення-виведення Виведення - перемикання високого чи низького рівня на

виводах мікросхеми Введення – визначення високого чи низького рівня на

виводах мікросхеми Операції

Підключення/відключення порта GPIO до виводів мікросхеми Переведення порту в режим введення/виведення

Виведення Запис 1 чи 0 в порт – на виводі встановиться висока чи низька

напруга Введення

Зчитування поточного рівня напруги на виводі мікросхеми - порт буде містити 1 чи 0

Дозвіл/заборона резистора підтягування Підключення підтягуючого резистора (до 1 чи 0) Дозвіл/заборона переривань Зчитування прапорця переривання

Реалізація обробника переривання

Page 14: Особливості роботи мікроконтролерів

Підключення портів до виводів Спеціальні регістри вибору периферії

Наприклад P1SEL.x P1SEL2.x Кожен біт відповідає виводу Запис комбінації бітів підключає порти до

виводів Приклад

P1SEL=0x00; P1SEL2=0x00; Підключили всі виводи до портів GPIO Як правило за замовчанням так і є

Page 15: Особливості роботи мікроконтролерів

Переведення портів в режим вводу/виводу Є спеціальні регістри вибору режиму

Наприклад P1DIR.x Кожен біт – вибір режиму відповідного порту

0 – введення 1 - виведення

Приклад «Ніжка» P1.0 в режимі вводу, всі інші в режимі виводу

P1DIR=11111110b;

Краще виводи, які не використовуються превести в режим виводу, щоб не було наведень

Page 16: Особливості роботи мікроконтролерів

Запис значень в порти вводу-виводу Є спеціальний регістр запису в порт

Наприклад P1OUT.x Запис 0 або 1 переводить відповідний пін у низький, або

високий рівень Приклад – керування світлодіодом

На виводі, який відповідає порту P1.0 – світлодіод P1DIR=0xff; //тільки виведення P1OUT|=00000001b ;// вмикаємо лише P1.0 P1OUT&=00000001b ;// вимикаємо лише P1.0 P1OUT^=BIT1; // змінюємо лише P1.0 на протилежне

Page 17: Особливості роботи мікроконтролерів

Застосування GPIO виводу Керування зовнішніми

пристроями Вмикання світлодіодів Керування індикатором Керування кроковим

двигуном Синхронні шини

передачі SPI,I2C

void loop() { digitalWrite(motorPin1, HIGH); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, LOW); delay(delayTime); digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, HIGH); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, LOW); delay(delayTime); digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, HIGH); digitalWrite(motorPin4, LOW); delay(delayTime); digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, HIGH); delay(delayTime);}

Page 18: Особливості роботи мікроконтролерів

Читання портів вводу-виводу Є спеціальний регістр читання порту

Наприклад P1IN.x При зміні значення напруги на виводі

змінюється значення в регістрі Приклад

Читання стану кнопки на виводі P1.3 Замкнута – 0, Розімкнута – 1

P1DIR=11110111b; //порт 3 введення while(P1IN & BIT3);//чекаємо події дії по натисненню кнопки

Page 19: Особливості роботи мікроконтролерів

Підтягуючий резистор Порт в режимі введення повинен бути до чогось підключений

Якщо не підключений – будуть наводки стан не визначений Підтягуючий (pull-up, pull-down) резистор – примусове

підключення до 1 або 0 через резистор 10ком-100ком Є спеціальний гегістр

Наприклад P1REN.x Запис 1 – резистор підключений 0 - вимкнений

Є спеціальний регістр Наприклад P1OUT.x Запис 1 – pull-up, 0 – pull-down

Приклад за замовченням на піні кнопки високий рівень P1DIR=11110111b; //порт 3 введення P1REN=00001000b; //порт 3 резистор ввімкнено P1OUT|=00001000b; //порт 3 pull-up

Page 20: Особливості роботи мікроконтролерів

Використання переривань GPIO Введення – невідомо коли відбувається Переривання зручний спосіб реагування н події Керування

Весь порт (всі біти) обробляються одним обробником Необхідно зареєструвати обробник

Переривання повинны бути дозволены глобально Наприклад команда INTE

Необхідно дозволити переривання по GPIO Спеціальний регістр наприклад P1IE

Необхідно встановити перериваня по фронту, чи по спаду Спеціальний регістр P1ES (Edge select)

1-спад (зверху вниз) 0-фронт (знизу вверх) Є спеціальний регістр для визначення джерела переривання

Наприклад P1IFG 1 – було переривання, 0 – не було Після обробки біти цього регістра треба очищати

Page 21: Особливості роботи мікроконтролерів

Застосування переривань GPIOint main( void )

{ P1DIR &= ~BIT3; P1REN |= BIT3; P1OUT |= BIT3; P1IES |= BIT3; P1IFG &= ~BIT3; P1IE |= BIT3; //led P1DIR |= BIT0; P1OUT &= ~BIT0; while(1){ if(P1IFG&BIT3){ P1OUT^=BIT0; P1IFG &= ~BIT3; } }

int main( void ){ P1DIR &= ~BIT3; P1REN |= BIT3; P1OUT |= BIT3; P1IES |= BIT3; P1IFG &= ~BIT3; P1IE |= BIT3; //led P1DIR |= BIT0; P1OUT &= ~BIT0; } __bis_SR_register(LPM4_bits+GIE); return 0;}#pragma vector=PORT1_VECTOR__interrupt void port1_interrupt(void){ P1IFG &= ~BIT3; P1OUT^=BIT0;}

Page 22: Особливості роботи мікроконтролерів

Коли не вистачає «ніжок» Заміна паралельного введення

виведення на послідовний Приклад: опитування

клавіатури Запис 1,0,0 на виводи 1,2,3 Очикування вводу Запис 0,1,0 на виводи 1,2,3 Очикування вводу Запис 0,0,1 на виводи 1,2,3 Очикування вводу

Виведення 1 2 3

введення

Page 23: Особливості роботи мікроконтролерів

Особливості GPIO Застосвується для інтелектуального вводу-

виводу Необхідно обмежувати струм на виводах

резисторами Світлодіод: Напруга 2В, струм 1мА, резистор 470 Ом

Виводи мікросхеми не витримують великого навантаження і необхідно зстосовувати ключі Транзисторні, реле

Швидкість перемикань обмежується швидкістю виконання команд процесором Fout<=Fclock/2

Page 24: Особливості роботи мікроконтролерів

Таймери Таймер – лічильник тактових імпульсів

Скільки імпульсів за певний час Скільки імпульсів між певними подіями Запис значення лічильника в регістр при настанні певної події Зміна значення на “ніжці” мікросхеми при досягнення

таймером певного значення Процесор не може точно відміряти часові інтервали

Різні команди мають різний час виконання Наближено можна здійснювати затримку циклом Таймер – незалежний від процесора пристрій контролю часу

Процесор не може точно генерувати імпульси стабільнної частоти на виводах Таймер може

Таймер-лічильник – підрахунок і генерація імпульсів Вартовий таймер – reset, коли таймер не перезапускається

Page 25: Особливості роботи мікроконтролерів

Режими таймерів Режим захоплення (capture)

При настанні певної події значення лічильника записується в спеціальний регістр

Викликається переривання Для точного слідкування за зовнішніми подіями

Режим порівняння (compare) При досягненні таймером значення в спеціальному

регістрі змінюється напруга на виводі таймера Викликається переривання Для точного керування зовнішніми процесами

Page 26: Особливості роботи мікроконтролерів

Переривання таймерів

По переповненню Для врахування ходу часу процесором

По захопленню Для збереження процесором моменту часу

настання події По порівнянню

Для повідомлення процесору, що запланована дія виконана

Асинхронний процесор може керувати синхронними подіями

Page 27: Особливості роботи мікроконтролерів

Використання таймерів Вимірювання тривалості і частоти сигналів

Скільки імпульсів тактового генератора проходить за період сигналу

Генерування імпульсів заданої тривалості і частоти Зміна стану “ніжки” при нарахування певної кількості

імпульсів тактового генератора Керування

Кроковими двигунами ЦАП (ШИМ і сигма-дельта) Схема співпадінь

Вимірювання Ємності

Page 28: Особливості роботи мікроконтролерів

Підключення таймера

Керування за допомогою спеціальних регістрів

Вхід-Тактовий генератор Вхід-Зовнішні сигнали

З ніжки мікросхеми Вхід-Внутрішні сигнали

З генераторів З компаратора …

Вихід-ніжка мікросхеми

Лічильник

Регістри захоплення-порівняння

Таймер-лічник

Page 29: Особливості роботи мікроконтролерів

Вмірювання частоти і часу

Таймер рахує тактові імпульси По фронту (або спаду) значення лічильника

збільшується на 1 Вимірюваний сигнал керує режимом

захоплення По фронту (спаду) вимрюваного сигналу

значення лічильника записується в регістр таймера СC

Період вхідного сигналу більше паріоду тактового в СС разів Fin=Ftakt/CC

Page 30: Особливості роботи мікроконтролерів

Генерація вихідного сигналу з ШИМ Таймер рахує тактові імпульси

Коли досягається значення в регістрі змінюється напруга на виводі

Записом в регістри можна змінювати параметри Постійний період Зміна скважності

Регістр 2

Регістр 1

Вихідний сигнал

Таймер

Генерація сигналівКерування сервомоторами

R

C

Page 31: Особливості роботи мікроконтролерів

ЦАП на основі ШИМ Кожна точка сигналу

представляється імпульсом із скважністю, яка відповідає рівню квантування t=T*U/Umax n=N*u/Umax

Частота дискретизації T<1/2/Fmax Краще T<1/10/Fmax

Передискретизація Чим більше рівнів

квантування тим вища має бути тактова частота

Період тактового генератора Ttakt=T/N= 1/10/Fmax/N

Тактова частота > 10*N*Fmax Кількість рівнів 32-256

Дискретизація

t

U

T

t

ПрикладSin -250 Гц Кількість відліків 256Частота дискретизації >500 ГцМінімальна тактова частота 128 КГцДля передискретизації 32 тактова частота 2,048 МГц

Page 32: Особливості роботи мікроконтролерів

Вибір частоти і фільтра ШИМ Частота – повинні

правильно дискретизуватись гармоніки для відтворення сигналу із заданою точністю

Фільтр – повинен пропускати всі гамоніки сигналу і придушувати гармоніки несучої

F=1/(2*3.14*RC)

Page 33: Особливості роботи мікроконтролерів

Застосування таймерів для UART Передача

Перемикаємо напругу залежності від значення бітів

Чекаємо період передачі біта tbit Прийом

При перемиканні стоп-старт запускається таймер на tbit/2

Зчитуємо сатровий біт Чекаємо tbit Зчитуємо наступний біт