Прерывания. Прерывание по переполнению таймера-счетчика

Изучение видов прерывания, прерываний по переполнению таймера-счетчика, рассмотрение таблицы векторов прерывания. Счетчик команд и выполнение программы, команды возврата из подпрограмм. Разновидности внешних прерываний в микроконтроллерах семейства Mega.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 14.11.2021
Размер файла 1,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Министерство науки и образования РФ

Федеральное государственное бюджетное образовательное учреждение

«Тихоокеанский государственный университет»

Кафедра «Вычислительная техника»

Лабораторная работа

по дисциплине: «Вычислительная техника и информационные технологии»

На тему: «Прерывания. Прерывание по переполнению таймера-счетчика»

Выполнил: студент второго курса ИСС(аб)-91

Чуров С.А., Машуков К.П.

Проверил(а): Пестрикова Т. В.

Хабаровск

2021

Цель работы: изучить прерывания, изучить прерывания по переполнению таймера-счетчика, рассмотреть таблицу векторов прерывания, изучить виды прерываний.

Задача: настроить таймер/счетчик по сравнению с числом 248, считать 1024 такт

Структурная схема

Регистр состояния SREG

Среди РВВ есть один регистр, используемый наиболее часто в процессе выполнения программ. Это регистр SREG.

Регистр флагов SREG располагается по адресу $3F. Он содержит набор флагов, показывающих состояние микроконтроллера.

Большинство флагов автоматически устанавливается в1 или в00 при наступлении определенных событий (в соответствии с результатом выполнения команд).

Все биты SREG доступны как для чтения, так и для записи.

Счетчик команд и выполнение программы

Счетчик команд представляет собой регистр, в котором содержится адрес следующей исполняемой команды. Напрямую из программы он недоступен. Размер счетчика команд зависит от объема имеющейся памяти программ от 11 до 17 битов.

При нормальном выполнении программы содержимое счетчика команд автоматически увеличивается на 1 или на 2 (в зависимости от выполняемой команды).

Этот порядок нарушается при выполнении команд перехода, вызова и возврата из программ, а также при возникновении прерываний.

Относительный вызов подпрограммы - команда RCALL.

Сначала команда RCALL сохраняет в стеке адрес возврата - текущее значение счетчика команд, увеличенное на 1. Затем содержимое счетчика команд увеличивается или уменьшается на некоторое значение, являющееся операндом команды.

Поскольку операнд представляет собой12-битное число, максимальная величина перехода составляет от -2047 до +2048 слов (±4 КБайт). На выполнение команды, как правило, уходит 3 такта.

Абсолютный вызов подпрограммы - команда CALL.

При выполнении команды после сохранения в стеке адреса возврата в счетчик команд загружается число, являющееся операндом команды. С помощью этой команды можно осуществлять вызов в пределах всего адресного пространства имеющихся на сегодняшний день микроконтроллеров AVR. Команда абсолютного вызова подпрограмм выполняется за 4 такта.

Команды возврата из подпрограмм

В конце каждой подпрограммы обязательно должна находиться команда возврата из нее. В системе команд микроконтроллеров семейства имеется две таких команды.

Для возврата из обычной подпрограммы, вызываемой командами вызова подпрограмм, используется команда RET.

Для возврата из подпрограммы обработки прерывания используется команда RETI.

Обе команды восстанавливают из стека содержимое счетчика команд, сохраненное там перед переходом к подпрограмме. Команда возврата из подпрограммы RETI дополнительно устанавливает в 1 флаг общего разрешения прерываний I регистра SREG, сбрасываемый аппаратно при возникновении прерывания.

На выполнение каждой из команд возврата из подпрограммы требуется 4 или 5 тактов.

Тактовый генератор

В общем виде устройство синхронизации микроконтроллеров семейства Mega имеет блок предделителя и возможность подключения внешней RC-цепочки.

На базе системного тактового сигнала формируются дополнительные сигналы, используемые для тактирования различных модулей и блоков микроконтроллера:

clkCPU - тактовый сигнал центрального процессора. Используется для тактирования блоков микроконтроллера, отвечающих за работу с ядром микроконтроллера (регистровый файл, память данных и т.п.). При выключении этого сигнала ЦПУ останавливается и соответственно прекращаются все вычисления.

clkI/O - тактовый сигнал подсистемы ввода/вывода. Используется большинством периферийных устройств, таких как таймеры/счетчики и интерфейсные модули. Этот сигнал используется также подсистемой внешних прерываний, однако ряд внешних прерываний может генерироваться и при его отсутствии.

clkFLASH - тактовый сигнал для FLASH-памяти программ.

clkASY - тактовый сигнал асинхронного таймера/счетчика. Тактирование осуществляется непосредственно от внешнего кварцевого резонатора (~32.7 кГц).

clkADC - тактовый сигнал модуля АЦП.

Прерывания

Прерывание прекращает нормальный ход программы для выполнения приоритетной задачи, определяемой внутренним или внешним событием микроконтроллера.

При возникновении прерывания микроконтроллер сохраняет в стеке содержимое счетчика команд PC и загружает в него адрес соответствующего вектора прерывания. По этому адресу, как правило, находится команда безусловного перехода к подпрограмме обработки прерывания. Последней командой подпрограммы обработки прерывания должна быть команда RETI, которая осуществляет возврат в основную программу и восстановление предварительно сохраненного счетчика команд.

Младшие адреса памяти программ, начиная с адреса $0002, отведены под таблицу векторов прерывания. Каждому прерыванию соответствует адрес в этой таблице, который загружается в счетчик команд при возникновении прерывания.

Положение вектора в таблице также определяет и приоритет соответствующего прерывания: чем меньше адрес, тем выше приоритет прерывания.

Для перехода к подпрограммам обработки прерываний используются команды JMP.

Таблицу векторов прерываний можно перемещать. Для управления размещением таблицы векторов прерываний для модели ATmega16 используется регистр GICR.

Типы прерываний

Все имеющиеся прерывания можно разделить на два типа.

1. Прерывания первого типа генерируются при наступлении некоторого события, в результате которого устанавливается флаг прерывания. Затем, если прерывание разрешено, в счетчик команд загружается адрес вектора соответствующего прерывания. При этом флаг прерывания аппаратно сбрасывается. Он также может быть сброшен программно, записью 1 в бит регистра, соответствующий флагу.

2. Прерывания второго типа не имеют флагов прерываний и генерируются в течение всего времени, пока присутствуют условия, необходимые для генерации прерывания. Соответственно, если условия, вызывающие прерывание, исчезнут до разрешения прерывания, генерации прерывания не произойдет.

Микроконтроллеры Mega поддерживают очередь прерываний. Если флаг общего разрешения прерываний сброшен, соответствующие флаги устанавливаются в 1 и остаются в этом состоянии до установки флага общего разрешения прерываний. После разрешения прерываний выполняется их обработка в порядке приоритета.

Если прерывание произойдет во время выполнения команды, длящейся несколько циклов, то генерация прерывания произойдет только после выполнения этой команды.

прерывание переполнение таймер счетчик

Внешние прерывания

В микроконтроллерах семейства Mega имеется две разновидности внешних прерываний.

Прерывания первого типа генерируются при появлении на входе внешнего прерывания заданного сигнала.

Прерывания второго типа генерируются при любом изменении состояния определенных выводов микроконтроллера.

Для разрешения/запрещения прерываний используется либо общий регистр управления прерываниями GICR, располагающийся по адресу $3B.

Для индикации наступления «обычных» внешних прерываний в микроконтроллерах Mega используется общий регистр флагов прерываний GIFR.

Прерывания от таймеров/счетчиков

Для разрешения какого-либо прерывания от таймера/счетчика необходимо установить в 1 соответствующий бит регистра TIMSK, и, разумеется, флаг I регистра SREG.

Предделители таймеров/счетчиков

Блоки предделителей предназначены для формирования тактовых сигналов таймеров/счетчиков clkT0, clkT1, clkT3.

Следует иметь в виду, что все таймеры/счетчики каждой модели семейства, не имеющие асинхронного режима работы, используют один и тот же 10-битный предделитель. При этом управление тактовым сигналом каждого таймера/счетчика осуществляется индивидуально и будет описано при их рассмотрении.

Регистры 8-битных таймеров/счетчиков.

TCCR0, TCCR2 - регистр управления.

TCNT0, TCNT2 - счетный регистр.

OCR0, OCR2 - регистр сравнения.

ASSR - регистр состояния асинхронного режима.

После подачи напряжения питания в регистре TCNTn находится нулевое значение. При достижении таймером/счетчиком максимального или минимального значения устанавливается флаг TOVn в регистре флагов TIFR.

Регистры сравнения OCRn входят в состав блоков сравнения модуля. Во время работы таймера/счетчика производится непрерывное этих регистров с регистром TCNTn. В случае равенства содержимого этих регистров в следующем такте устанавливается флаг OCFn и генерируется прерывание.

Регистры TCCRn предназначены для управления модулем таймера/счетчика.

Управление тактовым сигналом

Формирование тактового сигнала таймера/счетчика clkT0 (clkT2) осуществляется блоком предделителя.

В качестве тактового сигнала clkT0 (clkT2) таймеров/сигналов, не имеющих асинхронного режима, может использоваться:

системный тактовый сигнал (clkT0(Т2) = clkI/O);

масштабированный системный тактовый сигнал (clkT0(Т2) = clkI/O /n);

внешний сигнал, поступающий на вход Т0 (Т2) микроконтроллера (clkT0(Т2) = clkEXT).

Выбор источника тактового сигнала, а также запуск и остановка таймеров/счетчиков осуществляется с помощью битов CS02…CS00 (CS22…CS20) регистров управления таймером TCCR0 (TCCR2).

Пояснительная часть

SBRS- Пропуск следующей команды, если бит РОН установлен; IN-Пересылка из РВВ в РОН; OUT-Пересылка из РОН в РВВ; BRMI- Переход по «отрицательное значение»; SUBI-вычитание константы из РОН; LDI- Загрузка константы в РОН; RJMP-Относительный безусловный переход; CP- Сравнение РОН; SBRC- Пропуск следующей команды, если бит РОН сброшен.

Экспериментальная часть

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

#include "m16def.inc"

.org 0x0000 rjmp Reset

.org INT0addr RETI

.org INT1addr RETI

.org OC2addr rjmp Timer2_int_handl

.org OVF2addr RETI

.org ICP1addr RETI

.org OC1Aaddr RETI

.org OC1Baddr RETI

.org OVF1addr RETI

.org OVF0addr RETI

.org SPIaddr RETI

.org URXCaddr RETI

.org UDREaddr RETI

.org UTXCaddr RETI

.org ADCCaddr RETI

.org ERDYaddr RETI

.org ACIaddr RETI

.org TWIaddr RETI

.org INT2addr RETI

.org OC0addr RETI

.org SPMRaddr RETI

Reset:

ldi R18,low(ramend)

out spl,R18

ldi R19,high(ramend)

out sph,r19

ldi r16,255

out DDRB,r16

ldi R18,0b10000000

out timsk,R18

ldi R18,248

out OCR2, R18

ldi R18,0b00010101

out TCCR2, R18

sei

ldi R17,255

start:

rjmp start

Timer2_int_handl:

eor R16,R17

out PORTB,R16

reti

Вывод: изучена работа с памятью в Altmega16, команды для работы со стеком, усвоено создание подпрограмм.

Размещено на Allbest.ru

...

Подобные документы

  • Проектирование механизма обработки прерываний. Контроллер прерываний Intel 82C59A. Ввод-вывод по прерыванию. Программируемый контроллер интерфейса Intel 82C55A. Роль процессора в обработке прерывания ввода-вывода. Обзор алгоритма обработки прерывания.

    контрольная работа [8,0 M], добавлен 19.05.2010

  • Прерывание и его природа. Контролер прерываний. Обработка прерываний в реальном режиме. Характеристики реального режима работы микропроцессора. Схема обработки прерываний в реальном режиме. Написание собственного прерывания. Разработка в общем случае.

    доклад [347,0 K], добавлен 22.09.2008

  • Обработка прерываний - сигналов о совершении некоторых событий в компьютере. Механизм обработки прерываний. Обработка исключений, описание реакции программы на ошибки выполнения. Общее понятие и виды исключительных ситуаций во время выполнения программы.

    реферат [192,2 K], добавлен 10.11.2014

  • Архитектура микроконтроллеров семейства Mega. Организация памяти. Способы адресации памяти данных. Энергонезависимая память данных. Таблица векторов прерываний. Счетчик команд и выполнение программы. Абсолютный вызов подпрограммы. Сторожевой таймер.

    дипломная работа [213,9 K], добавлен 02.04.2009

  • Рассмотрение общих правил отмеривания временных интервалов в различных режимах работы таймеров. Программное обеспечение ввода-вывода данных через параллельные порты таймера. Изучение особенностей использования системы прерываний микроконтроллера.

    лабораторная работа [73,8 K], добавлен 18.06.2015

  • Изучение понятия, векторов и механизмов обработки прерываний; их классификация в зависимости от источника происхождения. Особенности реагирования аппаратной и программной частей операционной системы на сигналы о совершении некоторого события в компьютере.

    реферат [995,8 K], добавлен 22.06.2011

  • Общие сведения о языке ассемблера. Назначение команды прерывания INT число. Описание логической структуры программы: алгоритм работы, используемые методы, входные и выходные данные. Структура и тестирование программы. Руководство оператора программы.

    курсовая работа [90,0 K], добавлен 01.12.2009

  • Выбор и обоснование направления проектирования. Каскадное включение контроллеров. Интерфейс программы, шифратор приоритетов. Неадресуемый конец прерывания. Расчет затрат на оборудование и материалы, отчислений на страховые взносы, на заработную плату.

    дипломная работа [1,4 M], добавлен 29.12.2013

  • Разработка калькулятора на выполнение арифметических функций в 16-ой системе. Использование прерывания от последовательного порта и таймера. Применение системы "прототип" на основе микроконтроллера 51 семейства. Ввод чисел с последовательного порта.

    курсовая работа [18,4 K], добавлен 23.08.2009

  • Генерация звука и обработка прерываний. Создание системы с использованием средств языка программирования Ассемблер. Установка и чтение таймера. Программирование микросхемы таймера 8253/8254. Максимальный программируемый интервал времени для системы.

    реферат [21,4 K], добавлен 10.05.2011

  • Принципы и алгоритмы обработки прерываний. Набор действий по реализации этапов обработки прерываний микропроцессора. Разработка структуры и алгоритма резидентной программы. Реализация программы на языке Ассемблер, методы её отладки и тестирования.

    курсовая работа [348,7 K], добавлен 22.12.2014

  • Подключение периферийных устройств к ЭВМ. Синхронизация выполнения программы с внешними процессами. Прерывания. Реализация механизма прерывания в х86. Прямой доступ к памяти. Шины, магистраль PCI. Процесс загрузки компьютера. Клавиатура, системный таймер.

    презентация [7,1 M], добавлен 14.12.2013

  • Сущность и структура ПК. Техпроцесс в центральных и графических процессорах. Тенденции современного рынка процессоров. Понятие прерывания и основные виды прерываний. Модели различных компаний производителей, их основные характеристики и достоинства.

    курсовая работа [81,5 K], добавлен 07.11.2014

  • Организация центрального процессора. Подключение интерфейсных программируемых БИС. Методы адресации и примеры команд. Программирование таймера и контроллера прерываний. Программная модель микропроцессорной системы. Программирование на языке ассемблера.

    реферат [82,6 K], добавлен 05.12.2010

  • Принципы организации и особенности обработки прерываний на основе контроллера 8259A. Общая характеристика аппаратных средств системы прерываний PIC (Programmable Interrupt Controller). История разработки и порядок работы с технологией Plag and Play.

    курсовая работа [305,1 K], добавлен 29.07.2010

  • Разработка структурной и принципиальной схемы. Блок-схема основной программы и подпрограмм обработки прерываний. Имена переменных, используемых в них. Результаты моделирования работы устройства в программе ISIS пакета Рroteus. Разработка печатной платы.

    курсовая работа [1,5 M], добавлен 13.11.2016

  • Рассмотрение основных особенностей компьютерной программы Assembler: функции, структурное описание. Характеристика собственных векторов обработчиков прерываний. Div64 как функция-вычислитель, реализующая операцию деления знаковых чисел в формате 64:16.

    контрольная работа [224,7 K], добавлен 11.03.2013

  • Написание алгоритма приема 10 пакетов по 12 байт из последовательного порта и размещение их в памяти PRAM. Создание управляющего блока PTSCB для режима блоковой передачи данных. Аппаратная обработка прерываний в режима аналого-цифрового сканирования.

    практическая работа [2,0 M], добавлен 25.04.2012

  • Проектирование ОС Windows 2000, ее архитектура. Процессы и потоки. Уровни запросов на прерывания. Менеджер объектов. Распределение виртуальной памяти. Трансляция виртуальных адресов в физические. Локальный вызов процедуры. Структура сообщения LPC.

    презентация [1,5 M], добавлен 24.01.2014

  • Особенности и свойства операционной системы UNIX, ее история, файловая структура, функции и отличия от других. Архитектура ядра системы. Понятия диспетчеризации, прерываний, системного времени (таймера), кеша. Проблема построения многопроцессорных систем.

    курсовая работа [35,6 K], добавлен 10.05.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.