Pull to refresh

Comments 20

Для бо́льшей стабильности микроконтроллер лучше запитать через LDO стабилизатор на 3.3v, резисторы R1, R2 увеличить до 150-220 Om, R4 — не нужен.
Микроконтроллер лучше взять из серии 48/88/168/328, в отличии от Atmega8/16/32, при питании от 3.3v они гарантируют стабильную работу при 12MHz.
ну ведь не знаете же, а учите еще — нормальная схема для макета вполне — что по вашему стабильность контроллера? как он нестабильно работает? по даташиту ему 3.6В требуется, с учетом того, что частота довольно высокая 3.6-3.8 вполне нормально. Чем вам резисторы не угодили R1 R2? R4 нужен — по резисторам этим хост устройство определяет что к нему подключено — какой скорости устройство, болтающаяся в воздухе нога входа — отличный совет просто. А этот не гарантирует контроллер стабильной работы? Это все тут несущественно. Человек показал софтовую часть
что по вашему стабильность контроллера?

Не стабильность контроллера, а стабильность определения устройства компьютером. Говорю не безосновательно, специально экспериментировал.
по даташиту ему 3.6В требуется, с учетом того, что частота довольно высокая 3.6-3.8 вполне нормально.

Я не зря написал про серию 48/88/168/328, работа данных микроконтроллеров гарантируется на частоте 12MHz при напряжении всего 3.3v. Серия 8/16/32 на практике работает, но, по даташиту, при 12MHz требует больше, чем 3.3v.
Чем вам резисторы не угодили R1 R2?

Личные наблюдения. При увеличении номинала данных резисторов устройство успешно определяется на бо́льшем количестве компьютеров.
R4 нужен — по резисторам этим хост устройство определяет что к нему подключено

Хост определяет скорость (low-speed) по подтяжке резистором R3 линии D-. На линии D+ не будет неопределенных состояний, R4 тут без надобности.
Это все тут несущественно. Человек показал софтовую часть

Софтовая часть, в данном случае, бесполезна без аппаратной, и чтобы снизить вероятность траблов в процессе экспериментов, я поделился своими наблюдениями.
Наверно R4 нужен для возможных статических разрядов на D+ при подключении устройства, не?
Вы правы, статья совсем не о схемотехнике, не о питающем напряжении и частоте кварца, и автора за это не в чем упрекнуть. Если бы к схеме предъявлялись какие-то специальные требования в плане надежности и стабильности работы — тогда конечно, к выбору микроконтроллера, напряжению питания и рабочей частоте нужно уделять особое внимание. Кстати говоря, в макетной плате AVR-USB-MEGA16 микроконтроллер питается от 5V, и уровни сигналов USB создаются с использованием стабилитронов.
Упор в статье сделан как правильно заметил «SlavikMIPT» и «Derailed» на софтовую часть, что касаемо схемы то она разработана не мной, а (взята из пакета разработчика V-USB [1]) в качестве примера подключения контроллера по USB. Я сам новичок в этом деле как в C# так и в Atmel Studio 6 и микроконтроллерах. Для моей лично необходимости мне понадобилось соединить ПК с МК через USB, на тот момент был немного уже знаком с C# и Atmel Studio 6, но найти в интернете как это можно сделать с помощью C# и Atmel Studio 6 я так и не смог, не знаю почему, то ли я гуглить не умею то ли народ не хочет делиться своим опытом и знаниями.Я больше месяца потратил на то что бы это сделать ввиду моего малого опыта. И вот теперь всё получилось и теперь решил выложить, что бы такие как, я новички, не мучились долго.
Скорей дело было в отсутствии необходимости в соединении такой экзотики. Слишком уж разношерстный состав требуемого софта, и слишком нестандартные настройки нужны чтобы это все дело повторить. Почему к примеру WinAVR и 6-я студия? Неужели нельзя было обойтись исключительно AvrStudio с её штатным компилятором? Если уж на то пошло, то студия тут вовсе и не нужна, скомпилировать исходник можно было и без неё при наличии компилятора. Студия нужна только когда начнешь изменять исходник и отлаживать его, а делать это с таким проектом нереалистично — остается только одна функция студии — это интерпретация ошибок выдаваемых компилятором и установка курсора в место ошибки. Тяжеловат, однако, софт для такой функции.
Просто изучения микроконтроллеров я начинал именно Atmel Studio 6, и поэтому как раз таки Atmel Studio 6 мне и нужна для развития моего дальнейшего проекта на основе того что уже сделано, поэтому я и замарочился именно с ней. Пробовал я со штатным компилятор AS6, при компиляции выдаёт ошибки, после их исправления проект компилируется, но после, заливаем прошивку в контроллер и он постоянно подключается и тут же отключается, моих познаний не хватает понять почему это так и это исправить мне так и не удалось.Если у кого это подучится просьба рассказать как если не сложно.
Пожалуй, для поиграться только и пойдет. У меня большие сомнения насчет стабильной работы V-USB да и конкретного контроллера в этом качестве, ничего серьезней помигать диодом он уже не потянет. Да и разобраться новичку в коде V-USB никак не проще чем начать с честных контроллеров с аппаратной поддержкой USB.
V-USB когда-то создавался из-за дороговизны и редкости контроллера с аппаратным USB и как альтернатива для простых «игрушек», и ИМХО должен быть забыт — потому как нехорошая это тенденция тащить костыли в массы.
Ничего принципиально бы не изменилось, если для этой статьи взять контроллер с аппаратным USB — ведь смысл как я понял именно в драйвере и программе его использующей под x64 виндовс, это то ради чего и писалась статья.
И потом, один светодиод все умеют зажигать, отличным примером было бы произвольно зажигать 8 светодиодов или вовсе 64.
Сделан простейший пример как поморгать лампочкой для простейшего понимания новичкам, если вы профи то это не для Вас. И почему такая уверенность, что только для поиграться и поморгать одной лампочкой?.. Вот ссылка, на готовые проекты, посерьёзнее чем просто поиграться, с помощью библиотеки V-USB www.obdev.at/products/vusb/prjobdev.html. А насчёт контроллеров с аппаратной поддержкой не спорю что они лучше, но однако также народ не сильно делиться готовыми примера проектов. На youtube полно видео как люди мастерят USB устройства на контроллерах со встроенным интерфейсом, но там лишь демонстрация своего проекта типа какой я «умный». А выложить исходники и объяснить как и что ты сделал по шагам никто не хочет все жмутся и мне как новичку в этом деле это очень сложно. Если у вас есть готовый проект на контроллере с USB интерфейсом и с описанием как и что делать по шагам, пожалуйста поделитесь! Буду очень признателен я и многие другие начинающие.
Так ведь ютуб не для выкладывания исходников, поэтому естественно их там нет.
Учится по исходникам чужих проектов сомнительного качества — удовольствие ниже среднего, кроме того это способствует перетаскиванию ошибок из проекта в проект.

Ваш пример компиляции V-USB тому пример — если она построена на особенностях конкретного компилятора, то так и будет. По-хорошему, нужно было выяснить причину возникновения ошибок а не исправлять их не понимая ничего а для этого нужно перечитать всю библиотеку вручную и сверится с документацией по протоколу USB что все задано так как нужно. С точки зрения компилятора программа теперь не содержит ошибок, но с точки зрения программы вероятно теперь написана полная чушь(помните высказывание, что не всякая программа что скомпилировалась является рабочей?). Возможно, какие-то константы теперь приравнены нулю, какие-то макросы срабатывают не так как нужно и т.д.
Порой проще переписать с нуля, чем исправлять такой трупик.

Это вот хорошая идея, взять книжку по USB в другую руку — даташит на контроллер и начать решать проблему, но у меня постоянно не хватает времени.
Вот кстати по 4-й ссылке на гугле нашел библиотеку под USB для AVR.
я не говорю про переписывание чужих проектов, просто когда делаешь проект сам, а ещё и если ты только осваиваешь эти дебри, то иногда попадаешь в тупик и топчешься, топчешься, на месте и спросить то особо не у кого, а когда есть готовый пример то можно хотя в нём подсмотреть как реализован тот или иной протокол вот в чём смысл. А по про библиотеку LUFA я уже читал и кстати следующим моим шагом будет её изучение.
«Пожалуй...» «у меня большие сомнения...» Уважаемый Alexeyslav, если Вы не разбираетесь в том, о чем пишете, то это еще не повод троллить беднягу автора статьи. Мне за Вас стыдно. Лучше займитесь чем-нибудь полезным.
Скажите, а вам не попадалось решение, позволяющее микроконтроллеру быть одновременно клавиатурой стандартной и вот таким вот кастомным HID устройством, которое принимает данные, скажем, подсвечивая активные кнопки, а при нажатии генерируется стандартная посылка hid клавиатуры..?
В рамках одного канала это разве что расширить набор команд которые принимает клавиатура или мастерить программный хаб и подключать к нему два виртуальных девайса.
Просто в USB-дескрипторе описываются два устройства, примеров даэе в магазине полно, например клавиатуры с трэкболами.
00h Device Unspecified[34] Device class is unspecified, interface descriptors are used to determine needed drivers

Много времени прошло, но всё же попробую задать вопрос: А без драйвера и на Delphi можно получить доступ к самодельному HID-устройству? Интересует посылка нескольких байт на него и получение ответа.

Без драйвера ничего не работает в принципе. Но, можно использовать один из классов HID для которых драйвер уже изначально есть в виндовс. Так бесперебойники подключаются.

Понятно, я и имел в виду встроенный драйвер. Но у меня вопрос скорее практический, нежели теоретический. В теории я знаю - как, на практике на Delphi не получается.

Sign up to leave a comment.

Articles