Смекни!
smekni.com

Методические указания к лабораторным работам со стендом (стр. 9 из 9)

Регистр флагов прерываний таймеров-счетчиков – TIFR

Разряд 7 6 5 4 3 2 1 0
OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 OCF0 TOF0 TIFR
Чтение/запись Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп.
Исх. значение 0 0 0 0 0 0 0 0

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

Разряд 5 – ICF1: Флаг захвата состояния таймера-счетчика 1

Флаг устанавливается, если на входе ICP1 определяется условие захвата. Если регистр захвата ICR1 выбран с помощью бит WGMn3:0 в качестве источника верхнего предела счета, флаг ICF1 устанавливается по достижении верхнего предела счета.

ICF1 автоматически сбрасывается при переходе на вектор прерывания по захвату состояния таймера-счетчика. Альтернативно флаг ICF1 можно сбрасывать путем записи в него лог. 1.

Разряд 4 – OCF1A: Флаг результата сравнения канала А таймера-счетчика 1

Данный флаг устанавливается следующим тактом после совпадения значения TCNT1 с регистром А порога сравнения (OCR1A).

Обратите внимание, что строб принудительной установки результата сравнения (FOC1A) не устанавливает флаг OCF1A. Флаг OCF1A автоматически сбрасывается при переходе на соответствующий вектор прерывания.

Альтернативно, флаг OCF1A сбрасывается путем записи в него лог. 1.

Разряд 3 – OCF1B: Флаг результата сравнения канала B таймера-счетчика 1

Данный флаг действует аналогично предыдущему, но в отношении канала сравнения В.

Разряд 2 – TOV1: Флаг переполнения таймера-счетчика 1

Установка данного флага зависит от значений бит WGMn3:0. В нормальном режиме и режиме СТС флаг TOV1 устанавливается при переполнении таймера-счетчика. См. табл. 61 для изучения поведения флага TOV1 при задании других значений WGMn3:0. Флаг TOV1 автоматически сбрасывается при переходе на вектор прерывания по переполнению таймера-счетчика 1. Альтернативно флаг TOV1 сбрасывается путем записи в него лог. 1.

Пример программы на ассемблере, использующей таймер/счетчик 1

.include "m16def.inc"

.def Temp = r17

.def TemH = r20

.def TemL = r19

.cseg

.org $0

rjmp start

.org $10

rjmp tim

; ****обработка по прерыванию****

Tim:

Out PORTB, Temp

inc temp

call init

reti

; ****Задаем "счет" для таймера1 = 1сек.****

init:

cli

ldi TemH, 0b11000111

out TCNT1H, TemH

ldi TemL, 0b00000100

out TCNT1L, TemL

ret

; ****Начало главной программы****

start:

; ***инициализируем стек***

ldi TemH,high(RAMEND) ; Main program start

out SPH,TemH ; Set Stack Pointer to top of RAM

ldi TemL,low(RAMEND)

out SPL,TemL

cli

ser temp

out DDRB, temp ; set portB to output

clr temp

; ****считываем данные с порта "D" ****

Begin:

out PORTB, temp

in TemH, pind

com TemH

eor temp, TemH

clr TemH

dly:

dec TemH

brne dly

dec TemL

brne dly

sbrs temp,0x07

rjmp Begin

; ****настариваем таймер1 ( /64 /TOV1)

call init

ldi TemH, 0b00000100

out TIMSK, TemH

sei

ldi TemL, 0b00000011

out TCCR1b, TemL

loop:

cpi temp,0b00000001

breq start

rjmp loop

Индивидуальные задания

  1. Написать программу, которая по нажатию на кнопку «SW1» заставляет мигать светодиоды «led1, led2,led3», все возможными комбинациями, т.е. 000, 001, ….., 111.
  2. Написать программу, которая плавно зажигает светодиоды.
  3. Написать программу, которая создает бегущую строку из светодиодов.

Порядок выполнения лабораторной работы.

  1. Разработать алгоритм для выполнения индивидуального задания.
  2. Разработать программу для выполнения индивидуального задания.
  3. Написать программу индивидуального задания на ПК.
  4. С помощью ПОС проанализировать выполнение индивидуальной программы

5. Загрузить программу в стенд STK500. Убедиться в правильном выполнении индивидуального задания, при отрицательном результате осуществить изменение алгоритма либо программы. Повторить загрузку

программы в стенд ОЭВМ

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

Контрольные вопросы:

1. Структура системы прерывания ATmega16.

2. Назначение, примеры применения системы прерывания.

3. Регистры управления, распределение памяти в ATmega16.

4. Прерывание от таймеров, последовательного приемопередатчика

5. Аппаратное устранение дребезга контактов для схем с TTL и КМОП.

6. Программное устранение дребезга контактов.

7. Необходимость применения аппаратного либо программного устранения дребезга контактов.

8. Методы и типы частотного и временного преобразования.

9. Параметры частотного преобразования.

10. Факторы, влияющие на погрешность частотного преобразования.

11. Понятие разрешающая способность частотного преобразования.

12. Измерение периода.

13. Характеристика преобразования, нелинейность частотного преобразования.

14. Аппаратные реализации частотного и временного преобразования.

15. Примеры практического применения частотного и временного преобразования.