0

I'm using an Attiny85 to interact with a computer using an USB connection, and everything works fine except when I restart my computer and the Attiny85 is connected. When Windows end to boot up the Attiny85 isnt't recognized, and on Device Manager it's listed like this:

Unknown USB Device (Device Descriptor Request Failed)

If I unplug the Attiny85 and then plug it back in, everything works just fine.

Is there any to make it detectable at boot time without having to always unplug/plug it?

EDIT:

More details:

I'm using this board ATtiny85 USB Mini Dev Board

and libusb-win32 as the USB driver

  • 1
    The ATTiny doesn't really do USB. Making it interface with a USB port using something like V-USB is a hack at best. You shouldn't expect it to work properly in all respects. – Tom Carpenter May 6 '17 at 10:49
  • You could use an oscilloscope and/or a USB protocol analyzer to find out what exactly V-USB does wrong, but in any case such a hacky software emulation cannot be fixed. Better use a microcontroller that actually supports USB (e.g., a Teensy). – CL. May 6 '17 at 10:54
  • Added more details (board and USB driver) to help in problem analyis – Gonçalo Cardoso May 6 '17 at 11:53
1

I don't have enough reputations to make a comment so I will drop my 2 cents here.

There should be more elegant way to do this but as a fast solution I would recommend two things:

  1. If it is possible, add a push button to your board to reset the MCU manually when the PC is booted up.

  2. You can make a software reset after powering up the board by a certain time (e.g. 10 sec) by using watchdog timer.

  • I can't use the button idea because the board will be inside a case, and it wouldn't be practical. The idea about the watchdog timer won't work because the board is always connected, so when the PC is off I would be executing the reset procedure at every 10 seconds, and I don't know if it would "like it". – Gonçalo Cardoso May 7 '17 at 17:43
  • @GonçaloCardoso Regarding watchdog timer, you can use watchdog timer just one time. You can handle this in your code. – Macit May 7 '17 at 18:10
  • But at what time would that be? – Gonçalo Cardoso May 7 '17 at 18:20
  • @GonçaloCardoso The time completely depends on your application. To perform a software reset one time look at this link. – Macit May 7 '17 at 18:42
  • The problem is that I need to make the restart when Windows boots up, and I haven't managed to find a way for the board to detect it. – Gonçalo Cardoso May 7 '17 at 19:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.