Skip to content

Commit

Permalink
cardem: reset the uC in case of USB disconnect
Browse files Browse the repository at this point in the history
This fixes the firmware USB interface somehow getting stuck
after a USB disconnect/reconnect without power cycle.

Right now there are a number of things we only execute the first time we
reach USBD_STATE_CONFIGURED, but not at any subsequent such event.

It's also rather clear that this doesn't really show in simtrace2 as it
is bus-powered. And it doesn't show on OWHW as we don't have any USB
unplug situations of the USB between the on-board traces of USB host and
SAM3S.  So this really only is relevant to QMOD.

A cheap and dirty work-around is to simply reset the entire uC every
time a USB unplug happens.

Change-Id: I6678bb2192c1419ed388b46c4ae7aa1ce18dc7ee
Related: OS#5578
  • Loading branch information
laf0rge committed Jul 25, 2022
1 parent fdfb024 commit a5d5379
Showing 1 changed file with 4 additions and 0 deletions.
4 changes: 4 additions & 0 deletions firmware/apps/cardem/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,10 @@ extern int main(void)
if (isUsbConnected) {
isUsbConnected = 0;
}
/* HACK: we don't really deal with USB disconnect yet,
* so let's just reset the entire uC if this happens */
TRACE_INFO("Resetting uC on USB disconnect\n\r");
NVIC_SystemReset();
} else if (isUsbConnected == 0) {
TRACE_INFO("USB is now configured\n\r");

Expand Down

0 comments on commit a5d5379

Please sign in to comment.