For reasons that are complicated, I need to be able to perform a USB reset on the device I'm developing triggered by firmware events. (I'm working around a problem with host sotware - this is not a permanent fix, but will be needed to unblock some additional development over the next 3-4 months.) The device has an nrf52840 and is currently using Zephyr 3.0; My initial thought was simply to call `usb_dc_reset()` to do it - and this DOES work (in that it causes the reset to happen), but then immediately thereafter I get a hard fault:
```
[00:00:04.446,411] <err> os: ***** USAGE FAULT *****
[00:00:04.446,411] <err> os: Illegal use of the EPSR
[00:00:04.446,441] <err> os: r0/a1: 0x00000000 r1/a2: 0x00000000 r2/a3: 0x2000e798
[00:00:04.446,472] <err> os: r3/a4: 0x00000000 r12/ip: 0x20009948 r14/lr: 0x00033c63
[00:00:04.446,472] <err> os: xpsr: 0x60000000
[00:00:04.446,472] <err> os: Faulting instruction address (r15/pc): 0x00000000
[00:00:04.446,502] <err> os: >>> ZEPHYR FATAL ERROR 0: CPU exception on CPU 0
[00:00:04.446,533] <err> os: Current thread: 0x20009968 (unknown)
[00:00:04.553,955] <err> os: Halting system
```
Admittedly, I'm being pretty naive here, and just calling `usb_dc_reset()` from within the main execution thread. What is the recommended way to achieve this? Admittedly, I'm no USB guru, but it seems like it should be straightforward...