- •Содержание
- •1 Выбор и обоснование технических требований к устройству
- •2 Структурная схема устройства
- •3 Принципиальная схема устройства
- •4 Разработка алгоритма работы управляющей программы для микроконтроллера
- •5 Функции и переменные основной программы для микроконтроллера
- •6 Листинг основной программы для микроконтроллера
- •7 Разработка алгоритма работы управляющей программы для компьютера
- •8 Функции и переменные основной программы для компьютера
- •9 Листинг основной программы для компьютера
- •Заключение
- •Список используемых источников
- •Ведомость курсовой работы
Содержание
ВЕДЕНИЕ 3
1 ВЫБОР И ОБОСНОВАНИЕ ТЕХНИЧЕСКИХ ТРЕБОВАНИЙ К УСТРОЙСТВУ 4
2 СТРУКТУРНАЯ СХЕМА УСТРОЙСТВА 8
3 ПРИНЦИПИАЛЬНАЯ СХЕМА УСТРОЙСТВА 9
4 РАЗРАБОТКА АЛГОРИТМА РАБОТЫ УПРАВЛЯЮЩЕЙ ПРОГРАММЫ ДЛЯ МИКРОКОНТРОЛЛЕРА 11
5 ФУНКЦИИ И ПЕРЕМЕННЫЕ ОСНОВНОЙ ПРОГРАММЫ ДЛЯ МИКРОКОНТРОЛЛЕРА 12
6 ЛИСТИНГ ОСНОВНОЙ ПРОГРАММЫ ДЛЯ МИКРОКОНТРОЛЛЕРА 13
7 РАЗРАБОТКА АЛГОРИТМА РАБОТЫ УПРАВЛЯЮЩЕЙ ПРОГРАММЫ ДЛЯ КОМПЬЮТЕРА 17
8 ФУНКЦИИ И ПЕРЕМЕННЫЕ ОСНОВНОЙ ПРОГРАММЫ ДЛЯ КОМПЬЮТЕРА 23
9 ЛИСТИНГ ОСНОВНОЙ ПРОГРАММЫ ДЛЯ КОМПЬЮТЕРА 24
ЗАКЛЮЧЕНИЕ 27
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ 28
ВЕДОМОСТЬ КУРСОВОЙ РАБОТЫ 29
Ведомость курсовой работы 29
ВЕДЕНИЕ
В настоящее время микропроцессоры и микроконтроллеры применяются в радиоэлектронике как универсальная элементная база, позволяющая быстро надежно и экономично реализовывать функции преобразования информации, ее хранения и передачи, цифровой обработки и формирование сигналов, управления техническими объектами, человеко-машинных интерфейсов и многое другое. Для современного инженера по радиоэлектронике знания микропроцессорной техники и умение решать на ее базе технические задачи является обязательным условием его успешной работы в избранном направлении.
В этой курсовой работе программное обеспечение микроконтроллера разрабатывалось в среде Atmel Studio 6.2 на языке С. Atmel Studio - многофункциональное и удобная среда разработки программного обеспечения. Высокоуровневый язык С прост в использовании и позволяет сократить объем кода относительно языка Assembler, что и послужило причиной выбора этого языка. Для создания программы для ПК использовал Builder 6.0 - интегрируемая среда разработки, используемая для разработки программного обеспечения на языке программирования C++. Данная среда разработки была выбранная из-за имеющегося опыта работы в ней и простоты использования.
Для реализации устройства класса USB HID (human interface device) - класс устройств USB для взаимодействия с человеком, взят микроконтроллер ATmega8-PU.
Данное устройство состоит из платы с компонентами и микроконтроллером и подключенного к плате USB-шнура. Для начала работы нужно подключить плату к компьютеру и запустить на нем нужную программу. Затем ждем, пока компьютер инициализирует устройство и появится надпись «Подключено».
1 Выбор и обоснование технических требований к устройству
Ранее широко распространенные интерфейсы как COM, LPT, MIDI в настоящее время морально устарели, но ещё нередко присутствует на современных компьютерах и используется в промышленном и узкоспециализированном оборудовании. Так что для связи какого-либо собственного устройства с компьютером пора осваивать что-то другое. Как вариант можно использовать всякие конверторы/переходники/эмуляторы, но они не всегда работают как оригинальный интерфейс, порождая массу проблем. Для решения этой задачи возьмём обычный микроконтроллер без аппаратной поддержки USB и программно эмулируем интерфейс USB. Тут возникает проблема в производительности нашего микроконтроллера. Скорость USB очень большая: LowSpeed – 1.5Mbit/s, FullSpeed – 12Mbit/s, HighSpeed – 480Mbit/s. Современная версия USB 3.0 поддерживает пропускную способность до 5Гбит\с. Поэтому получится только LowSpeed USB, и то с некоторыми трудностями [1].
V-USB – название программной библиотеки, позволяющей получить поддержку протокола USB на микроконтроллерах AVR (семейств Classic, Tiny и Mega компании Atmel), которые не имеют аппаратной поддержки USB. Авторство библиотеки принадлежит компании Objective Development, которая распространяет и продвигает V-USB по лицензии GNU GPL и коммерческой лицензии (исходные коды библиотеки свободно доступны, см. ссылки).
Старое название библиотеки было AVR-USB, но после того как библиотека обрела популярность, название пришлось сменить, чтобы не вступать в конфликт с существующими именами Atmel. Протокол USB реализован программно, и быстродействия ядра AVR хватает только на реализацию стандарта USB 1.1 на низкой скорости (low-speed). По этой причине библиотека V-USB хорошо подходит только для низкоскоростных устройств ввода-вывода (например USB HID). Поскольку требования к быстродействию при обработке сигналов USB (D+ и D-), очень жесткие, то низкоуровневый код написан на ассемблере, и поддерживается только определенный ряд тактовых частот ядра. Сначала тактовая частота была только 12 МГц, но потом стало возможно использовать кварцевые резонаторы на 12, 15, 16, 16.5 и 20 МГц. Микроконтроллеры, которые имеют PLL(ФАПЧ, фазовую автоподстройку частоты) для генерации тактовой частоты, могут использовать внутренний RC-генератор (то есть работать без кварца), при условии калибровки частоты RC-генератора по сигналу SOF (Start Of Frame) протокола USB. Высокоуровневые процедуры и функции библиотеки написаны на языке C. Требования к микроконтроллеру AVR невысоки – необходимо как минимум 2 кбайта памяти программ (flash) и 128 байт ОЗУ (RAM). Из аппаратных ресурсов используется только прерывание по изменению сигнала на выводе (обычно INT0, подсоединенный к сигналу D+ шины USB). Таким системным требованиям удовлетворяют большинство микроконтроллеров семейства AVR.
Благодаря тому, что вместе с библиотекой поставляются хорошие примеры firmware(прошивок) для USB-устройств (пользовательский класс USB, класс USB HID, мышь USB, управление портами микроконтроллера, чтение и запись его EEPROM), появилось много полезных разработок, использующих библиотеку V-USB – USB-программаторы, устройства ввода и вывода, макетные платы, преобразователи интерфейсов (например, USB-RS232) и многое другое [2]. Вместе с библиотекой поставляются также примеры программ для компьютера (ПО хоста), которые работают с устройствами на библиотеке V-USB. Примеры ПО хоста используют другую свободную библиотеку – libusb.
Таким образом, библиотека V-USB позволяет непрофессионалам в программировании интерфейса USB быстро начать создавать USB-устройства и писать для них компьютерные программы. Кроме того, отсутствуют затраты на используемое в разработке программное обеспечение – оно доступно по лицензии GNU. Код комментариев библиотеки и примеров firmware и ПО хоста переведены на русский язык [3],[4].
ATmega8 – маломощный 8-разрядный КМОП микроконтроллер, основанный на AVR RISC-архитектуре. За счет выполнения большинства инструкций за один машинный цикл ATmega8 достигает производительности 1 миллион операций в секунду/ МГц, что позволяет проектировщикам систем оптимизировать соотношение энергопотребления и быстродействия. В таблице 1 представлены основные параметры контроллера.
Таблица 1 – Основные параметры контроллера
ЦПУ: Ядро |
AVR |
ЦПУ: MIPS |
16 |
ЦПУ: F,МГц |
от 0 до 16 |
Память: Flash,КБайт |
8 |
Память: RAM,КБайт |
1 |
Память: EEPROM,КБайт |
0.5 |
Продолжение таблицы 1
I/O (макс.),шт. |
23 |
Таймеры: 8-бит,шт |
2 |
Таймеры: 16-бит,шт |
1 |
Таймеры: Каналов ШИМ,шт |
3 |
Таймеры: RTC |
Да |
Интерфейсы: UART,шт |
1 |
Интерфейсы: SPI,шт |
1 |
Интерфейсы: I2C,шт |
1 |
Аналоговые входы: Разрядов АЦП,бит |
10 |
Аналоговые входы: Каналов АЦП,шт |
6 |
Аналоговые входы: Быстродействие АЦП, kSPS |
15 |
Аналоговые входы: Аналоговый компаратор, шт |
2 |
VCC,В |
от 4.5 до 5.5 |
ICC,мА |
23 |
TA,°C |
от -40 до 85 |
Корпус |
DIP-28 MLF-32 TQFP-32 |
Микросхемы с индексом -PU выполнены по бессвинцовой технологии (Pb free) и пришли на смену аналогичным микросхемам -PI.
Разработка программы для управление светодиодом проводилась в компилятор C++ Builder 6.0. C++ Builder — программный продукт, инструмент быстрой разработки приложений (RAD), интегрированная среда программирования (IDE), система, используемая программистами для разработки программного обеспечения на языке программирования C++.
\