Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Рис. 19 Схема електрона для лабораторної роботи №3

Алгоритм для даної задачі має вигляд:

Зчитати стан перемикача управління.

Якщо контакти перемикача розімкнуті, перейти до процедури зсуву вправо.

Якщо контакти замкнені, то перейти до процедури зсуву вліво.

Після закінчення повного циклу зсуву перейти до п. 1.

Алгоритм підпрограми затримки:

Записати в регістр таймера Т1 нульове значення.

Почати цикл перевірки вмісту регістру таймера. В тілі циклу програма повинна багаторазово зчитувати вміст регістру таймера і перевіряти, не досягло воно кінцевого значення.

При досягненні кінцевого значення, завершити цикл перевірки.

Вийти з підпрограми затримки.

Завдання для лабораторної роботи

Використовуючи програму Proteus, створити схему намальовану на рис.1 та запрограмувати згідно варіанту. Реалізувати перемикання світодіодів для коефіцієнта переддільника рівного:

1024

512

256

8

0 (без дільника)

Порядок виконання лабораторної роботи

Запустити програму AVR Studio.

Створити новий проект.

Вибрати тип проекту(Atmel AVR Assembler) та дати проекту ім’я.

Вибрати AVR Simulator -> ATiny2313;

За допомогою редактора набрати програму, яка відповідає умовам лабораторної роботи;

Скомпілювати та завантажити програму до мікроконтролера;

Перевірити правильність результату у програмі Proteus.

Звіт про лабораторну роботу має містити:

Титульний аркуш з П. І.Б., номером групи та варіантом студента;

Завдання на лабораторну роботу за варіантом;

Лістинг програми, яка реалізує завдання лабораторної роботи.

НЕ нашли? Не то? Что вы ищете?

Контрольні запитання

Що таке таймер?

Скільки існує таймерів для мікроконтролера ATiny2313 ?

Яку розрядність мають таймери для мікроконтролера ATiny2313?

В якому регістри можна побачити результат роботи таймера?

Які регістри використовуються для задання режиму роботи таймера?

Яка чистота сигнала генератора мікроконтролера ATiny2313?

Який код і куда треба записати для того щоб таймер перейшов в режим рахунку з коефіцієнтом ділення 1024 ?

Який порядок запису інформації в пару регістрів ТСNTxH і TCNTxL?

  Лабораторна робота №4. Використання переривань

Мета роботи: Отримати практичнi знання у роботi з використанням переривань.

Теоретичні відомості

Переривання –це зупинка ззвоні виконання поточної програми на час виконання підпрограми, яка має назву “обробник переривань”.

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

В AT90s2313 існує 11 подій, по яким можна установити переривання:

Reset – переривання по сбросу( подача 0 на вихід мікросхеми “Reset”, або включення МК, або по переповненню сторожового таймера ).

INT_0 – перше зовнішнє переривання ( сигнал на вивід мікросхеми “ INT0” ).

INT_1 – друге зовнішнє переривання ( сигнал на “ INT1” ).

Timer_capt1 – переривання “захоплення” 1-го таймера

Timer_comp1 – переривання компаратора 1-го таймера

Timer1_OVF1 – по переповненню 1-го таймера.

Timer2_OVF0 – по переповненню 0-го таймера.

UART_RX – по закінченню прийому пакета по протоколу UART.

UART _UDRE – по сбросу регістра даних UART.

UART _TX – по закінченю передачі пакета по UART.

ANA_COMP – переривання аналогового компаратора.

Вектор переривань – це вказівник на адресу в ПЗП, на який переходимо у результаті переривання. Всі вектори розташовані в самому початку адресного простору, і займають перші 11 адрес ПЗП ( с $000 по $00А). Тобто, якщо ми захочемо активізувати переривання Timer_comp1, то ми повинні по адресі $004 поставити посилання на підпрограму – обробник цього переривання. Краще всього розставити на початку програми посилання на всі вектори переривання:

.cseg

.org

rjmp Reset

rjmp INT_0

rjmp INT_1

rjmp Timer_capt1

rjmp Timer_comp1

rjmp Timer_OVF1

rjmp Timer_OVF0

rjmp UART_RX

rjmp UART_UDRE

rjmp UART_TX

rjmp ANA_COMP

Так як ці команди стоять на початку програми, то вони будуть розташовані в ПЗП по першим 11-ти адресам. Таким чином, при кожному переривання, буде викликатися відповідний обробник. Якщо якесь переривання не використовується, то необхідно прописати на них мітки, но по цим міткам нічого не роботи, а зразу ж виходить. Для цього використовується команда reti – Interrupt return – вихід з обробника переривання. Наприклад:

….

UART_TX:

ANA_COMP:
reti

Також можна на початку програми не писати безумовний перехід, а замість нього ставити оператор reti.

Розберемося з роботою переривань на прикладі таймера:

Розпочнемо з архітектури таймера:

Все починається з переддільника, який необхідний для того, щоб вибрати частоту, яка буде надходити на тактовий вхід таймерів. Схема переддільника:

Рис. 20 Архітектура таймера

Це схема переддільника для обох таймерів.

Зверху прямокутник – це і є власне перед дільник, який формує з тактової частоти контролера "CK" чотири кратних частоти:

СК/8

СК/64

СК/256

СК/1024

Дві трапеції знизу – це мультиплексори (перемикачі). В залежності від адреси, що подається, на вихід мультиплексора подається сигнал з одного з восьми входів:

(000) Немає тактової частоти(за замовченням)

(001) СК(не ділена тактова частота контролера)

(010)СК/8

(011) СК/64

(100) СК/256

(101) СК/1024

(110) Інвертований сигнал

(111) Неінвертований сигнал

Для того щоб вибрати для таймера необхідне джерело тактового сигналу, необхідно записати його адресу в відповідний біт регістру TCCR0 – для 0-го таймера, і TCCR1B – для 1-го таймера. Які біти встановлювати можна побачити з наступного рисунка:

Рис. 21 Біти регістрів TCCR0 і TCCR1B

Рис. 22 Будова таймера

TIMSK - Timer Interrupt MaSK register – регістр маски переривань.
TIFR - Timer Interrupt Flag Register – регістр флагів переривать.
TCCR1A - Timer/Counter1 Control Register A – контрольний регістр 1-го таймера А.

TCCR1B - Timer/Counter1 Control Register B - контрольний регістр 1-го таймера таймера B.

Control logic – управляюча логіка.
ICR1 - timer/counter1 Input Capture Register1 - вхідний регістр “захвату” 1-го таймера.

TCNT1 - Timer/CouNTer1 – регістр стану таймера
16-bit Comparator - компаратор
OCR1A - timer/counter Output1 Compare Register A – вихідний регістр компаратора A

Нам необхідно буде використовувати:

TIMSK - Timer Interrupt MaSK register – регістр маски переривань.

TCCR1B - Timer/Counter1 Control Register B - контрольний регістр 1-го таймера таймера B.

TCNT1 - Timer/CouNTer1 – регістр стану таймера

OCR1A - timer/counter Output1 Compare Register A – вихідний регістр компаратора A

Регістр TIMSK має вигляд:

Рис. 23 Біти регістру TIMSK

Цей регістр є загальним для обох таймерів, тому в ньому є біти, які відповідають за всі переривання обох таймерів. Подивимось, хто за що відповідає:

7 - TOIE1 - Timer/Counter1 Overflow Interrupt Enable – дозвіл переривання по переповненню 1-го таймера.

6 - OCIE1A - Timer/Counter1 Output Compare Match Interrupt Enable - дозвіл переривання компаратора 1-го таймера.

5,4 – зарезервовані.

3 - TICIE1 - Timer/Counter1 Input Capture Interrupt Enable – дозвіл переривання “захвату”(защелки) 1-го таймера
2 – зарезервований.

1 - TOIE0 - Timer/Counter0 Overflow Interrupt Enable – дозвіл переривання по переповненню 0-го таймера.

0 – зарезервований.

Регістр TCCR1B має вигляд:

Рис. 24 Біти регістру TCCR1B

З цього регістра нас цікавлять перші 3 біта, які використовуються для визначення джерела тактового сигналу.

Оператори

sei – global interrupt enable - глобальні переривання дозволити.

cli - global interrupt disable – глобальні переривання заборонити.

Перейдемо до задачі:

Розробити програму “Бігучі вогні” з використанням переривань на базі мікроконтролера AT90s2313. Затримка вибрати 125 мкс.

Схема для даної задачі буде мати вигляд:

Рис. 25 Схема електрона для лабораторної роботи №4

Завдання для лабораторної роботи

Використовуючи програму Proteus, створити схему намальовану на рис.1 та запрограмувати згідно варіанту. Варіанти:

По завершенню ввімкнути світодіоди 1-3, переддільник 1:1.

По завершенню ввімкнути світодіоди 5,6, переддільник 1:8.

По завершенню ввімкнути світодіоди 7,8, переддільник 1:64.

По завершенню ввімкнути всі світодіоди, передільник 1:256.

Перемикання світодіодів зправа наліво, передільник 1:1024.

Перемикання світодіодів зправа наліво з затримкою 200 мкс.

Перемикання світодіодів зправа наліво з затримкою 1 с.

Порядок виконання лабораторної роботи

Запустити програму AVR Studio.

Створити новий проект.

Вибрати тип проекту(Atmel AVR Assembler) та дати проекту ім’я.

Вибрати AVR Simulator -> AT90s2313;

За допомогою редактора набрати програму, яка відповідає умовам лабораторної роботи;

Скомпілювати та завантажити програму до мікроконтролера;

Перевірити правильність результату у програмі Proteus.

Звіт про лабораторну роботу має містити:

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5