Программирование на языке Си

Занятие 1: Введение. Основы работы в среде Microsoft Visual Studio. Создание проекта «Win32 Console Application». Переменные и арифметические выражения, оператор for, символические константы, массивы, функции.

Занятие 2: Основы синтаксиса языка Си. Ключевые слова. Базовые типы данных (bool, char, int, double). Определение переменных и констант. Выражения, операции, комментарии. Приведение типов. Приоритет операторов.

Занятие 3: Управляющие конструкции. Операторы if-else, switch. Циклы while, for, do-while. Операторы break, continue, goto.

Занятие 4: Препроцессор Си. Директивы препроцессора и их использование. Включение файлов, макроподстановки, условное включение.

Занятие 5: Процедурный подход программирования. Определение функции и структура программ. Прототип функции. Передача параметров в функции по значению, передача массивов в функции. Блоки и правила видимости переменных. Локальные, глобальные, статические переменные. Рекурсия.

Занятие 6: Модульный подход в программировании. Использование *.h файлов. Раздельная компиляция. Внешние (extern) и статические (static) глобальные переменные и функции. Математические функции стандартной библиотеки Си (<math.h>).

Занятие 7: Указатели. Массивы. Адресная арифметика. Передача параметров в функции по указателю. Функции работы с динамической памятью (malloc/free/realloc). Динамические массивы. Сложные декларации, определение синонимов типов (typedef). Указатель на функцию.

Занятие 8: Структуры и функции. Массивы структур. Указатели на структуры. Структуры со ссылками на себя. Поиск по таблице.

Занятие 9: Пользовательские типы данных (enum, struct, union). Объединения. Битовые поля.

Занятие 10: Ввод-вывод в языке Си. Форматированный ввод-вывод. Стандартные средства ввода-вывода. Доступ к файлам.

Программирование 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: Работа с флеш-памятью микроконтроллера. Виды памяти и принципы их работы. Запись во флэш память из прошивки. Отличие от записи в оперативную память. Написание простой программы с использованием флеш памяти.

Микроконтроллерное управление двигателями

Занятие 1: Введение. Двигатели в задачах современной автоматизации. Виды двигателей, их особенности. Достоинства и недостатки. Характеристики двигателей. Тестовая плата для

контроллера двигателей. Обзор. Демонстрация процесса работы.

Занятие 2: Инверторы. Полный мост. ШИМ модуляция. Вывод ШИМ сигнала, вращение DC двигателем с помощью тестовой платы.

Занятие 3: Обратная связь. Необходимость обратной связи. Датчики тока. Датчики оборотов. Энкодеры. Запуск программы, для работы с энкодером.

Занятие 4: Контур ПИД регулирования. Построение контура ПИД регулирования на примере DC двигателя. Регулировка скорости вращения.

Занятие 5: Продолжение работы над ПИД (ПИ, П) регулятором для DC двигателя. Подбор параметров: ручной и автоматический.

Занятие 6: Управления шаговым двигателем. Режимы работы: полный шаг, микрошаг. Overdrive режим. Основные методики контроля тока в обмотке: chopper регулирование, PWM

модуляция. Микроконтроллерная реализация микрошагового (полушагового, полношагового) режима при помощи модуляции ШИМ.

Занятие 7: Микрошаговый (полушаговый, полношаговый) режим работы шагового двигателя. Продолжение работы над программой.

Занятие 8: Принципы векторного регулирования. Системы координат. Векторное управление асинхронным электродвигателем.

Занятие 9: Векторное управление синхронным электродвигателем с постоянными магнитами. Структурная схема системы регулирования скорости синхронного двигателя.

Занятие 10: Трёхфазный ШИМ инвертор. Синусоидальная ШИМ. Векторная ШИМ.