Программирование 32-разрядных микроконтроллеров
Занятие 1: Введение. Устройство микроконтроллера. Понятие "микроконтроллер". Семейства микроконтроллеров. Применение микроконтроллеров. Блоки контроллера: общий ввод-вывод, тактирование, таймеры, прерывания, периферия, возможность отладки. Язык С для ARM. Отличия написания программы по сравнению с программированием под PC. Ввод и вывод. Адресация. Двоичное и шестнадцатиричное счисление. Среда программирования IAR EWARM. Загрузка программы в микроконтроллер. Создание программы ввода-вывода. Освоение связи схемы платы и прошивки, документации, поиска адресов аппаратных регистров.
Занятие 2: Зачем нужны прерывания. Блок контроля прерываний, вектора прерываний, приоритеты. Флаги прерываний в контроллерах LuminaryMicro. Написание программы асинхронного ввода-вывода. Освоение документации к NVIC, возможностей прерываний GPIO, маски побитового доступа, стартового кода, таблицы векторов прерываний, дребезга контактов, макросов таблиц адресов аппартаных регистров и доступа к ним, правил написания обработчиков прерываний.
Занятие 3: Обмен данными. UART. Обмен данными с другими устройствами. Последовательная и параллельная передача данных, UART. Понятие протокола передачи данных. Помехоустойчивость и коррекция ошибок. RS232 для микроконтроллера и компьютера. Виртуальный USB-RS232 порт. Альтернативные функции порта GPIO. Написание эхо-программы UART с использованием прерываний. Освоение альтернативной функции GPIO, правил как не сломать контроллер, работы с COM портом на компьютере, событий UART.
Занятие 4. Таймеры. Режимы работы таймеров, измерение коротких времен. Написание программы синхронного вывода с использованием прерываний и таймера. Освоение библиотеки driverlib.
Занятие 5. Доделывание программ: ввод-вывод, асинхронный ввод-вывод, UART-эхо, синхронный вывод при помощи таймера.
Занятие 6. Широтно-импульсная модуляция (ШИМ). Методы синхронизации каналов ШИМ. Разработка программ периодического плавного управления выходной мощностью с использованием таймера и генератора ШИМ. Освоение цифровых компараторов как
способа плавного регулирования, счётчиков как делителей частоты.
Занятие 7: АЦП, ЦАП. Скорость дискретизации и разрядность. Режимы запуска АЦП, дифференциальный режим измерения. Алгоритмы усреднения измеренных величин: скользящее среднее и экспоненциальное усреднение Разработка программы цифрового контроллера напряжения.
Занятие 8: Интерфейс I2C. Физическая реализация. Open-drain и pull-up. Выделенные адреса. Арбитраж. Типы обнаруживаемых ошибок. Multi-master. Как можно автоматически распределить адреса? Примеры других последовательных интерфейсов (SPI, CAN). Программа обнаружения дисплея на тестовой плате и автоматическое определение его адреса.
Занятие 9: Взаимодействие с дисплеем. Устройство дисплея. Пиксели, цвет, битность изображения. Протокол записи информации на дисплей. Написание программы вывода на дисплей.
Занятие 10: Работа с флеш-памятью микроконтроллера. Виды памяти и принципы их работы. Запись во флэш память из прошивки. Отличие от записи в оперативную память. Написание простой программы с использованием флеш памяти.