Attiny85 не распознается при запуске Windows
Я использую Attiny85 для взаимодействия с компьютером через USB-подключение, и все работает нормально, за исключением случаев, когда я перезагружаю компьютер и Attiny85 подключен. Когда Windows завершает загрузку, Attiny85 не распознается, и в диспетчере устройств он отображается следующим образом:
Если я отключу Attiny85, а затем снова включу его, все будет работать нормально.
Есть ли что-нибудь, чтобы сделать его обнаруживаемым во время загрузки без необходимости постоянно отключать/подключать его?
ИЗМЕНИТЬ:
Подробнее:
Я использую эту плату
и libusb-win32 в качестве драйвера USB
@Gonçalo Cardoso, 👍0
Обсуждение1 ответ
У меня недостаточно репутации, чтобы оставить комментарий, поэтому я добавлю сюда свои 2 цента.
Должен быть более элегантный способ сделать это, но в качестве быстрого решения я бы рекомендовал две вещи:
Если это возможно, добавьте на плату кнопку для ручного сброса MCU при загрузке ПК.
Вы можете выполнить программный сброс после включения платы через определенное время (например, 10 секунд) с помощью сторожевого таймера.
Я не могу использовать идею с кнопкой, потому что плата будет внутри корпуса, и это будет непрактично. Идея со сторожевым таймером не работает, потому что плата всегда подключена, поэтому, когда компьютер выключен, я бы выполнял процедуру сброса каждые 10 секунд, и я не знаю, «понравится ли это»., @Gonçalo Cardoso
@GonçaloCardoso Что касается сторожевого таймера, вы можете использовать сторожевой таймер только один раз. Вы можете обрабатывать это в своем коде., @Macit
Но в какое время это будет?, @Gonçalo Cardoso
@GonçaloCardoso Время полностью зависит от вашего приложения. Чтобы выполнить программный сброс один раз, посмотрите эту [ссылку](http://www.atmel.com/webdoc/avrlibcreferencemanual/FAQ_1faq_softreset.html)., @Macit
Проблема в том, что мне нужно сделать перезагрузку при загрузке Windows, и мне не удалось найти способ, чтобы плата это обнаружила., @Gonçalo Cardoso
@GonçaloCardoso Когда компьютер выключен, на USB-порту не должно быть питания. После включения ПК ваша плата будет поставляться, и здесь вы запускаете таймер для сброса MCU. Время не должно быть слишком большим, потому что, если вы подключите плату во время работы ПК, плата начнет работать после того, как вы уже установили время. Как я сказал вам в своем ответе, это не идеальное решение, и я не знаю, сможете ли вы разместить кнопку на корпусе платы. В противном случае вам придется копаться в коде V-USB и надеяться, что вы найдете способ выполнить свою работу., @Macit
@GonçaloCardoso Кстати, у меня есть идея, которая должна сработать для вас. Попробуйте отключить параметры энергосбережения для USB-устройств, а затем перезагрузитесь и посмотрите, работает это или нет. Посмотрите на эту [ссылку](http://helpdeskgeek.com/windows-xp-tips/prevent-windows-from-powering-off-usb-device/)., @Macit
- Attiny85 ошибка загрузки
- Прерывание переполнения таймера AVR не работает
- Не удается записать на HID USB-устройство (Arduino, V-USB, HidSharp)
- Восстановить uint32_t из массива символов в RTC.set
- Последовательная связь Arduino и AVR через USB
- Используйте ATtiny85 для выполнения начальной настройки маршрутизатора Cisco с использованием его консольного порта USB.
- Альтернативная полноскоростная USB-библиотека для ATTINY85?
- более низкая тактовая частота, чем ожидалось на attiny202
ATTiny на самом деле не работает с USB. Заставить его взаимодействовать с USB-портом, используя что-то вроде V-USB, в лучшем случае хак. Вы не должны ожидать, что он будет работать должным образом во всех отношениях., @Tom Carpenter
Вы можете использовать осциллограф и/или анализатор USB-протокола, чтобы выяснить, что именно V-USB делает неправильно, но в любом случае такая хакерская программная эмуляция не может быть исправлена. Лучше использовать микроконтроллер, который действительно поддерживает USB (например, Teensy)., @CL.
Добавлено больше деталей (плата и USB-драйвер), чтобы помочь в анализе проблемы., @Gonçalo Cardoso