Часть 1 – Аппаратная часть
Программное обеспечение нашего проекта, как для микроконтроллера, так и для ПК с ОС Windows, условно разделяется на два типа:
- базовое ПО, с помощью которого пользователь может протестировать все функции и проверить работу программы
- демонстрационное ПО, показывающее, как использовать основные команды USB и функции для работы с периферией, подключенной к микроконтроллеру AVR.
Помните, что предоставляемое ПО (прошивка) не оптимизировано с целью сокращения объема кода, т.к. помимо всех команд, которые используются интерфейсом USB, присутствует еще некоторые определения и отладочная информация. Поэтому рекомендуется, при дальнейшем применении данной USB HID структуры и разработке пользовательских приложений, ненужный для пользовательского приложения код удалить. Это, в свою очередь, позволит применить как стек LUFA, так, если потребуется, и нашу библиотеку функций для микроконтроллеров AVR ATmega8.
Програмное обеспечение для микроконтроллера разработано в среде AVR Studio 5.
Базовое ПО микроконтроллера
Базовое программное обеспечение для микроконтроллера обрабатывает ивыполняет 6 основных USB команд. Пять из них действуют одновременно, и как для демонстрации работы программной структуры, и как средство регрессивного тестирования, чтобы убедиться, что USB HID структура функционирует корректно. Они выполняют пять основных операций:
- получение 1 пакета данных от Host, проверка содержимого пакета;
- получение 1 пакета данных от Host, проверка содержимого пакета и ответ Host-устройству 1 пакетом данных;
- получение 1 пакета данных от Host, проверка содержимого пакета и ответ Host-устройству 128 пакетами данных;
- получение 128 пакетов данных от Host, проверка содержимого пакета и ответ Host-устройству 1 пакетом данных;
- получение 128 пакетов данных от Host, проверка содержимого пакета и ответ Host-устройству 128 пакетами данных.
USB Generic HID стек настроен на работу с 64-байтными пакетами данных. Это означает, что в самом экстремальном тесте мы получаем 8 КБайт данных от Host-устройства (128 пакетов) и затем отвечаем Host-устройству – передаем 8 КБайт данных. Протокол USB HID очень прост и представляет собой механизм для получения 64-байтных пакетов данных от Host-устройства и отправки 64-байтных пакетов данных к Host-устройству.
Шестая USB команда предназначена для реализации операции «живой» отладки по USB интерфейсу. В программе микроконтроллера имеется функция, которая позволяет отправить строку с отладочной информацией. Эта строка имеет фиксированную длину и хранится в кольцевом буфере. Отладочная информация передается Host-устройству при получении специальной команды отладки.
Как вы знаете, встроенная оперативная память микроконтроллера ограничена, поэтому мы можем обрабатывать одну команду в один момент времени, следовательно, отладочный механизм не подходит для слишком объемных отладочных сообщений. Но не смотря на это он предоставляет удобный способ считывания «живых» значений переменных и наблюдения за ходом выполнения программы.
Так как функции отладки занимают определенный объем оперативной памяти микроконтроллера, пользователю предоставляется возможность включения и выключения отладки во время компиляции проекта при помощи директивы «USB_DEBUG».
Демонстрационное ПО микроконтроллера
Демонстрационная программа микроконтроллера намного проще, она реализует выполнение двух USB команд и отладку. Первая команда предназначена для чтения текущего статуса кнопок, светодиодов и потенциометра, и передчи этой информации к Host-устройству. Вторая команда позволяет управлять состоянием светодиодов. Для кнопок и светодиодов программа опирается на готовые функции программного стека LUFA. Кроме того, имеется уже готовый код для считывания значений АЦП, к которому подключен потенциометр.
Хотя в базовую программу заложено намного больше возможностей, демонстрационная программа реализует часто применяющиеся на практике функции.
Приложение для ОС Windows
Программные приложения для компьютера разработаны на Си в среде Visual Studio 2010.
Базовое ПО для компьютера предоставляет пользователю Windows-интерфейс, с помощью которого можно вызвать все 5 доступных команд USB и отслеживать отладочную информацию, поступающую от микроконтроллера. Приложение также обеспечивает автоматическую обработку подключения и отключения устройства по USB. Когда пользователь выбирает тест, приложение отсылает шаблон данных по интерфейсу USB к микроконтроллеру и проверяет ответные данные от него.
Демонстрационное приложение позволяет пользователю взаимодействовать с аппаратной частью в режиме реального времени. Можно включать/выключать светодиоды, отслеживать состояние кнопок и наблюдать в графическом представлении положение потенциометра.
Демонстрационное видео
Загрузки
Файлы проектов (Visual Studio 2010, AVR Studio 5.0) – скачать
Часть 3 – USB Generic HID библиотека коммуникационных функций и ее использование