Ім'я файлу: 1-PSoC_PWM.pdf
Розширення: pdf
Розмір: 478кб.
Дата: 24.05.2021
скачати


Лабораторна робота № 1
Тема роботи: Конфігурація компоненту Timer Counter Pulse Width Modulator
(TCPWM) як ШІМ з можливістю переривання.
Мета роботи: Налаштувати компонент TCPWM та реалізувани обробник переривання. Як результат провести керування вбудованим LED за допомогою кнопки на платі.
Короткі теоретичні відомості
Широтно-імпульсна модуляція (ШІМ) – це метод перетворення сигналу, при якому змінюється тривалість імпульсу (шпаруватість), а частота залишається константою. В англійській термінології позначається як PWM (pulse-width modulation).
Компонент TCPWM - це багатофункціональний компонент, який, використовуючи блок PSoC 4 TCPWM, реалізує основні функції мікроконтролера, включаючи таймер / лічильник, PWM та дефрагментатор квадратур. Кожен доступний як попередньо сконфігурований схематичний макрос у каталозі компонентів PSoC Creator, позначений як "TCPWM Mode".
Рис. 1 Базові режими роботи TCPWM
Базовий компонент в каталозі встановлюється в неконфігурованому режимі.
Неконфігурований компонент налаштовується під час виконання через виклики функцій для виконання будь-якого режиму роботи.
Компонент заснований на апаратній структурі, призначеній для спільного використання того самого обладнання в усіх режимах роботи. Ця структура дозволяє такому ж апаратному забезпеченню реалізовувати гнучкий набір функцій з невеликим збільшенням використання ресурсів. Ви можете визначити функціональність під час створення, щоб відповідати одному з основних режимів роботи, підтримуваної обладнанням. Ви також можете зберегти компонент як неконфігурований TCPWM та вказати конкретну конфігурацію під час виклику інтерфейсу API.

Таблиця 1. Входи компонента TCPWM
Вхід
Режим
Опис clock
All
Визначає робочу частоту цього компонента. Максимальна частота 48
МГц. reload
Timer,
PWM
Дозволяє перезавантажувати події для ініціалізації та запуску лічильника. У режимі підрахунку вгору / вниз лічильник ініціалізується за допомогою "0" (для пристроїв PSoC 4000, PSoC 4100, пристроїв PSoC
4200). Для інших пристроїв лічильник ініціалізується за допомогою "1" для режиму підрахунку вгору / вниз. У нижньому лічильному режимі лічильник ініціалізується за значенням періоду.
Коли в псевдовипадковому режимі ШІМ, сигнал перезавантаження виконує ту ж саму функцію, що і сигнал початку.
Для всіх пристроїв, крім PSoC 4000, PSoC 4100, PSoC 4200, його слід використовувати лише тоді, коли лічильник не працює. index
QuadDec
Визначає еталонну позицію для квадратурного декодера. Подія на цьому сигналі генерує потік терміналів (TC) та події CC і ініціює лічильник з значенням лічильника середньої точки "0x8000".
Якщо
індексний термінал присутній, то лічильник буде перезавантажувати на основі цього сигналу,
інакше
TCPWM_TriggerCommand () з появою перезавантаження буде використовуватися під час виклику TCPWM_Enable () або
TCPWM_Start () API. count
Timer,
PWM
Залежно від конфігурації, сигнал підрахунку збільшує або зменшує значення лічильника. phiA
QuadDec
Контролює значення рахунку, інкремент і декремент залежно від їх співвідношення та режиму. start
Timer,
PWM
Сигнал запуску не ініціалізує лічильник, але продовжує підраховуватись від поточного значення лічильника.
Якщо пусковий термінал присутній, тоді лічильник буде запускатися на основі цього сигналу, інакше TCPWM_TriggerCommand () з початковою подією буде використовуватися під час виклику
TCPWM_Enable () або TCPWM_Start () API.
Використовується лише тоді, коли лічильник не працює. phiB
QuadDec
Контролює значення рахунку, інкремент і декремент залежно від їх співвідношення та режиму. stop
All
Зупиняє лічильник. Подія не знищить поточне значення лічильника.
Зупинка події має більш високий пріоритет, ніж перезавантаження та запуск подій. capture
Timer
Фіксує поточне значення лічильника. Отже, подія захоплення копіює значення реєстру до регістру захоплення і копіює значення регістра захоплення у регістр захоплення буфера. switch
PWM
Заміщує період (період, періодBuf) та / або порівняння (порівняти, порівнювати) регістрів у наступній події TC.
Таблиця 2. Виходи компонента TCPWM
Вихід
Режим
Опис ov
Timer,
PWM
Вказує на стан лічильника переповнення. Він високий, коли відбувається переповнення. Не застосовується до ШІМ у псевдовипадковому режимі.
Подія переповнення вказує на те, що в режимі підрахунку вгору
COUNTER змінено з штату, де він дорівнював PERIOD, до стану, де він не дорівнює PERIOD. un
Timer,
PWM
Вказує на те, що відбувся зворотний запуск лічильника. Не застосовується до ШІМ у псевдовипадковому режимі.

Подія з заниженим потоком показує, що в режимі лічильника вниз
COUNTER змінився з стану, коли він дорівнює "0", до стану, де він не дорівнює "0". cc
All
Порівняння або захоплення виходу. Порівняльна поведінка: подія cc вказує на те, що регістр COUNTER дорівнює REQUIRES. line
PWM
Вихідне значення ШІМ. Цей сигнал генерується лише внутрішніми подіями cc, un і ov.
Це залежить від параметрів вирівнювання ШІМ або параметрів API
TCPWM_SetPWMMode (). line_n
PWM
Інвертоване значення вихідного ШІМ (під час підрахунку).
Компонент переривання описує апаратні переривання. Існує три типи системних сигналів переривань, які можуть оброблятися контролером переривань:

Level – джерело IRQ є сталим і залишається активним, доки прошивка не очищає джерело запиту за допомогою дії (наприклад, очищається від прочитання). Більшість периферійних пристроїв з фіксованою функціональністю мають рівні чутливі переривання, включаючи FIFO
UDB та регістри стану.

Pulse – імпульсний IRQ - це одиночний шинний годинник, який реєструє очікувану дію і гарантує, що дія ISR виконується лише один раз. Дії прошивки на периферію не потрібні.

Edge – довільна синхронна сигнальна форма є входом в схему виявлення краю, а позитивний край цієї форми сигналу стає синхронним одноцикловим імпульсом (імпульсний режим).
Рис. 2 Символьне позначення переривання

Хід роботи:
1. Добавимо на схему компонент PWM з папки Digital-Functions.
Рис. 2 Створення компоненту PWM
2. Добавимо на схему компоненти Interrupt та Clock з папки System та компонент Digital Input Pin (папка Ports and Pins).
Рис. 3 Створення компонентів Interrupt, Clock та Digital Input Pin
3. Утворюємо схему проекту, додаючи компоненти SwitchSPST (папка
Electro-Mechanical), Ground (папка Power). Також будуємо ланку LED для
індикації роботи ШІМ. Для цього додаємо компоненти Digital Output Pin,
LED (папка Diodes), Resistor (папка Passive) та Power.

Рис. 4 Готова схема проекту
4. Переходимо до налаштувань компонентів. Налаштовуємо компонент
Digital Input Pin як показано на рисунку 5.
Рис. 5 Налаштування компоненту Digital Input Pin
5. Налаштовуємо компонент TCPWM згідно завданя як показано на рис. 6.
Рис. 6 Налаштування компоненту TCPWM

6. Звіритись з таблицею 3, де наведено список компонентів PSoC Creator, використаних у цьому прикладі, показано як вони використовуються в проекті, а також необхідні налаштування, щоб вони функціонували як передбачено.
Таблиця 3. Список використаних компонентів
Компонент
Ім’я на схемі
Призначення
Налаштування
Digital Input Pin
Pin_Switch
Опрацювання нажаття кнопки див. рис. 5
PWM (TCPWM mode)
PWM
Генерація ШІМ див. рис. 6
Digital Output Pin
LED
Опрацювання LED будь-якого кольору на платі переконайтесь, що external terminal є обраним
7. Вибір портів, які будуть використовуватись. На платі знаходиться RGB світлодіод, керування кожним кольором відбувається незалежно. Для червоного світлодіоду потрібно вибрати порт P1[6], для зеленого – P0[2], а для синього –
P0[3].
Рис.7 Вибір активних портів
8. Переходимо у файл main.c та реалізуємо функцію ISR_TC. Ця функція виконується, коли відбувається переривання для термінального рахунку. Ця ISR очищує всі переривання та перемикає стан LED.
Рис.8 Функція ISR_TC

9. Далі реалізуємо функцію main, яка налаштує PWM та його переривання і запустить сам компонент.
Рис.9 Функція main
10. Збираємо проект та завантажуємо його на плату комбінацією клавіш
Ctrl+F5.

Завдання до лабораторної роботи
Розробити програмне забезпечення для управління LED згідно варіанту (який визначається порядковим номером n в журналі).
Таблиця варіантів

Колір LED
Період при ініціалізації, мс
Період після нажаття кнопки
1.
Червоний
1000 5000 2.
Зелений
2000 10000 3.
Синій
3000 15000 4.
Червоний
2500 500 5.
Зелений
5000 1000 6.
Синій
10000 2000 7.
Червоний
8000 3000 8.
Зелений
7000 1000 9.
Синій
10000 1500 10.
Синій
0 1000
Зміст звіту
1. Титульна сторінка та тема роботи.
2. Сформулювати мету роботи.
3. Текст програми відповідно до заданого варіанту.
4. Скріншоти налаштувань компонентів.
5. Висновки.
Література
1. Wikipedia: [Електронний ресурс] – Режим доступу World Wide Web: https://en.wikipedia.org/wiki/Pulse-width_modulation
2. Cypress: [Електронний ресурс] – Режим доступу World Wide Web: http://www.cypress.com/file/445126/download
3. Cypress: [Електронний ресурс] – Режим доступу World Wide Web: http://www.cypress.com/documentation/component-datasheets/pulse-width- modulator-pwm
4. Cypress: [Електронний ресурс] – Режим доступу World Wide Web: http://www.cypress.com/interrupt

Додаток А
Лістинг програми
#include

/*******************************************************************************
*
* Function Name: ISR_TC
********************************************************************************
/
CY_ISR
(TC_ISR_Handler)
{
/* Interrupt is cleared */
PWM_ClearInterrupt(
PWM_INTR_MASK_TC
);
/* LED is toggled ON and OFF */
LED_Write(

LED_Read());
}
/*******************************************************************************
* Function Name: main
*******************************************************************************/
int main(
void
)
{
/* Enable global interrupts. */
CyGlobalIntEnable
;
/* Enable interrupt component and set up handler */
TC_ISR_StartEx(TC_ISR_Handler);
/* Start the PWM Component */
PWM_Start(); for
(;;)
{
}
}

скачати

© Усі права захищені
написати до нас