Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / 5 / МПС_ИДЗ5

.docx
Скачиваний:
0
Добавлен:
12.02.2026
Размер:
155.77 Кб
Скачать

Задание 5.1

Реализуйте программу, позволяющую управлять яркостью светодиода командами, передаваемыми по интерфейсу UART с ПК. Для этого настройте интерфейс UART на приём данных, а таймер в режим ШИМ-модуляции, в котором скважность будет задаваться числом, пришедшим с ПК.

Считайте, что с ПК могут приходить символы:

от "0" до "9", где "0" соответствует минимальной яркости, а "9" – максимальной яркости.

"s" – включение с последней яркостью

"p" – включение светодиода

По умолчанию после начала работы светодиод выключен, яркость после отправки команды «p» соответствует яркости «0».

Тест кейс:

Действие

Результат

1. Подали питание на отладочную плату

Светодиод не горит

2. Отправили команду "s"

Светодиод загорелся с яркостью 0

3. Отправили команду "5"

Светодиод изменил яркость на 5

4. Отправили команду "p"

Светодиод потух

5. Отправили команду "9"

Визуально ничего не изменилось

6. Отправили команду "s"

Светодиод загорелся с яркостью 9

7. Отправили команду "p"

Светодиод потух

Рекомендуется начать выполнение работы с создания «эха». Т.е. при получении байта информации от ПК микроконтроллер должен этот же байт отправить обратно. Таким образом можно убедиться в правильности настройки интерфейса UART в обе стороны.

Задание 5.2

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

Считайте, что с ПК могут приходить символы:

от "1" до "9", где цифра интерпретируется как частота мигания диода в Гц.

"s" – включение с последней частотой

"p" – включение светодиода

По умолчанию после начала работы светодиод выключен, частота после отправки команды «p» соответствует частоте «1».

Тест кейс:

Действие

Результат

1. Подали питание на отладочную плату

Светодиод не горит

2. Отправили команду "s"

Светодиод начал мигать с частотой 1

3. Отправили команду "5"

Светодиод изменил частоту на 5

4. Отправили команду "p"

Светодиод потух

5. Отправили команду "9"

Визуально ничего не изменилось

6. Отправили команду "s"

Светодиод начал мигать с частотой 9

7. Отправили команду "p"

Светодиод потух

Рекомендуется начать выполнение работы с создания «эха». Т.е. при получении байта информации от ПК микроконтроллер должен этот же байт отправить обратно. Таким образом можно убедиться в правильности настройки интерфейса UART в обе стороны.

Задание 5.3

Реализуйте программу, принимающую строку по интерфейсу UART и выводящая её при помощи светодиода в виде кода азбуки Морзе.

Считайте, что с ПК могут приходить символы “a” .. “z”, “0” .. “9”, а также пробел.

Единичную длительность вынесите как #define.

Рекомендуется начать выполнение работы с создания «эха». Т.е. при получении байта информации от ПК микроконтроллер должен этот же байт отправить обратно. Таким образом можно убедиться в правильности настройки интерфейса UART в обе стороны.

Задание 5.4

Реализуйте программу для отслеживания событий нажатия на кнопку. Программа должна отправлять на ПК сообщения вида [<time_ms>] <event>,<total_evt_cnt>, где

<time_ms> - счётчик времени от начала работы программы или последнего сброса

<event> - текущее событие - нажатие или отпускание кнопки

<total_evt_cnt> - счётчик событий с начала работы программы

Например:

[1256] 1,107

[1879] 0,108

Разрешение по времени должно быть равно 1 мс

При быстром двойном нажатии на кнопку должно регистрироваться событие «2», и счётчик времени сбрасываться до 0 мс.

Счёт времени реализовать на таймере

Задание 5.5

Реализуйте программу для управления цветом адресного светодиода WS2812B.

Схема подключения:

Светодиод

Отладочная плата

+5V

VCC или VUSB

DIN

Одно из: PA3, PA4, PA6, PA7

Gnd

GND

Адресные светодиоды серии WS2812B управляются однопроводным интерфейсом, с частотой передачи информации 800кГц. Логические «0» и «1» кодируются скважностью передаваемых импульсов:

После окончания передачи данных на линии должно быть выставлено состояние RET. После прошествия Treset времени в таком состоянии светодиод изменит свой цвет на последний полученный.

Цвет передаётся в формате 24bit GRB:

  1. Напишите прошивку, которая способна зажечь светодиод одним постоянным цветом. Цвет может быть жёстко зашит в последовательность команд на передачу данных. Просто чтобы убедиться, что мы умеем передавать данные.

  1. Модифицируйте прошивку так, чтобы цвет для отправки на диод брался из трёх регистров общего назначения.

  1. Модифицируйте прошивку так, чтобы создавалась небольшая анимация. Как минимум последовательное переключение цветов: красный, зелёный, синий, белый. Как максимум можно перебрать полный спектр цветов RGB и сделать радугу.

Рекомендации:

Частота нашего МК 8МГц, если отключить предделитель ядра. Тогда каждая операция будет выполняться за 125нс, а каждый бит на ленту должен передаваться за 10 тактов (3+7 или 7+3). Незадействованные такты во время передачи можно заполнить или инструкциями nop (1 такт) или инструкциями rjmp .+0 (сразу 2 такта)

Частота у нашего контроллера на нижней границе того, что необходимо для обеспечения интерфейса светодиода. Поэтому чтобы попасть в тайминги необходимо писать передачу битов на Assembler’е. Можно делать проект на С, но тогда для него потребуется делать Assembler’ную вставку. Это возможно, но лишние проблемы.

Для задания 3 необходимо обеспечить задержку между обновлениями цвета. Допустим – раз в секунду. Можно сделать это на прерываниях таймера или с помощью цикла задержки из л/р1.

Соседние файлы в папке 5