USnooBie: дизайн, FAQ (ответы на часто задаваемые вопросы) |
![]() |
Добавил(а) microsin |
В этой статье обсуждаются некоторые вопросы, касающиеся проблем с использованием USnooBie. [Дизайн USnooBie] Все необходимые файлы проекта Вы можете скачать по ссылке [1]. Подробное руководство по сборке, тестированию и назначению деталей см. по ссылке [2]. [Изменение тактовой частоты] Если тактовая частота по умолчанию 12 МГц по какой-то причине не подходит для Вашего приложения, то можно просто поменять кварц 12 МГц на кварц с другой частотой. Имейте в виду, что для смены частоты кварца понадобится перепрошить бутлоадер новой версией, которая подходит под эту частоту (бутлоадер, скомпилированный для другой тактовой частоты, можно скачать по ссылке [1]. Помните, что для бутлоадера и для работы приложений на основе V-USB можно выбрать кварц только из определенного ряда частот (12 МГц, 12.8 МГц, 15 МГц, 16 МГц, 16.5 МГц, 18 МГц и 20 МГц). [Перепрограммирование микроконтроллера] Если Вам нужно перепрошить бутлоадер (например, при смене частоты кварца) или поменять фьюзы, то нужен внешний программатор [3]. Если программатора у Вас нет, то Вы можете использовать в качестве программатора USnooBie, см. [5]. [Использование внешнего источника питания] Если Вы не хотите питать USnooBie от компьютера, Вы можете снять перемычку, которая переключает питание 3.3V или 5V, и подключить внешний источник питания к цепям GND (минус) и V+ (плюс). Напряжение внешнего источника питания должно быть в диапазоне 3.3 .. 5 вольт. Другой способ подачи питания - подключение шнура USB в зарядное устройство, которое имеет гнездо USB. [Известные проблемы с USnooBie и их решение] Отсутствие бутлоадера. Если в памяти микроконтроллера нет бутлоадера, то просто возьмите пакет бутлоадера из [1], и самостоятельно прошейте бутлоадер в память микроконтроллера. Убедитесь, что Вы выбрали правильный файл прошивки, который подойдет к Вашему микроконтроллеру и частоте кварца, а также правильно установили фьюзы микроконтроллера. Обычно используется микроконтроллер ATmega328P на частоте 12 МГц, настроенный на использование 4-килобайтной секции бутлоадера соответствующими битами фьюзов. Проблемы с AVRDUDE в операционной системе Linux. Убедитесь, что у Вас имеются достаточные права для использования USB-устройств в Linux, иначе утилита программатора AVRDUDE может выдавать ошибку "error sending control message: Operation not permitted" (ошибка отправки управляющего сообщения: операция не разрешена). Один из способов решение проблемы - использование команды sudo. Другой способ - создание файла с именем "avrdude-usbasp.rules" в папке "/etc/udev/rules.d/", содержащего строку: SUBSYSTEM=="usb", SYSFS{idVendor}=="16c0", SYSFS{idProduct}=="05dc", GROUP="adm", MODE="0666" После создания этого файла нужно перезапустить демон udev командой "sudo restart udev". PORTD2 или PORTD7. Будьте внимательны с портами PD2 и PD7 - они задействованы на сигналы шины USB (см. принципиальную схему USnooBie). Если Вы задействуете эти порты, то это может повлиять на работу USB, и привести к неработоспособности бутлоадера. По поводу проблем, связанных с V-USB, попробуйте задать вопрос на форуме V-USB [6]. Не обращайте внимание на ошибку "avrdude: error: usbasp_transmit: usb_control_msg: sending control message failed, win error: A device attached to the system is not functioning.", это ожидаемое поведение бутлоадера. Так происходит всегда после того, как бутлоадер завершает работу и совершает передачу управления на приложение пользователя, без выдачи подтверждения на команду перехода, так как переход происходит сразу после получения команды. Команду подтвердить нельзя, так как размер кода бутлоадера ограничен из-за фиксированного размера секции бутлоадера. [USnooBie FAQ, часто задаваемые вопросы] Q001. Наверное, это не единственный проект с микроконтроллером AVR для работы с USB... Q002. Эта плата использует микроконтроллер ATmega328P, но это не тот микроконтроллер AVR, который используется в моем проекте (вставьте тут название проекта). Как мне выполнить мой проект на основе USnooBie? Q003. Имеются микроконтроллеры AVR со встроенным аппаратным интерфейсом USB, зачем мне вместо них использовать USnooBie? Библиотека V-USB работает почти со всеми микроконтроллерами AVR. Это одна из причин, по которой имеет смысл использовать USnooBie. Плата прототипирования - это просто поверхность для монтирования чипов, и она может оказаться дорогой. Мне кажется, большинство людей выберут компоненты со штыревыми выводами для своих самодельных DIY-проектов. Q004. Кажется, мне предстоит кое-чему научиться, чтобы я смог по-настоящему использовать USnooBie... USB очень сложен внутри, однако можно очень просто начать делать устройства USB, если использовать библиотеку V-USB, так как она скрывает всю сложность протокола USB внутри себя. Если Вы уже знаете, как компилировать проект AVR, то считайте, что половина пути уже пройдена. V-USB требует компиляции 2 файлов, подключения 1 файла заголовка, и также подключение 1 конфигурационного файла. Вам нужно только ознакомиться с этими файлами, с опциями конфигурации V-USB, и можно делать свои устройства USB (прим. переводчика: доступна русскоязычная версия V-USB, где переведены все комментарии в коде библиотеки. Таким образом, можно ознакомиться с кодом и опциями конфигурации V-USB на русском языке, см. [2]). Библиотека V-USB возьмет на себя всю грязную работу наподобие обработки энумерации по шине USB (чтобы компьютер мог распознать подключенное устройство USB), и Вам остается позаботься только об основном алгоритме программы микроконтроллера (firmware). Общей проблемой, с которой люди часто сталкиваются при использовании V-USB - их USB-устройство не распознается на компьютере, не проходит энумерацию (device not recognized error). Причина заключается в том, что есть много мест, где можно допустить ошибку - неправильно собранная схема, ошибка в конфигурации V-USB, неправильно выбранная частота кварца (например, она не соответствует настройкам проекта), неправильно делается инициализация V-USB (последовательный вызов некоторых функций и разрешение прерываний). Вместе с USnooBie Вы избавитесь от всех этих проблем, сможете выбрать любое напряжение питания 3.3 или 5 вольт, и Вы также можете использовать одну и ту же конфигурацию во всех проектах. Все это сделает разработку firmware для микроконтроллера простой и приятной работой. Q005: Почему не используете бутлоадер Arduino вместо USBaspLoader? Кроме того, так как поведение загрузчика Arduino состоит в том, чтобы ожидать некоторое время, чтобы проверить активность последовательного порта прежде, чем перейти к коду приложения, это приведет к раздражающим задержкам на двойную энумерацию. В то же время модифицированная версия USBaspLoader сделана так, что если кнопка BOOT для активации загрузчика на нажата при сбросе, то ненужная энумерация не произойдет. Q006: Почему используется частота кварца именно 12 МГц? Q007: Почему было принято решение использовать для сигналов USB порты PD2 и PD7? Q008: Можно ли мне все-таки как-нибудь использовать порты PD2 и PD7? Если Вы не делаете устройства USB, но коннектор USB остается подключенным к хосту USB, то PD2 будет притянут к земле (pull-down) на стороне хоста, а PD7 будет притянут к питанию (pull-up) через резистор 1.7 кОм. Если коннектор USB отключен, то PD7 остается подтянутым к питанию, а PD2 нет. Чтобы лучше разобраться в том, как устроена и работает аппаратная часть USB, см. схему USnooBie [1], а также ознакомьтесь с руководством [4]. [Ссылки] 1. USnooBie downloads: загрузка схемы, кода, библиотек, прошивок и утилит. |