Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

на тему- ldquo;Перериванняrdquo; Виконав- студент групи СКСс11 Липовий Р

Работа добавлена на сайт samzan.net:


Міністерство освіти і науки УКРАЇНИ

національний університет “Львівська політехніка”

КАФЕДРА СКС

Звіт

до лабораторної роботи №7

з дисципліни: Програмне забезпечення спеціалізованих комп’ютерних систем”

на тему: “Переривання

Виконав:

студент групи СКСс-11

Липовий Р. Я.

Прийняв викладач:

Клим Г. І.

Львів - 2013р.

Мета роботи: ознайомитись з основними поняттями обробки переривань для процесора PSoC3.

Загальні відомості

Переривання (англ. interrupt) — сигнал, що повідомляє процесор про настання якої-небудь події. При цьому виконання поточної послідовності команд призупиняється і керування передається обробнику переривання, який реагує на подію та обслуговує її, після чого повертає управління в перерваний код.

 PSoC3 може обробляти наступне:

  1.  32 лінії переривань.
  2.  Кілька джерел для кожного вектора .
  3.  Кожен вектор переривання незалежно включений або виключений.
  4.  Вісім рівнів вкладеними перериваннями.
  5.  Кілька векторів переривань вводу / виводу.
  6.  Програмне забезпечення може очистити відкладені переривання.

Lab 2A – Клірингове очікування переривання

  1.  Створив новий проект. Надав йому ім’я Lab 2A.
  2.  У вікні – Component Catalog, вкладці – System вибрав компонент – Sleep Timer і перетягнув його в область – TopDesign.cysch.

  1.  Двічі клацнув по даному компоненті і у вікні конфігурації задав потрібні мені параметри: перейменував модуль, змінив інтервал пробудження – на 1024ms і встановив оновлення таймера.

  1.  Двічі клацнув по isr_1 і у конфігураційному вікні змінив його ім’я на - ISR_SleepTimer.

  1.  Додав до схеми цифровий двонаправлений pin з вікна - Component Catalog, вкладки – Ports and Pins.

 

  1.  Двічі клацнув по даному модулі і змінив його ім’я на – LEDOut. Далі кількість контактів створив 4, а не 1. І після чого, на вкладці – Загальні вибрав – Strong Drive.

  1.  Відкрив вкладку Lab2A.cydwr і підключив прапорці на Р0 [ 3:0 ] .

  1.  Написав програму, відкривши файл – main.c.

Lab 2B – Очікування переривання

  1.  Зробив копію Lab 2A, та надав ім’я їй – Lab2B.
  2.  Включив необхідну бібліотеку. Перейшов в Project -> Build Settings . І додав CYLIB_POWER_MANAGEMENT для визначення препроцесора .

  1.  Відредагував програмний код. Провів включення глобальних переривань за допомогою директиви CYGlobalIntEnable до контуру управління.
  2.  Замінив частину коду, що чекає цього переривання сну з командою директиви CySleep і сигналом на цей сон SleepTimer_GetStatus ().

Програмний код:

#include <device.h>

#include <CYDEVICE.H>

#include <CYLIB.H>

#include <intrins.h>

void main(CySleep)

{

uint8 bShadow = 0;

SleepTimer1_Init();

SleepTimer_SetInterval(255);

SleepTimer_Start();

     while (1){

CySleep;

 while(SleepTimer_GetStatus() && SleepTimer__CTW_1024_MS == 0){

  LEDOut_Write(bShadow);

  bShadow++;

  

 }     } }

void CySleep(void){

_nop_();

_nop_();}

Lab 2С Глобальне переривання та ISR виконання

  1.  Зробив копію Lab 2B, та надав ім’я їй – Lab2С.
  2.  Всі параметри і налаштування залишив незмінними.
  3.  Перед включенням глобального переривання додав ISR_SleepTimer_Start () в код.

  1.  Провів компіляцію проекту.

Lab 2D – Підпрограма обробки переривань ISR (Assembler)

  1.  Зробив копію Lab 2C, та надав ім’я їй – Lab2D.
  2.  Всі параметри і налаштування залишив незмінними.
  3.  У вікні Workspace Explorer, додав новий елемент і надав йому ім’я – SleepTimerRoutines.a51. Після чого написав код програми.

Lab 2EМова С. Підпрограма обробки переривань ISR.

  1.  Зробив копію Lab 2D та надав ім’я їй – Lab2E.
  2.  Всі параметри і налаштування залишив незмінними.
  3.  Написав програмний код і оголосив функцію – SLEEPISR. Провів компіляцію проекту.

Lab 2F – Примусове  переривання

  1.  Зробив копію Lab 2E та надав ім’я їй – Lab2F.
  2.  Всі параметри і налаштування залишив незмінними.
  3.  Встановив для переривання відповідний біт в регістрі – CLRPEND.

Lab 2G – ISR вправа

  1.  Зробив копію Lab 2E та надав ім’я їй – Lab2F.
  2.  Всі параметри і налаштування залишив незмінними.
  3.  Видалив обробник переривань розташований в ISR_SleepTimer.c.
  4.  Створив змінну та надав ім’я їй – bCount.

  1.  Видалив код, що використовується для примусового переривання.
  2.  Написав код в CY_ISR (ISR_SleepTimer).

Висновок:

На даній лабораторній роботі я ознайомився з основними поняттями обробки переривань для процесора PSoC3.

 




1. Реферат- Средства повышения двигательной активности учащихся вспомогательной школы
2. Реферат- Володимир Антонович
3. .1 Расчет электрических нагрузок цеха
4. Белорусский государственный медицинский колледж Артишевская Л
5. тематическое обеспечение МО
6. 13 Экономика и организация внешней торговли
7. Дипломная работа- Сельскохозяйственное страхование от чрезвычайных ситуаций
8. Лекція 1 Вступ Структура та зміст дисципліни Основи патентознавства та інтелектуальна власність 1
9. Курсовая работа- Облік витрат, виходу продукції (робіт, послуг) і визначення собівартості
10. Ревдинский педагогический колледж ДНЕВНИК ВОЖАТОГО по летней практике
11. Планета Услуга центра
12. записка 67 класс
13. Разработка системы стратегического планирования на предприятии
14. «Работа в текстовом редакторе Word»
15. Навчальна програма з математики для допоміжної школи
16. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата сільськогосподарських наук1
17. Практикум по русскому языку Экзамен Ульянова И
18. Билеты по межкультурной коммуникации
19. Развитие творческих способностей в онтогенезе
20. Некоторые особенности расследования преступлений связанных с дорожно-транспортными происшествиями