
- •6.050702 «Електромеханвка»,
- •Создание нового проекта
- •Организация памяти
- •Сведения о портах ввода/вывода
- •Команды языка Assembler, необходимые для выполнения заданий
- •Контрольные вопросы
- •Описание stk500
- •Порядок выполнения работы
- •Индивидуальные задания
- •Контрольные вопросы
- •Организация памяти мк AtMega16
- •Введение
- •Команды работы с памятью
- •Индивидуальные задания
- •Контрольные вопросы:
- •Система прерываний AtMega16. Таймер/счетчик
- •Введение
- •Индивидуальные задания
- •Индивидуальные задания
- •Контрольные вопросы
- •Управление скоростью «бега» огонька по светодиодной панели микроконтроллера AtMega16
- •Порядок выполнения работы
- •Варианты заданий для студентов
- •Контрольные вопросы
- •Основы работы в среде разработки CodeVisionAvr. Широтно-импульсная модуляция (шим) микроконтроллера AtMega16
- •Введение
- •Среда разработки CodeVisionAvr. Пример генерации начального кода программы
- •Пример программы с комментариями
- •Индивидуальные задания
- •Usart: универсальный синхронный и асинхронный последовательный приемопередатчик микроконтроллера AtMega16
- •1. Введение
- •Генерация внутренней синхронизации – генератор скорости связи
- •Работа с удвоением скорости связи (u2x)
- •Режим синхронной связи
- •Форматы посылки
- •1.1.5 Бит паритета
- •1.1.6. Инициализация усапп
- •1.1.9. Передача данных
- •1.1.10. Передача посылок с 5…8 битами данных
- •1.2. Конфигурирование Atmega16
- •1.2.1. Конфигурирование порта d
- •1.2.2. Описание регистров усапп
- •1.3. Генерация начального кода программы в среде разработки CodeVisionAvr
- •1.4. Работа с терминалом
- •1.5. Описание и листинг программы
- •Контрольные вопросы:
Варианты заданий для студентов
Вариант |
Направление бега светодиодов |
Число скоростей |
Номер таймера |
Номер внешнего прерывания |
Тип прерывания от таймера |
1 |
слева направо |
3 |
0 |
0 |
Переполнение |
2 |
слева направо |
3 |
1 |
1 |
Достижение значения |
3 |
слева направо |
3 |
0 |
2 |
Переполнение |
4 |
слева направо |
4 |
1 |
0 |
Достижение значения |
5 |
слева направо |
4 |
0 |
1 |
Переполнение |
6 |
слева направо |
4 |
1 |
2 |
Достижение значения |
7 |
справа налево |
5 |
0 |
0 |
Переполнение |
8 |
справа налево |
5 |
1 |
1 |
Достижение значения |
9 |
справа налево |
5 |
0 |
2 |
Переполнение |
10 |
справа налево |
6 |
1 |
0 |
Достижение значения |
11 |
справа налево |
6 |
0 |
1 |
Переполнение |
12 |
справа налево |
6 |
1 |
2 |
Достижение значения |
Контрольные вопросы
Как создать проект на языке Си в среде разработки AVR Studio?
Какой источник тактирования выбран?
Что нужно сделать для добавления новых файлов в проект?
Что хранится в заголовочном файле appl.h?
Что находится в файле appl.c?
Что располагается в главном модуле программы?
Основы работы в среде разработки CodeVisionAvr. Широтно-импульсная модуляция (шим) микроконтроллера AtMega16
Освоение интегрированной среды разработки программ для микроконтроллеров Atmel семейства AVR CodeVisionAVR, формирование навыков программирования на языке С. Генерация ШИМ.
Введение
Широтно-импульсная модуляция (ШИМ, Pulse-width modulation – PWM) – дискретизация непрерывного сигнала бинарным сигналом (с двумя уровнями – 1/0) так, что средние уровни сигнала за некоторый отрезок времени равны. ШИМ есть импульсный сигнал постоянной частоты и переменной скважности, то есть обратного отношения длительности импульса к периоду его следования. С помощью задания скважности (длительности импульсов) можно менять среднее напряжение на выходе ШИМ.
Рис. 1. Широтно-импульсная модуляция
Параметры ШИМ:
Т – период ШИМ (время между фронтами (или спадами) соседних импульсов),
А – длительность импульса,
Т/А – скважность ШИМ,
А/Т – величина ШИМ.
В работе используется таймер/счетчик 1 (работа в режиме PWM) и порт D (выход ШИМ).
Выводы порта D с альтернативными функциями показаны в табл. 1.
Табл. 1.
Альтернативные функции порта D
Вывод порта |
Альтернативная функция |
PD7 |
OC2 (выход компаратора и выход ШИМ таймера-счетчика 2) |
PD6 |
ICP1 (вход триггера захвата фронта таймера-счетчика 1) |
PD5 |
OC1A (выход A компаратора и ШИМ таймера-счетчика 1) |
PD4 |
OC1B (выход В компаратора и ШИМ таймера-счетчика 1) |
PD3 |
INT1 (вход внешнего прерывания 1) |
PD2 |
INT0 (вход внешнего прерывания 0) |
PD1 |
TXD (выход передачи УАПП) |
PD0 |
RXD (вход приема УАПП) |
16-разрядные таймеры-счетчики предназначены для точного задания временных интервалов, генерации прямоугольных импульсов и измерения временных характеристик импульсных сигналов.
Таймер/счетчик 1 (TC1) – 16-битовый модуль, содержащий 10 8-битовых регистров. Эти регистры фактически являются набором из 5 16-битовых регистров. Счет происходит в регистрах TCNT1H (Timer counter 1 High byte) и TCNT1L (Low byte), вместе составляющих 16-битовый регистр TCNT1.
Табл. 2.
Регистр А управления таймером-счетчиком 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.
Табл. 3.
Описание битов выбора режима работы порта А и В, режим Fast PWM
COM1A1/ COM1B1 |
COM1A0/ COM1B0 |
Описание |
0 |
0 |
Нормальная работа порта, сигналы OC1A/OC1B отключены. |
0 |
1 |
Если биты WGM13:0 = 15: переключение (инвертирование) OC1A при совпадении, OC1B отключен (нормальная работа порта). Для всех остальных установок WGM13:0 – нормальная работа порта, сигналы OC1A/OC1B отключены. |
1 |
0 |
Сброс OC1A/OC1B при совпадении (неинвертирующий режим). |
1 |
1 |
Установка OC1A/OC1B при совпадении (инвертирующий режим). |
Табл. 4.
Описание битов выбора режима работы порта А и В, режим PWM с фазовой коррекцией, с фазово-частотной коррекцией
COM1A1/ COM1B1 |
COM1A0/ COM1B0 |
Описание |
0 |
0 |
Нормальная работа порта, сигналы OC1A/OC1B отключены. |
0 |
1 |
Если биты WGM13:0 = 9 или 14: переключение (инвертирование) OC1A при совпадении, OC1B отключен (нормальная работа порта). Для всех остальных установок WGM13:0 – нормальная работа порта, сигналы OC1A/OC1B отключены. |
1 |
0 |
Сброс OC1A/OC1B при совпадении на подъеме фронта. Установка OC1A/OC1B при совпадении на спаде фронта. |
1 |
1 |
Установка OC1A/OC1B при совпадении на подъеме фронта. Сброс OC1A/OC1B при совпадении на спаде фронта. |
Биты 3:2 – FOC1A:FOC1B: Режим формирования силы выходного сигнала.
Биты 1:0 – WGMn1:0: Режим работы таймера-счетчика.
В сочетании с битами WGM13:2 из регистра TCCRnB данные биты определяют алгоритм счета, источник для задания вершины счета (ВП) и тип генерируемой формы сигнала. Таймер-счетчик может работать в одном из следующих режимов: нормальный режим (счетчик), сброс таймера при совпадении (CTC) и три типа режимов с широтно-импульсной модуляцией (PWM).