1 / 33

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

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

ciel
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Особливості застосування MCU • Застосування процесора • Тактова частота • Опитування • Переривання • Зупинка, очікування • Застосування периферії • Генератори • GPIO • Таймери • Компаратори • АЦП • Режими роботи мікроконтролерів • Максимально допустимі параметри • Енергозбереження

  3. Тактові генератори • Мікроконтролер може мати декілька тактових генераторів з різною частотою, стабільністю, енергоспоживанням • RC високочастоний (~104-108 Гц) • RC низькочастотний (~до 104 Гц) • Кварцевий високочастоний (~104-106 Гц) • Кварцевий низькочастотний (~до 104 Гц) • Тактові генератори можуть приєднуватись до різних системних годинників • Головний, Допоміжний, Периферійний… • Системний годинник видає тактовий сигнал • Різні системні годинники можуть тактувати різні пристрої мікроконтролера • Процесор, Таймер, АЦП • … • Різні системні годинники можуть ділити частоту генератора в певні кількість разів • 1,2,4,8,16 … Пристрій 1 Генератор1 Тактовий сигнал1 Генератор2 Пристрій 2 Тактовий сигнал2 Генератор3 Пристрій 3 Тактовий сигнал3 Генератор4

  4. Керування тактовими сигналами • Ввімкнення/вимкнення тактових генераторів • Зміна частоти тактових генераторів • Підключення тактових генераторів до системних годинників • Зміна коефіцієнтів поділу системних годинників • Кеування синхронізацією генераторів • Є спеціальні регістри керування, які відображаються на пам’ять процесора

  5. Зміна тактової частоти • В широких межах • Зміна резистора чи конденсатора RC генератора • В вузьких межах • Підстроювання генератора керованого напругою • Точне підстроювання • Модуляція • Утримання частоти • Автопідстроювання

  6. Модуляція nhig N=32 • Генератор по черзі перемикається між вищою і нижчою частотою • N-кількість рівнів квантування частоти • nhig –скільки разів включали високу частоту • tlow – період низької частоти • thigh – період високої частоти • t – період змішаної частоти Нижча частота Вища частота

  7. Підстроювання Стабільний кварцевий генератор низької частоти • Рахують кількість імпульсів нестабільного генератора за період стабільного • Кількість імпульсів менша – збільшити частоту • Кількість імпульсів більша- зменшити частоту • Коли частоти високі підстроюють f1/M під f2/N • Чим більше відношення частот – тим точніше підстроювання • Nhigh=fhigh/flow Опорна (референтна) частота Старт-стоп Лічильник імпільсів такт Керування частотою Нестабільний генератор високої частоти

  8. Синхронізація і порівняння фази • Синхронізація – коли одна система знаходиться в якомусь одному стані, інша система знаходиться в якомусь одному стані • Генератор запускається, коли синхросигнал в певному стані • Оцінка фази • Рахуємо кількість імпульсів тактового генератора за період N • Фаза – кількість імпульсів, які пораховано n

  9. Тактова частота процесора • Процесор можна приєднати до різних тактових генераторів • Різні команди мають різну кількість тактів • 1-6 як правило • Процесор виконує команди у декілька разів повільніше, ніж тактова частота • Приклад затримка за допомогою цикла while(i--); • Машинний код • loop: dec R1 // 1такт • jnz loop;// 2 такта • Затримка наi*3/Fтактсекунд • Продуктивність • Кількість операцій в одиницю часу • Затримки (латентність) • Час між подією і реакцією на неї

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

  11. Процесор в режимі опитування • Періодично зчитує значення із регістрів периферії і реагує на події • while(1){//вічний цикл • while (!подія1 || !подія2||..){ • дії не пов’язані з подіями • Відкладені дії • } • if(подія1){виконати, або відкласти} • if(подія2){виконати, або відкласти} • … • } • Найбільша продуктивність • Великі затримки

  12. Процесор в режимі переивань • Реєcтруються функції, які виконуються при настанні події • Функції виконуються коли подія наступає • register_interrupt(подія,обробник) • enable_interrupt() • while(1){ • Якість дії, часто зупинка процесора • } • … • обробник(){ • Виконати обробку події, часто просто вийти з режиму сну • Іноді зареєструвати відкладений обробник події • } • Малі затримки, мала продуктивність

  13. GPIO – Цифрове введення-виведення • Виведення - перемикання високого чи низького рівня на виводах мікросхеми • Введення – визначення високого чи низького рівня на виводах мікросхеми • Операції • Підключення/відключення порта GPIO до виводів мікросхеми • Переведення порту в режим введення/виведення • Виведення • Запис 1 чи 0 в порт – на виводі встановиться висока чи низька напруга • Введення • Зчитування поточного рівня напруги на виводі мікросхеми - порт буде містити 1 чи 0 • Дозвіл/заборона резистора підтягування • Підключення підтягуючого резистора (до 1 чи 0) • Дозвіл/заборона переривань • Зчитування прапорця переривання • Реалізація обробника переривання

  14. Підключення портів до виводів • Спеціальні регістри вибору периферії • Наприклад P1SEL.x P1SEL2.x • Кожен біт відповідає виводу • Запис комбінації бітів підключає порти до виводів • Приклад • P1SEL=0x00; P1SEL2=0x00; • Підключили всі виводи до портів GPIO • Як правило за замовчанням так і є

  15. Переведення портів в режим вводу/виводу • Є спеціальні регістри вибору режиму • Наприклад P1DIR.x • Кожен біт – вибір режиму відповідного порту • 0 – введення • 1 - виведення • Приклад • «Ніжка» P1.0 в режимі вводу, всі інші в режимі виводу • P1DIR=11111110b; • Краще виводи, які не використовуються превести в режим виводу, щоб не було наведень

  16. Запис значень в порти вводу-виводу • Є спеціальнийрегістр запису в порт • Наприклад P1OUT.x • Запис 0 або 1 переводить відповідний пін у низький, або високий рівень • Приклад – керування світлодіодом • На виводі, який відповідає порту P1.0 – світлодіод • P1DIR=0xff; //тільки виведення • P1OUT|=00000001b ;// вмикаємо лише P1.0 • P1OUT&=00000001b ;// вимикаємо лише P1.0 • P1OUT^=BIT1;// змінюємо лише P1.0 на протилежне

  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); }

  18. Читання портів вводу-виводу • Є спеціальний регістр читання порту • Наприклад P1IN.x • При зміні значення напруги на виводі змінюється значення в регістрі • Приклад • Читання стану кнопки на виводіP1.3 • Замкнута – 0, Розімкнута – 1 • P1DIR=11110111b; //порт 3 введення • while(P1IN & BIT3);//чекаємо події • дії по натисненню кнопки

  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

  20. Використання переривань GPIO • Введення – невідомо коли відбувається • Переривання зручний спосіб реагування н події • Керування • Весь порт (всі біти) обробляються одним обробником • Необхідно зареєструвати обробник • Переривання повинны бути дозволены глобально • Наприклад команда INTE • Необхідно дозволити переривання по GPIO • Спеціальний регістр наприклад P1IE • Необхідно встановити перериваня по фронту, чи по спаду • Спеціальний регістр P1ES(Edge select) • 1-спад (зверху вниз) 0-фронт (знизу вверх) • Є спеціальний регістр для визначення джерела переривання • Наприклад P1IFG • 1 – було переривання, 0 – не було • Після обробки біти цього регістра треба очищати

  21. Застосування переривань GPIO 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; } int 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; } }

  22. Коли не вистачає «ніжок» • Заміна паралельного введення виведення на послідовний • Приклад:опитування клавіатури • Запис 1,0,0 на виводи 1,2,3 • Очикування вводу • Запис 0,1,0 на виводи 1,2,3 • Очикування вводу • Запис 0,0,1 на виводи 1,2,3 • Очикування вводу Виведення 1 2 3 введення

  23. Особливості GPIO • Застосвується для інтелектуального вводу-виводу • Необхідно обмежувати струм на виводах резисторами • Світлодіод: Напруга 2В, струм 1мА, резистор 470 Ом • Виводи мікросхеми не витримують великого навантаження і необхідно зстосовувати ключі • Транзисторні, реле • Швидкість перемикань обмежується швидкістю виконання команд процесором • Fout<=Fclock/2

  24. Таймери • Таймер – лічильник тактових імпульсів • Скільки імпульсів за певний час • Скільки імпульсів між певними подіями • Запис значення лічильника в регістр при настанні певної події • Зміна значення на “ніжці” мікросхеми при досягнення таймером певного значення • Процесор не може точно відміряти часові інтервали • Різні команди мають різний час виконання • Наближено можна здійснювати затримку циклом • Таймер – незалежний від процесора пристрій контролю часу • Процесор не може точно генерувати імпульси стабільнної частоти на виводах • Таймер може • Таймер-лічильник – підрахунок і генерація імпульсів • Вартовий таймер – reset, коли таймер не перезапускається

  25. Режими таймерів • Режим захоплення (capture) • При настанні певної події значення лічильника записується в спеціальний регістр • Викликається переривання • Для точного слідкування за зовнішніми подіями • Режим порівняння (compare) • При досягненні таймером значення в спеціальному регістрі змінюється напруга на виводі таймера • Викликається переривання • Для точного керування зовнішніми процесами

  26. Переривання таймерів • По переповненню • Для врахування ходу часу процесором • По захопленню • Для збереження процесором моменту часу настання події • По порівнянню • Для повідомлення процесору, що запланована дія виконана • Асинхронний процесор може керувати синхронними подіями

  27. Використання таймерів • Вимірювання тривалості і частоти сигналів • Скільки імпульсів тактового генератора проходить за період сигналу • Генерування імпульсів заданої тривалості і частоти • Зміна стану “ніжки” при нарахування певної кількості імпульсів тактового генератора • Керування • Кроковими двигунами • ЦАП (ШИМ і сигма-дельта) • Схема співпадінь • Вимірювання • Ємності

  28. Підключення таймера • Керування за допомогою спеціальних регістрів • Вхід-Тактовий генератор • Вхід-Зовнішні сигнали • З ніжки мікросхеми • Вхід-Внутрішні сигнали • З генераторів • З компаратора • … • Вихід-ніжка мікросхеми Таймер-лічник Лічильник Регістри захоплення- порівняння

  29. Вмірювання частоти і часу • Таймер рахує тактові імпульси • По фронту (або спаду) значення лічильника збільшується на 1 • Вимірюваний сигнал керує режимом захоплення • По фронту (спаду) вимрюваного сигналу значення лічильника записується в регістр таймераСC • Період вхідного сигналу більше паріоду тактового в СС разів • Fin=Ftakt/CC

  30. Генерація вихідного сигналу з ШИМ • Таймер рахує тактові імпульси • Коли досягається значення в регістрі змінюється напруга на виводі • Записом в регістри можна змінювати параметри • Постійний період • Зміна скважності R Таймер C Регістр 1 Регістр 2 Генерація сигналів Керування сервомоторами Вихідний сигнал

  31. ЦАП на основі ШИМ U Дискретизація • Кожна точка сигналу представляється імпульсом із скважністю, яка відповідає рівню квантування • 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 T t Приклад Sin -250 Гц Кількість відліків 256 Частота дискретизації >500 Гц Мінімальна тактова частота 128 КГц Для передискретизації 32 тактова частота 2,048 МГц

  32. Вибір частоти і фільтра ШИМ • Частота – повинні правильно дискретизуватись гармоніки для відтворення сигналу із заданою точністю • Фільтр – повинен пропускати всі гамоніки сигналу і придушувати гармоніки несучої • F=1/(2*3.14*RC)

  33. Застосування таймерів для UART • Передача • Перемикаємо напругу залежності від значення бітів • Чекаємо період передачі біта tbit • Прийом • При перемиканні стоп-старт запускається таймер на tbit/2 • Зчитуємо сатровий біт • Чекаємо tbit • Зчитуємо наступний біт

More Related