Переривання в системі набору CY8CKIT-042 PSoC 4 Pioneer Kit

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут телекомунікацій, радіоелектроніки та електронної техніки
Факультет:
Радіотехніка
Кафедра:
Не вказано

Інформація про роботу

Рік:
2024
Тип роботи:
Звіт
Предмет:
Радіовимірювання
Група:
РТ-21

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет «Львівська політехніка» Інститут телекомунікацій, радіоелектроніки та електронної техніки кафедра «Теоретична радіотехніка та радіовимірювання» Звіт з лабораторних робіт на тему: «Переривання в системі набору CY8CKIT-042 PSoC 4 Pioneer Kit» з дисципліни «Програмування програмно-апаратних засобів» / Підготував: ст. групи РТ-21 Лоїк.В.А. Прийняв: асист. каф. ТРР Мащак А.В. Львів 2016р. Переривання в системі набору CY8CKIT-042 PSoC 4 Pioneer Kit. Мета: ознайомитися з принципами роботи переривань за допомогою набору CY8CKIT-042 PSoC 4 Pioneer Kit. Постановка задачі: в інтегрованому середовищі PSoC Creator реалізувати процедури переривання системи на мікроконтролері CY8CKIT-042. Завдання: за допомогою типових компонентів інтегрованого середовища PSoC Creator, функцій переривання, скласти схему та написати програму в якій будуть відбуватись переривання основної програми. Устаткування: набір CY8CKIT-042 PSoC 4 Pioneer Kit, Arduino - сумісна навчальна плата, плата світлодавача (Demo Board). Теоретичні відомості для виконання роботи В архітектурі PSoC 4 існують декілька видів функцій запиту на переривання (ЗнП). Фіксовані функції запиту на переривання – функції, котрі формуються в типових компонентах набору CY8CKIT-042 PSoC 4 Pioneer Kit. Існують функції ЗнП котрі формуються на основі елементів сформованих компонентів з масиву універсальних цифрових блоків (УЦБ). Функції ЗнП сформовані за допомогою компонентів сформованих на основі УЦБ поділяються на ЗнП по рівню та ЗнП по фронту. Котрий саме запит на переривання відправити контролеру переривань вирішує мультиплексор переривань. Після отриманого з мультиплексора ЗнП процедура переривання переходить до контролера переривань. Контролер переривань виконує функцію посередника між мікроконтролером та пристроями котрі відправили запит на переривання. Контролер відправляє адреси функцій обробки переривань до мікроконтролера а також сигнал запиту переривань. Також контролер переривань отримує сигнали підтвердження (ACK сигнали) від мікроконтролера при входженні в переривання або умові виходу з переривання. Існують три види сигналів переривань, котрі можуть бути прийнятими та обробленими за допомогою контролера переривань: По рівню (Level) – джерело запиту переривань є активним до тих пір, коли програмно, певною дією, не вимкнеться активність джерела запиту переривань. По імпульсу (Pulse) – імпульс запиту на переривання формується одним тактом сигналу шини. Шина отримує цей запит та гарантує виконання цього переривання лише один раз. Не потрібно виконувати ніяких дій програмно на периферійні пристрої. По фронту (Edge) – довільний синхронний сигнал є вхідним для кола детектування фронту сигналів. Після проходження даного кола детектування передній фронт сигналу перетворюється на синхронний імпульс одного такту та відбувається ЗнП по імпульсу. Відображення виконаннями основних операцій програми та спрацювання переривань представлено з на рисуну 2 та 3. Кожне переривання має призначену адресу вектора переривань, по якій звертаються до самого коду переривання. Після отримання запиту на переривання, виконання основної процедури зупиняється і відбувається перехід по вищевказаній адресі для виконання функції обробки переривання. Код переривання відноситься до системи розпорядку переривань (ISR). В інтегрованому середовищі створений компонент ISR котрий дозволяє реалізувати переривання. Для реалізації поставленого завдання буде використовуватись наступна функція компоненти ISR: void ISR_StartEx ( адреса обробника переривань) Опис: Встановлює функціонування переривань і встановлює адресу по якій знаходиться функція обробки переривання. Параметр функції – адреса обробника переривань. Адреса функції в котрій знаходиться код обробки переривання. Для виведення інформації на рідкокристалічний екран буде використовуватись компонент інтегрованого середовища PSoC Creator LCD. Опис функцій компоненти LCD представлено в таблиці 1: Таблиця 1. Опис функцій компоненти LCD Функція Опис  LCD_Char_LoadCustomFonts(LCD_ Char_customFonts) Loads custom characters into the LCD module Завантажує знаки користувача в модуль LCD  LCD_Char_Start() Starts the module and loads custom character set to LCD, if it was defined. Запускає модуль LCD і завантажує знаки користувача в модуль LCD  LCD_Char_Stop() Turns off the LCD Вимикає модуль LCD  LCD_Char_DisplayOn() Turns on the LCD module’s display Вмикає дисплей модуля LCD  LCD_Char_DisplayOff() Turns off the LCD module’s display Вимикає дисплей модуля LCD  LCD_Char_PrintString(char8 const string[]) Prints string to the screen, character by character Виводить рядок знак за знаком  LCD_Char_PutChar(char8 character) Sends a single character to the LCD module data register at the current position. Надсилає одиничний знак в регістр даних модуля LCD на поточну позицію  LCD_Char_Position(uint8 row, uint8 column) Sets the cursor’s position to match the row and column supplied Виставляє курсор на позицію відповідно до рядка і стовпчика  LCD_Char_WriteData (uint8 dByte) Writes a single byte of data to the LCD module data register Записує одиничний байт даних в в регістр даних модуля LCD  LCD_Char_ClearDisplay() Clears the data from the LCD module’s screen Очищує дані з екрану модуля LCD  LCD_Char_PrintInt8(uint8 value) Prints a two-ASCII-character hex representation of the 8-bit value to the Character LCD module. Виводить два ASCII-знаки у шістнадцятковому представлені 8-бітним значенням на модуль LCD  LCD_Char_PrintInt16(uint16 value) Prints a four-ASCII-character hex representation of the 16-bit value to the Character LCD module. Виводить чотири ASCII-знаки у шістнадцятковому представлені 16-бітним значенням на модуль LCD  LCD_Char_PrintInt32(uint16 value) Prints an uint32 hexadecimal number as eight ASCII characters. Виводить 32-розрядне шістнадцяткове число як вісім ASCII-знаків  LCD_Char_PrintNumber(uint16 value) Prints the decimal value of a 16-bit value as ASCII characters Виводить десяткове значення 16-бітного числа як ASCII-знаки  LCD_Char_PrintU32Number(uint32 value) Prints an uint32 value as decimal value. Виводить 32-бітне чиcло як десяткове значення  LCD_Char_Init() Performs initialization required for component’s normal work Виконує ініціалізацію, необхідну для нормальної роботи компонента  LCD_Char_Enable() Turns on the display Вмикає дисплей   /* ======================================== * * Copyright YOUR COMPANY, THE YEAR * All Rights Reserved * UNPUBLISHED, LICENSED SOFTWARE. * * CONFIDENTIAL AND PROPRIETARY INFORMATION * WHICH IS THE PROPERTY OF your company. * * ======================================== */ #include "project.h" uint8 a=0,b=1; uint8 g=60, f=4; void Timer(void); void Stop(void); int main(void) { LCD_Start(); CyGlobalIntEnable; /* Enable global interrupts. */ isr_StartEx(Stop); /* Place your initialization/startup code here (e.g. MyInst_Start()) */ for(;;) LCD_Position(1, 0) ; LCD_PrintString("Count:"); //Stop(); LCD_Position(1, 7); LCD_PrintNumber(a); if(b==1){ Timer();} } }void Timer (void) {if(SW_Read()==0) { if(g>0) } LCD_Position(0, 0) ; LCD_PrintNumber(f); LCD_Position(0, 2) ; LCD_PutChar(':'); LCD_Position(0, 3) ; LCD_PrintNumber(g); g--; CyDelay(1000); }else{g=60; f--;} } } void Stop (void) { if(SW_Read()==1) {a++; b=1; }else{b=0; /*if(SW_Read()==1) { a++ ; b++; CyDelay(20); } if(b>1) { a--; b--; } if(SW_Read()==0){b=0;}*/ } /* [] END OF FILE */ //
Антиботан аватар за замовчуванням

20.04.2017 17:04-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!