Смекни!
smekni.com

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

Разряд 7 6 5 4 3 2 1 0
TCNT0

TCNT0[7:0]

Чтение/запись Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп.
Исх. значение 0 0 0 0 0 0 0 0

Регистр таймера-счетчика характеризуется двунаправленностью доступа к 8-разрядному счетчику таймера 0. Запись в регистр TCNT0 блокирует отработку возникающего совпадения на следующем после записи такте синхронизации таймера. Изменение содержимого счетчика (TCNT0) во время счета связано с риском потери результата сравнения между TCNT0 и регистром OCR0.

Регистр порога сравнения - OCR0

Разряд 7 6 5 4 3 2 1 0
OCR0

OCR0[7:0]

Чтение/запись Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп.
Исх. значение 0 0 0 0 0 0 0 0

Регистр порога сравнения содержит 8-разр. значение, которое непрерывно сравнивается цифровым компаратором со значением 8-разр. счетчика (TCNT0). Факт совпадения значений может использоваться для генерации прерывания по выполнению условия сравнения или для генерации прямоугольных импульсов на выводе OC0.

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

.include "m16def.inc"

.def Treg = r16

.def Preg1 = r22

.cseg

.org $000 ; Установка положения в сегменте (см. тему: сброс и установку прерывания)

rjmp start ; назначения перехода на начало программы метка «start»

.org $012 ;назначения перехода по переполнению счетчика на метку «tim»

rjmp tim

Tim:

Out DDRB, preg1

inc preg1

call inittime

reti

start:

clr preg1 ; очищаем регистр (инициализация)

sei ; разрешение прерываний установка биту 7 регистра SREG лог. 1

ldi Treg, 00000001b ;запись числа в «Treg»

out TIMSK, Treg ;запись регистра «Treg» в регистр «Timsk»

call inittime ; вызов подпрограммы «inittime»

ldi Treg, 10000101b

out TCCR0, Treg ; установка тактирования

rcall loop ; вызов «Loop»

Loop:

rjmp loop

ret

inittime:

ldi Treg, 00001111b

out TCNT0, Treg ; установка начального значения с которого начинается «отчет до переполнения»

ret

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

  1. Написать программу, которая увеличивает значение переменной temp, на 1 каждую секунду, и выводит результат на панель светодиодов каждую секунду.
  2. Написать программу, которая работает как обратный таймер, уменьшает значение переменной temp каждую секунду на 1.
  3. Написать программу, которая бегущую строку из светодиодов.

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

1. Разработать алгоритм для выполнения индивидуального задания.

2. Разработать программу для выполнения индивидуального задания.

3. Ввести программу индивидуального задания на ПК.

4. С помощью ПОС проанализировать выполнение индивидуальной программы.

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

6. Сохранить листинг правильно работающей программы.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Тема: Изучение 16 – разрядного Таймера/счетчика 1

Цель: Изучить функционирование и программирование таймера/счетчика 1.

Для выполнения данной лабораторной работы нужно знать:

  • Структуру таймера/счетчик 1.
  • Основные регистры и особенности программирования таймера/счетчик 1.

Краткие теоретические сведения

16-разрядные таймеры-счетчики предназначены для точного задания временных интервалов, генерации прямоугольных импульсов и измерения временных характеристик импульсных сигналов.

Основные отличительные особенности:

  • 16-разрядные счетчики (в т.ч. возможность организации 16-разр. ШИМ) ???
  • Два раздельных блока сравнения
  • Двойная буферизация регистров порога сравнения (OCR)
  • Один блок захвата
  • Подавитель шума на входе блока захвата
  • Режим сброса таймера при совпадении с порогом сравнения (автоматическая перезагрузка)
  • Широтно-импульсная модуляция без генерации ложных импульсов при записи нового порога сравнения в OCR (двойная буферизация) и фазовая коррекция
  • Переменный период ШИМ
  • Частотный генератор
  • Счетчик внешних событий
  • 4 самостоятельных источников прерываний (TOV1, OCF1A, OCF1B, ICF1)

На рисунке 6 и теории, индекс “n” заменяет номер таймера-счетчика , а “x” заменяет наименование канала сравнения (A, или B). Однако при программировании необходимо использовать фактические номера и наименования. Например, для записи нового состояния таймера-счетчика 1 в программе необходимо указывать TCNT1.

Функциональная схема 16-разр. таймера-счетчика показана на рисунке 6. Если требуется конкретизировать расположение того или иного вывода см. “Расположение выводов”. Регистры ввода-вывода, а также биты или линии ввода-вывода, к которым организован доступ от ЦПУ, выделены жирной линией. Описание регистров, расположение и назначение бит данных таймеров представлены в параграфе “Описание регистров 16-разр. таймеров-счетчиков”.


Рисунок 12. Функциональная схема 16-разр. таймера-счетчика

Регистры таймер/счетчика 1

Регистр А управления таймером-счетчиком 1 – TCCR1A

Bit

7

6

5

4

3

2

1

0

COM1A1

COM1A0

COM1B1

COM1B0

FOC1A

FOC1B

WGM11

WGM10

TCCR1A

Чтение/запись

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Исх. значение

0

0

0

0

0

0

0

0

Биты 7:6 – COM1A1:0: Режим формирования выходного сигнала канала A

Биты 5:4 – COM1B1:0: Режим формирования выходного сигнала канала В

Биты COMnA1:0 и COMnB1:0 влияют на работу выводов OCnA и OCnB, соответственно. Если один или оба бита COMnA1:0 равны 1, то вывод OCnA переходит к выполнению альтернативной функции, запрещая его работу как обычного порта ввода-вывода. Аналогичные изменения происходят с выводом OCnB во время записи лог. 1 в один из битов COMnB1:0. Однако необходимо учитывать, что остается влияние на работу данных выводов со стороны регистра направления данных (DDR) и в соответствующих разрядах этого регистра должно быть задано выходное направление для выводов OCnA или OCnB.