13.25.6.3.3 USB Reset

The USB sends a USB reset signal when the user writes a one to the USB Reset bit in CTRLB (CTRLB.BUSRESET). When the USB reset has been sent, the USB Reset Sent Interrupt bit in the INTFLAG (INTFLAG.RST) is set and all pipes will be disabled.

If the bus was previously in a suspended state (Start of Frame Generation Enable bit in CTRLB (CTRLB.SOFE) is zero) the USB will switch it to the Resume state, causing the bus to asynchronously set the Host Wakeup Interrupt flag (INTFLAG.WAKEUP). The CTRLB.SOFE bit will be set in order to generate SOFs immediately after the USB reset.

During USB reset the following registers are cleared:

  • All Host Pipe Configuration register (PCFG)
  • Host Frame Number register (FNUM)
  • Interval for the Bulk-Out/Ping transaction register (BINTERVAL)
  • Host Start-of-Frame Control register (HSOFC)
  • Pipe Interrupt Enable Clear/Set register (PINTENCLR/SET)
  • Pipe Interrupt Flag register (PINTFLAG)
  • Pipe Freeze bit in Pipe Status register (PSTATUS.FREEZE)

After the reset the user should check the Speed Status field in the Status register (STATUS.SPEED) to find out the current speed according to the capability of the peripheral.