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



Дата конвертації27.12.2016
Розмір445 b.


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

  • Лекція 7

  • Судаков О.О, Радченко С.П.

  • «Сучасна мікропроцесорна техніка»


Особливості застосування MCU

  • Застосування процесора

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

    • Генератори
    • GPIO
    • Таймери
    • Компаратори
    • АЦП
  • Режими роботи мікроконтролерів

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


Тактові генератори

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

    • RC високочастоний (~104-108 Гц)
    • RC низькочастотний (~до 104 Гц)
    • Кварцевий високочастоний (~104-106 Гц)
    • Кварцевий низькочастотний (~до 104 Гц)
  • Тактові генератори можуть приєднуватись до різних системних годинників

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

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

    • 1,2,4,8,16 …


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

  • Ввімкнення/вимкнення тактових генераторів

  • Зміна частоти тактових генераторів

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

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

  • Кеування синхронізацією генераторів

  • Є спеціальні регістри керування, які відображаються на пам’ять процесора



Зміна тактової частоти

  • В широких межах

    • Зміна резистора чи конденсатора RC генератора
  • В вузьких межах

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

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

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


Модуляція

  • Генератор по черзі перемикається між вищою і нижчою частотою

    • N-кількість рівнів квантування частоти
    • nhig –скільки разів включали високу частоту
    • tlow – період низької частоти
    • thigh – період високої частоти
    • t – період змішаної частоти


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

  • Рахують кількість імпульсів нестабільного генератора за період стабільного

    • Кількість імпульсів менша – збільшити частоту
    • Кількість імпульсів більша- зменшити частоту
  • Коли частоти високі підстроюють

    • f1/M під f2/N
  • Чим більше відношення частот – тим точніше підстроювання

    • Nhigh=fhigh/flow


Синхронізація і порівняння фази

  • Синхронізація – коли одна система знаходиться в якомусь одному стані, інша система знаходиться в якомусь одному стані

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

  • Оцінка фази

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


Тактова частота процесора

  • Процесор можна приєднати до різних тактових генераторів

  • Різні команди мають різну кількість тактів

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

    • Приклад затримка за допомогою цикла while(i--);
    • Машинний код
      • loop: dec R1 // 1такт
      • jnz loop; // 2 такта
    • Затримка на i*3/Fтакт секунд
  • Продуктивність

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

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


Параметри тактового генератора

  • Максимальна тактова частота

  • Діапазон перебудови частоти

  • Час ввімкнення після «сну»

  • Тривалість фронту імпульсу

  • Скважність імпульсів (duty cycle)

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


Процесор в режимі опитування

  • Періодично зчитує значення із регістрів периферії і реагує на події

  • while(1){ //вічний цикл

    • while (!подія1 || !подія2||..){
      • дії не пов’язані з подіями
      • Відкладені дії
    • }
    • if(подія1) {виконати, або відкласти}
    • if(подія2) {виконати, або відкласти}
  • }

  • Найбільша продуктивність

  • Великі затримки



Процесор в режимі переивань

  • Реєcтруються функції, які виконуються при настанні події

  • Функції виконуються коли подія наступає

  • register_interrupt(подія,обробник)

  • enable_interrupt()

  • while(1){

    • Якість дії, часто зупинка процесора
  • }

  • обробник(){

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

  • Малі затримки, мала продуктивність



GPIO – Цифрове введення-виведення

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

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

  • Операції

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

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

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



Підключення портів до виводів

  • Спеціальні регістри вибору периферії

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



Переведення портів в режим вводу/виводу

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

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

    • «Ніжка» P1.0 в режимі вводу, всі інші в режимі виводу
      • P1DIR=11111110b;
  • Краще виводи, які не використовуються превести в режим виводу, щоб не було наведень



Запис значень в порти вводу-виводу

  • Є спеціальний регістр запису в порт

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

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


Застосування GPIO виводу

  • Керування зовнішніми пристроями

    • Вмикання світлодіодів
    • Керування індикатором
    • Керування кроковим двигуном
  • Синхронні шини передачі

    • SPI,I2C


Читання портів вводу-виводу

  • Є спеціальний регістр читання порту

    • Наприклад P1IN.x
  • При зміні значення напруги на виводі змінюється значення в регістрі

  • Приклад

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


Підтягуючий резистор

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

    • Якщо не підключений – будуть наводки стан не визначений
    • Підтягуючий (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


Використання переривань GPIO

  • Введення – невідомо коли відбувається

  • Переривання зручний спосіб реагування н події

  • Керування

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


Застосування переривань GPIO



Коли не вистачає «ніжок»

  • Заміна паралельного введення виведення на послідовний

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

    • Запис 1,0,0 на виводи 1,2,3
    • Очикування вводу
    • Запис 0,1,0 на виводи 1,2,3
    • Очикування вводу
    • Запис 0,0,1 на виводи 1,2,3
    • Очикування вводу


Особливості GPIO

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

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

    • Світлодіод: Напруга 2В, струм 1мА, резистор 470 Ом
  • Виводи мікросхеми не витримують великого навантаження і необхідно зстосовувати ключі

    • Транзисторні, реле
  • Швидкість перемикань обмежується швидкістю виконання команд процесором

    • Fout<=Fclock/2


Таймери

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

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

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

    • Таймер може
  • Таймер-лічильник – підрахунок і генерація імпульсів

  • Вартовий таймер – reset, коли таймер не перезапускається



Режими таймерів

  • Режим захоплення (capture)

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

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


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

  • По переповненню

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

    • Для збереження процесором моменту часу настання події
  • По порівнянню

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



Використання таймерів

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

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

    • Зміна стану “ніжки” при нарахування певної кількості імпульсів тактового генератора
  • Керування

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

    • Ємності


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

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

  • Вхід-Тактовий генератор

  • Вхід-Зовнішні сигнали

  • Вхід-Внутрішні сигнали

    • З генераторів
    • З компаратора
  • Вихід-ніжка мікросхеми



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

  • Таймер рахує тактові імпульси

    • По фронту (або спаду) значення лічильника збільшується на 1
  • Вимірюваний сигнал керує режимом захоплення

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

    • Fin=Ftakt/CC


Генерація вихідного сигналу з ШИМ

  • Таймер рахує тактові імпульси

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

  • Постійний період

  • Зміна скважності



ЦАП на основі ШИМ

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

    • 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


Вибір частоти і фільтра ШИМ

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

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

  • F=1/(2*3.14*RC)



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

  • Передача

  • Прийом

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



База даних захищена авторським правом ©pres.in.ua 2016
звернутися до адміністрації

    Головна сторінка