Порядок выполнения лабораторной работы. Y – первая цифра номера группы + 1

Для всех вариантов:

Y – первая цифра номера группы + 1

G – последняя цифра номера группы

  1. Собрать в Proteus схему, включающую микроконтроллер ATmega32 и два семи сегментных 7SEG-BCD индикатора, подключенных к выводам порта A. При необходимости использования внешнего прерывания подключить к соответствующему выводу микроконтроллера ключ с внешним подтягивающим резистором. В случае генерации ШИМ сигнала подключить к соответствующим выводам виртуальный осциллограф.
  2. Составить программу на языке ассемблер, реализующую следующий функционал:
№ вар. Задание
  Генерировать быстрый ШИМ сигнал с помощью таймера 0. Предделитель отключен. Каждые 1000*G циклов таймера увеличивать скважность импульсов на Y (использовать обработчик прерывания таймера 0), выводить текущую скважность на индикаторы.
  Запустить таймер 1, по каждому Y прерыванию захвата выводить на индикаторы старший байт числа, деленный на 2^G.
  Таймер 0 работает в режиме счетчика нарастающих фронтов сигнала. По сравнению с Y сбросить счетчик и увеличить число на индикаторах на G.
  Обрабатывать внешнее прерывание int0. По убывающему фронту запустить таймер 1 в режиме СТС, предделитель 1/64, сравнение с числом 0х15*Y, считать число циклов таймера, по нарастающему фронту int1 остановить таймер, вывести число прошедших циклов таймера, деленное на 2^G.
  Обрабатывать внешнее прерывание int0. По нарастающему фронту запустить таймер 0, считать число циклов таймера, по Y убывающему фронту int0 остановить таймер, вывести число прошедших циклов таймера, деленное на 2^G.
  Генерировать ШИМ сигнал с фазовой коррекцией с помощью таймера 0. Предделитель 1/256. Каждые G секунд увеличивать скважность на 3*Y (использовать задержку в основном цикле программы), выводить текущую скважность на индикаторы.
  Обрабатывать внешнее прерывание int1. По нарастающему фронту запустить таймер 0 с предделителем 1/128 в режиме быстрого ШИМ со скважностью 0x20*G, считать число циклов таймера, по Y убывающему фронту int1 остановить таймер.
  Генерировать быстрый ШИМ сигнал с помощью таймера 0. Предделитель 1/256. Каждые G*2 секунды увеличивать скважность на Y*3 (использовать задержку в основном цикле программы), выводить текущую скважность на индикаторы.
  Генерировать два быстрых ШИМ сигнала с помощью таймера 1. Предделитель отключен. Скважность ШИМ2 0x00FF, каждые 1000*G циклов таймера увеличивать скважность импульсов ШИМ1 на Y.
  Запустить таймер 1 с предделителем 1/1024, по прерыванию переполнения вывести на индикаторы 0x00, по совпадению с числом, вывести данное число. В основном цикле увеличивать число на Y каждые G секунды.
  Обрабатывать внешнее прерывание int0. По Y убывающему фронту запустить таймер 0, считать число циклов таймера, после этого по G нарастающему фронту int1 остановить таймер, вывести число прошедших циклов таймера.
  Таймер 0 работает в режиме счетчика нарастающих спадающих фронтов сигнала. По сравнению с Y+5 сбросить счетчик и увеличить число на индикаторах на G.
  Запустить таймер 1, по Y прерыванию захвата выводить на индикаторы младший байт числа, деленный на 2^G.
  Обрабатывать внешнее прерывание int1. По G нарастающему фронту запустить таймер 1 в режиме СТС (сравнивать с число 100*Y), считать число циклов таймера, по убывающему фронту int1 остановить таймер, вывести число прошедших циклов таймера.
  Запустить таймер 0 с предделителем 1/1024, по прерыванию переполнения вывести на индикаторы 0x00, по совпадению с числом, вывести данное число. В основном цикле уменьшать число на Y каждую G секунду.
  Генерировать три быстрых ШИМ сигнала при помощи таймеров 1 и 2. В основном цикле каждую секунду увеличивать скважность ШИМ1 на 0x30, ШИМ2 на 0x20*G, ШИМ3 на 0x05*Y.
  Генерировать ШИМ сигнал с коррекцией фазы с помощью таймера 0. Предделитель 1/64. Каждые 100*G циклов таймера увеличивать скважность импульсов на Y (использовать обработчик прерывания таймера 0), выводить текущую скважность на индикаторы.
  Таймер 1 работает в режиме счетчика спадающих фронтов сигнала. По сравнению с G запустить таймер с предделителем 1/1024, по переполнению увеличивать число на индикаторах на Y.
  Генерировать два быстрых ШИМ сигнала при помощи таймеров 0 и 1. В основном цикле каждую секунду увеличивать скважность на 0x10*G и 0x10*Y соответственно.
  Таймер 0 работает в режиме счетчика нарастающих фронтов сигнала, таймер 1 - спадающих. По сравнению с G таймера 0 вывести на индикаторы число G, по сравнению с Y*4 таймера 1 вывести на индикаторы число Y*4 и сбросить оба таймера.
  Генерировать два быстрых ШИМ сигнала с помощью таймера 1. Предделитель 1/128. Скважность ШИМ1 0x0FFF, каждые 100*G циклов таймера увеличивать скважность импульсов ШИМ2 на Y.
  Обрабатывать внешнее прерывание int1. По G убывающему фронту запустить таймер 1 в режиме СТС, предделитель 1/256, сравнение с числом 0х20*Y, считать число циклов таймера, по нарастающему фронту int1 остановить таймер, вывести старший байт числа прошедших циклов таймера.
  Генерировать два быстрых ШИМ сигнала при помощи таймеров 0 и 2. В основном цикле каждую секунду увеличивать скважность на 0x10*G и 0x10*Y соответственно.
  Обрабатывать внешнее прерывание int0. По G нарастающему фронту запустить таймер 1 в режиме СТС (сравнивать с число 100*Y) с предделителем 1/8, считать число циклов таймера, по убывающему фронту int1 остановить таймер, вывести число прошедших циклов таймера.
  Генерировать два ШИМ сигнала с коррекцией фазы при помощи таймеров 0 и 1. В основном цикле каждую секунду увеличивать скважность на 0x08*G и 0x04*Y соответственно.
  Запустить таймер 1 с предделителем 1/8, по G прерыванию переполнения вывести на индикаторы 0x00, по совпадению с числом, вывести старший байт данного числа. В основном цикле уменьшать число на 0x10*Y каждую секунду.
  Обрабатывать внешнее прерывание int1. По Y нарастающему фронту запустить таймер 0 с предделителем 1/128, считать число циклов таймера, после чего по G убывающему фронту int1 остановить таймер, вывести число прошедших циклов таймера.
  Таймер 0 работает в режиме счетчика спадающих фронтов сигнала. По сравнению с Y+5 сбросить счетчик и увеличить число на индикаторах на G.
  Генерировать два ШИМ сигнала с коррекцией фазы помощью таймера 1. Предделитель отключен. Скважность ШИМ1 0x00FF, каждые 1000*G циклов таймера увеличивать скважность импульсов ШИМ2 на Y.
  Генерировать быстрый ШИМ сигнал с помощью таймера 0. Предделитель 1/1024. Каждые G секунд увеличивать скважность на Y (использовать задержку в основном цикле программы), выводить текущую скважность на индикаторы.

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

1. Механизм прерываний.

2. Вектор прерываний микроконтроллера AVR, приоритет выполнения прерываний.

3. Система таймеров/счетчиков микроконтроллеров AVR.

4. Устройство таймера-счетчика 0.

5. Устройство таймера-счетчика 1.

6. Устройство таймера-счетчика 2.

7. Режимы работы ШИМ, СТС.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: