Вы находитесь на странице: 1из 7

Министерство науки и высшего образования Российской Федерации

ФГАОУ ВО «Севастопольский государственный университет»


Институт радиоэлектроники и информационной безопасности

Кафедра «Радиоэлектроника и телекоммуникации»

ОТЧЁТ
по лабораторной работе №5
«Программная реализация внешних прерываний на микроконтроллере»
по дисциплине
«Программирование»

Выполнил: студент гр. РС/с-19-1-о


Зуев О. Д.
Вариант: 8
Защитил с оценкой: ______
Принял: ст. пр. Дурманов М.А.

Севастополь
2020
СОДЕРЖАНИЕ

1. Описание лабораторной работы 3


1.1. Цель работы 3
1.2. Задача и текст индивидуального задания 3
1.3. Теоретические сведения 3
2. Выполнение лабораторной работы 5
2.1. Текст программы 5
2.2. Результаты выполнения программы 6
Выводы 7

2
1.ОПИСАНИЕ ЛАБОРАТОРНОЙ РАБОТЫ
1.1. Цель работы
Изучить основы программирования микроконтроллеров. Приобрести
практические навыки по организации аппаратных
прерываний на микроконтроллере.
1.2.Текст индивидуального задания
Согласно приведенным ниже вариантам задания составить
электрическую схему в симуляторе TinkerCAD и написать скетч для
микроконтроллера Arduino. Выполнить проверку работоспособности
электрической схемы и скетча с помощью моделирования. Собрать
электрическую схему с помощью макетной платы и показать
работоспособность схемы преподавателю.
Вариант 8.
Выведите в монитор COM-порта значение с аналогового порта А1 платы
Arduino UNO, к которому подключен потенциометр, с помощью внешнего
аппаратного прерывания с номером прерывания 1 при изменении уровня
напряжения.

1.3. Теоретические сведения


1.3.1.Прерывания
Прерывание (англ. interrupt) — сигнал, сообщающий процессору о
наступлении какого-либо события. При этом выполнение текущей
последовательности команд приостанавливается, и управление передается
обработчику прерывания, который выполняет работу по обработке события и
возвращает управление в прерванный код.
Необходимо иметь в виду, что функции обработки прерываний должны
быть максимально короткими и простыми.
Плата Arduino UNO поддерживает два аппаратных прерывания,
связанные с цифровыми контактами 2 и 3. При правильной настройке
аппаратура Arduino следит за уровнем напряжения, приложенного к
контактам. Когда напряжение изменяется определенным способом
3
(например, в результате нажатия кнопки), генерируется прерывание,
вызывающее соответствующую функцию.
Различаются четыре вида изменений (режимов), вызывающих
прерывания:
— LOW: к цифровому входу приложен низкий уровень напряжения.
— CHANGE: уровень напряжения на цифровом входе изменился, либо с
высокого на низкий, либо с низкого на высокий.
— RISING: уровень напряжения на цифровом входе изменился с
низкого на высокий.
— FALLING: уровень напряжения на цифровом входе изменился с
высокого на низкий.
Чтобы настроить прерывания, необходимо добавить следующие
инструкции в функцию void setup(): attachInterrupt(interrupt, function, mode),
где interrupt — номер прерывания (0 соответствует цифровому контакту
2, 1 — цифровому контакту 3), function — имя функции, вызываемой по
прерываниям (должна быть без параметров и не возвращать значений), и
mode — один из четырех режимов обработки прерывания.
Иногда в программе нужно отключить прерывания. Для этого имеется
следующая функция: noInterrupts(); // выключить прерывания
А чтобы включить их вновь: interrupts(); // включить прерывания
Прерывания весьма чувствительны и работают очень быстро, что делает
их ценным инструментом для выполнения срочных операций, например, в
момент нажатия кнопки «экстренная остановка».
Функция micros() возвращает число микросекунд, а функция millis() —
число миллисекунд с момента начала выполнения текущей программы на
плате Arduino. обычных функций
Когда возникает прерывание 0, вызывается функция displayMicros(); а
когда возникает прерывание 1, вызывается функция displayMillis(). По
завершении любой из функций скетч продолжает выполнение функции void
loop().

4
2.ВЫПОЛНЕНИЕ ЛАБОРАТОРНОЙ РАБОТЫ
2.1. Изображение электрической схемы

Рис.1 – Схема подключения к вар. 8.

2.2. Текст программы

#define potent_pin 1 // Аналоговый вход 1 для подключения потенциометра


int val = 0; // Переменная для хранения значения потенциометра
void setup (){
Serial.begin(9600);
pinMode (3, INPUT_PULLUP);
attachInterrupt(1, displayPOT, CHANGE);
}
void displayPOT(){
val = analogRead(potent_pin);
Serial.print("value = " );
Serial.println(val);
}
void loop(){
digitalWrite(potent_pin, HIGH);
delay(500);
digitalWrite(potent_pin, LOW);
delay(500);
}

5
2.3. Результаты выполнения программы
Результаты выполнения программы представлены на рисунках 2 и 3.

Рисунок 2 —Изображение собранной эл. схемы.

Рисунок 3 —Изображение монитора COM-порта.

6
ВЫВОДЫ
В ходе выполнения данной лабораторной работы были изучены основы
программирования микроконтроллеров. Также были приобретены
практические навыки по организации аппаратных прерываний на
микроконтроллере.

Вам также может понравиться