на тему- ldquo;Перериванняrdquo; Виконав- студент групи СКСс11 Липовий Р
Работа добавлена на сайт samzan.net:
Міністерство освіти і науки УКРАЇНИ
національний університет “Львівська політехніка”
КАФЕДРА СКС
Звіт
до лабораторної роботи №7
з дисципліни: “Програмне забезпечення спеціалізованих компютерних систем”
на тему: “Переривання”
Виконав:
студент групи СКСс-11
Липовий Р. Я.
Прийняв викладач:
Клим Г. І.
Львів - 2013р.
Мета роботи: ознайомитись з основними поняттями обробки переривань для процесора PSoC3.
Загальні відомості
Переривання(англ. interrupt) сигнал, що повідомляєпроцесорпро настання якої-небудь події. При цьому виконання поточної послідовності команд призупиняється і керування передаєтьсяобробнику переривання, який реагує на подію та обслуговує її, після чого повертає управління в перерваний код.
PSoC3 може обробляти наступне:
32 лінії переривань.
Кілька джерел для кожного вектора .
Кожен вектор переривання незалежно включений або виключений.
Вісім рівнів вкладеними перериваннями.
Кілька векторів переривань вводу / виводу.
Програмне забезпечення може очистити відкладені переривання.
Lab 2A Клірингове очікування переривання
Створив новий проект. Надав йому імя Lab 2A.
У вікні Component Catalog, вкладці System вибрав компонент SleepTimer і перетягнув його в область TopDesign.cysch.
Двічі клацнув по даному компоненті і у вікні конфігурації задав потрібні мені параметри: перейменував модуль, змінив інтервал пробудження на 1024ms і встановив оновлення таймера.
Двічі клацнув по isr_1 і у конфігураційному вікні змінив його імя на - ISR_SleepTimer.
Додав до схеми цифровий двонаправлений pin з вікна - Component Catalog, вкладки PortsandPins.
Двічі клацнув по даному модулі і змінив його імя на LEDOut. Далі кількість контактів створив 4, а не 1. І після чого, на вкладці Загальні вибрав Strong Drive.
Відкрив вкладку Lab2A.cydwr і підключив прапорці на Р0 [ 3:0 ] .
Написав програму, відкривши файл main.c.
Lab 2B Очікування переривання
Зробив копію Lab 2A, та надав імя їй Lab2B.
Включив необхідну бібліотеку. Перейшов в Project -> Build Settings . І додав CYLIB_POWER_MANAGEMENT для визначення препроцесора .
Відредагував програмний код. Провів включення глобальних переривань за допомогою директиви CYGlobalIntEnable до контуру управління.
Замінив частину коду, що чекає цього переривання сну з командою директиви CySleep і сигналом на цей сон SleepTimer_GetStatus ().